With a single step

~千里の道も一歩からと信じたいノート~

今日の反省

①帳票項目の取り込み時は帳票に表示しない項目の項目種別に気をつける。
帳票項目
・レコード毎にカラムの値が変化する場合
帳票明細項目
・レコード毎にカラムの値が変化しない場合

iReport レイアウト作成メモ

①登録用jrxmlを適当に用意する
②昇順でA、AAを並べ替えれるようにする。
www.helpforest.com
③フル桁データ作成用ツールの作成
→帳票定義、フル桁データ、参照データ(フル桁作成用)でシートを分割すること

f:id:who_is_unfair:20180512091405j:plain

<セル内の関数>
=IF(A2="テキスト",SUBSTITUTE( IF(B2=1,"","S") & MID($F$1, 2, IF(B2-2 < 0,0,B2-2)) & "E","0","T"),IF(A2="日付",LEFT($F$2,B2),LEFT($F$1,B2)))

④フル桁データ作成時の注意点
・通貨はマイナスを付与したデータを作成する
・明細以外に条件付き書式
・種別がテキスト以外に条件付き書式
・表示形式に気をつけてデータを作成する
例:桁数は半角6桁たが、表示形式は(9999)
・フル桁データは3ページ以上になるようにデータを用意すること。
・フル桁データは3ページ目で収まるのデータ数を用意すること。
→ヘッダやフッタだけ4ページ目にいってしまう場合がある。
④その他のデータ作成用ツール(預かりデータetc)
⑤condition style が業務に使えるか試してみる
⑥どんなデータを預かっても対応できる関数・パラメータ・スタイルコレクションを作成(通貨、日付、郵便番号etc)
【ポイント】
・意図しないデータでもエラーで処理落ちしないこと
・意図しないデータでもそのまま表示すること
・関数、パラメータに関してはどういった時に対応できるかの対応表と組合せ表を作成し、帳票ごとに取捨選択しやいように考慮して作成する。
・どんなデータならどのように表示されるか例を示して、サポートに分かりやすいように説明する。説明できる関数を作成する
⑦【取り込み時の注意】
・帳票に表示しない項目の項目種別

【テスト観点】
【データ】
・お客様データを用意しているか
・必須のデータを用意しているか
・フル桁のデータを用意しているか
・表示形式に合わせた桁数になっているか
【レイアウト】
・Data Source Emptyの場合にnullが表示されていないか
・必須のみの場合、必須以外の項目が表示されていないか
・表示する桁数は正しいか
・表示形式は正しいか
・1ページ目と2ページ目の明細部の罫線の位置は一致しているか
・指示書のサンプル画像と一致しているか(罫線などデザイン的な側面で確認する)
・画像の挿入位置は正しいか(印影、ロゴなど)
・改ページ位置は丁度良いか
・文字切れはないか
・改行されないようにパディングやマージンで制御しているか
(改行は基本的に禁止。変な位置で改行されるため)
→対応方法についてはKさんの作成物を確認する
・印刷は試したか
・指定のフォントは正しいか
・フォントは統一されているか
・フォントサイズは適切か
・ページ番号は全ページに表示されているか
・通貨の表示形式は指定のものになっているか
・通貨、数値はマイナスを考慮した表示形式になっているか。
・通貨、数値にカンマはついているか
・文字アライメント(右寄せ、左寄せ、上寄せ、下寄せ)は正しいか
・Groovyになっていないか
・jrxml内の帳票名は正しいか(過去の作成物をコピーしていると修正し忘れたりする)
・フレームでエリア分けを行っているか
・明細なしのページが発生していないか。
→許容される場合もある。
→例:ラストページフッタのヘイトがページフッタのヘイトより大きい場合に、明細の数がページ内ギリギリでラストページフッタのヘイトを残せないときに発生する場合。
【参考】
http://labs.opentone.co.jp/wp-content/uploads/2010/02/8a7a1b428edc1ed170f8556838542f41.pdf

codezine.jp
画像の左側だけ参考にして作成する
f:id:who_is_unfair:20180606201237j:plain

Eclipse カラーテーマの設定

Eclipseのカラーテーマ設定方法の備忘録(*^^*)


futurismo.biz

Rainbow Dropsxmlが見つからなかったため、以下を参考にしてファイルを作成する。

github.com

↓作成したファイル↓
https://drive.google.com/open?id=0By8ZL98FTmlONmg5WHRXbVFMYUE

↓フォント↓
Introducing Source Han Code JP

更新可能なネストした繰り返し

今日は「更新可能なネストした繰り返し」を学ぶ。
例のごとく、SAStruts本家のサイトは当てにしないφ(・ω・ )

ソース

index.jsp
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Tutorial: Nested Foreach Update</title>
<link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
</head>
<body>

  <h1>Tutorial: Nested Foreach Update</h1>

  <html:errors />
  <s:form>
    <table border="1">
      <c:forEach var="mapItems" varStatus="s" items="${mapItemsItems}">
        <tr>
          <c:forEach var="m" varStatus="s2" items="${mapItems}">
            <td><input type="text"
              name="mapItemsItems[${s.index}][${s2.index}].id"
              value="${f:h(m.id)}" /></td>
            <td><input type="text"
              name="mapItemsItems[${s.index}][${s2.index}].name"
              value="${f:h(m.name)}" /></td>
          </c:forEach>
        </tr>
      </c:forEach>
    </table>
    <br />
    <input type="submit" name="submit" value="サブミット" />
  </s:form>
</body>
</html>
NestedForeachUpdateAction.java
package tutorial.action;

import javax.annotation.Resource;

import org.seasar.struts.annotation.ActionForm;
import org.seasar.struts.annotation.Execute;

import tutorial.form.NestedForeachUpdateForm;

public class NestedForeachUpdateAction {

  @ActionForm
  @Resource
  protected NestedForeachUpdateForm nestedForeachUpdateForm;

  @Execute(validator = false)
  public String index() {
    nestedForeachUpdateForm.initialize();
    return "index.jsp";
  }

  @Execute(validator = false)
  public String submit() {
    return "index.jsp";
  }
}
NestedForeachUpdateForm.java
package tutorial.form;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class NestedForeachUpdateForm {

  public List<List<Map<String, Object>>> mapItemsItems = new ArrayList<List<Map<String, Object>>>();

  public void initialize() {
    for (int i = 0; i < 10; i++) {
      List<Map<String, Object>> mapItems = new ArrayList<Map<String, Object>>();
      for (int j = 0; j < 2; j++) {
        Map<String, Object> m = new HashMap<String, Object>();
        m.put("id", i * 10 + j);
        m.put("name", "name" + i + j);
        mapItems.add(m);
      }
      mapItemsItems.add(mapItems);
    }
  }
}

ポイント



更新可能な繰り返し

今日は「更新可能な繰り返し」を学ぶ。
例のごとく、SAStruts本家のサイトは当てにしないφ(・ω・ )

ソース

index.jsp
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Tutorial: Foreach Update</title>
<link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
</head>
<body>

  <h1>Tutorial: Foreach Update</h1>
  <html:errors />
  <s:form>
    <table border="1">
      <c:forEach var="mapItems" items="${mapItems}">
        <tr>
          <td><html:text name="mapItems" property="id" indexed="true" /></td>
          <td><html:text name="mapItems" property="name" indexed="true" /></td>
        </tr>
      </c:forEach>
    </table>
    <br />
    <input type="submit" name="submit" value="サブミット" />
  </s:form>
</body>
</html>
ForeachUpdateAction.java
package tutorial.action;

import javax.annotation.Resource;

import org.seasar.struts.annotation.ActionForm;
import org.seasar.struts.annotation.Execute;

import tutorial.form.ForeachUpdateForm;

public class ForeachUpdateAction {

  @ActionForm
  @Resource
  protected ForeachUpdateForm foreachUpdateForm;

  @Execute(validator = false)
  public String index() {
    foreachUpdateForm.initialize();
    return "index.jsp";
  }

  @Execute(validator = false)
  public String submit() {
    return "index.jsp";
  }
}
ForeachUpdateForm.java
package tutorial.form;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ForeachUpdateForm {

  public List<Map<String, Object>> mapItems = new ArrayList<Map<String, Object>>();

  public void initialize() {
    for (int i = 0; i < 10; i++) {
      Map<String, Object> m = new HashMap<String, Object>();
      m.put("id", i);
      m.put("name", "name" + i);
      mapItems.add(m);
    }
  }
}

ポイント