report
クラス Transformer

java.lang.Object
  上位を拡張 report.Transformer

public class Transformer
extends java.lang.Object

レイアウトに編集データ・セットを適用してテキスト編集を行う。
パッケージ・ユーザはレイアウト構築時に FieldFormatter インタフェースを実装したクラスのインスタンスを指定する事で、編集フィールドそれぞれの置換文字列をユーザが定義したフォーマッタ (FieldFormatter#format()) で編集することができる。
パッケージ・ユーザはレイアウト構築時に RecordBuilder インタフェースを実装したクラスのインスタンスを指定する事で、レコードのすべてのフィールドが編集された結果をユーザが定義した手順 (RecordBuilder#concatField()) で編集結果出力行に構成することができる。


フィールドの概要
private  Transformer ancestor
          親トランスファ (ルート・トランスファであれば null、ヘッダ/フッタ・レイアウトであればルート・トランスファ)
private  DataDictionary dataDict
          編集データ・セットから読み込んだ内容を保持する辞書構造
private  DataSetReader dataSetReader
          編集データ・セットから編集データを順次読み出すデータ・リーダー。
private  Layout rootLayout
          トランスファが参照するレイアウト
 
コンストラクタの概要
Transformer(Layout layout)
          参照するレイアウトを指定してトランスファのコンストラクタ。
Transformer(Layout layout, Transformer ancestor)
          参照するレイアウトと親トランスファを指定してトランスファのコンストラクタ。
 
メソッドの概要
(package private)  PageSet addLines(PageSet pageSet, java.util.List<Line> lines)
          最後のページに行のリストを追加する。
private  PageSet checkPageOverFlow(PageSet pageSet)
          テキスト編集結果を保持しているページ・セットのページ総数が、レイアウトで指定されいる最大ページ数を超えていれば例外を発生する。
private  java.util.List<Line> concatField(java.util.List<Line> lines, java.util.List<Line> values, Field field)
          パッケージが編集済みの置換文字列の各行をレコードの編集結果に構成するデフォルトの手順。
private  java.util.List<Line> concatFields(java.util.List<FormattedField> fmtFlds)
          レコードの編集済みのすべてのフィールドの編集結果で、レコード編集結果の各行のリストを構成する。
private  java.util.List<Line> createLines(Record record, PageSet pageSet)
          レコードを編集して、編集結果の各行のリストを生成する。
(package private)  PageSet feedLine(PageSet pageSet)
          最後のページに空行を追加する。
(package private)  PageSet feedPage(PageSet pageSet)
          最後のページで改ページ制御を行う。
private  void fixPage(Page page)
          テキスト編集結果を保持するページに、必要であればヘッダ/フッタの編集結果を結合して、テキスト編集結果ページを確定する。
private  PageSet fixPages(PageSet pageSet)
          テキスト編集結果を保持するページ・セットのすべてのページの編集結果を確定する。
private  java.lang.String flatten(PageSet pageSet)
          テキスト編集結果のページ・セットの内容を確定して、すべてのページの行の内容を結合したテキストを求める。
private  int getBlockIterationCnt()
          ブロックの繰り返し数を編集データから求める。
private  Data getCurrentData()
          編集データ・セットから最後に読み出したデータのゲッタ。
(package private)  DataDictionary getDataDictionary()
          ルート・トランスファが保持する編集データ辞書構造のゲッタ。
(package private)  int getMaxCntLines()
          ヘッダとフッタを除いた出力できる最大行数か、ヘッダ/フッタに出力できる行数を求める。
private  Data getNextData()
          編集データ・セットから次の編集データを読み出す。
(package private)  Layout getRootLayout()
          トランスファが参照するレイアウトのゲッタ。
(package private)  Transformer getRootTransformer()
          ルート・トランスファを探索する。
(package private)  java.lang.String incremantCurrentPageNum()
          現在のページ番号をインクリメントする。
private  void initDataDict()
          編集データ・セットから読み込んだ内容を保持する辞書構造を設定する。
private  void initDataSetReader(DataSet dataSet)
          編集データ・セットのデータ・リーダーを設定する。
private  java.lang.String intern(Data data)
          編集データを辞書構造に追加する。
private  boolean isRootTransformer()
          このトランスファがルート・トランスファであるか否かを判定する。
(package private)  java.lang.String lookUp(java.lang.String keyword)
          編集データの辞書構造をキーワードで検索して、置換文字列を求める。
private  PageSet parse(java.util.List<Node> top, Layout layout, PageSet pageSet)
          レイアウトあるいはブロックを参照して編集データ・セットをテキストに編集する。
private  PageSet parseLayout(Layout layout, Transformer transformer)
          レイアウト (あるいは、ヘッダ/フッタ・レイアウト) を参照して編集データ・セットをテキストに編集する。
private  void parseSubPageSet(HeaderLayout subPageSetLayout, Page page)
          ヘッダ/フッタ・レイアウトを参照してヘッダ/フッタの編集結果を求める。
private  void pop()
          ブロック内での編集データを保持するスタックを辞書構造から削除する。
private  void push()
          あらたなブロック内での編集データを保持するスタックを辞書構造に追加する。
private  java.lang.String setCurrentPageNum(int pageNo)
          現在のページ番号を設定する。
private  java.lang.String setTotalPageNums(int totalPageNums)
          総ページ数を設定する。
private  void skipUntilBlockEnd()
          ブロックの終了まで編集データを読み出す。
 java.lang.String transform(DataSet dataSet)
          レイアウトを参照して、編集データ・セットから編集結果のテキストを求める。
private  void updateDataDictionary()
          レコードの終了まで編集データを読み込む。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

ancestor

private Transformer ancestor
親トランスファ (ルート・トランスファであれば null、ヘッダ/フッタ・レイアウトであればルート・トランスファ)


rootLayout

private Layout rootLayout
トランスファが参照するレイアウト


dataSetReader

private DataSetReader dataSetReader
編集データ・セットから編集データを順次読み出すデータ・リーダー。


dataDict

private DataDictionary dataDict
編集データ・セットから読み込んだ内容を保持する辞書構造

コンストラクタの詳細

Transformer

Transformer(Layout layout,
            Transformer ancestor)
参照するレイアウトと親トランスファを指定してトランスファのコンストラクタ。

パラメータ:
layout - 参照するレイアウトを渡す。
ancestor - 親トランスファ (ヘッダ/フッタならばルート・トランスファ、ルート・トランスファならば null) を渡す。

Transformer

public Transformer(Layout layout)
参照するレイアウトを指定してトランスファのコンストラクタ。 生成されるトランスファは親トランスファになる。

パラメータ:
layout - 参照するレイアウトを渡す。
メソッドの詳細

isRootTransformer

private boolean isRootTransformer()
このトランスファがルート・トランスファであるか否かを判定する。

戻り値:
ルート・トランスファであれば true を、そうでなければ false を返す。

getRootTransformer

Transformer getRootTransformer()
ルート・トランスファを探索する。

戻り値:
ルート・トランスファを返す。

getRootLayout

Layout getRootLayout()
トランスファが参照するレイアウトのゲッタ。

戻り値:
トランスファが参照するレイアウトを返す。

getMaxCntLines

int getMaxCntLines()
ヘッダとフッタを除いた出力できる最大行数か、ヘッダ/フッタに出力できる行数を求める。 ページ制御が不要なレイアウトであれば、Layout.WITHOUT_PAGE_CONTROL を返す。

戻り値:
出力できる最大行数を返す。

getCurrentData

private Data getCurrentData()
編集データ・セットから最後に読み出したデータのゲッタ。

戻り値:
最後に読み出した編集データを返す。

getNextData

private Data getNextData()
編集データ・セットから次の編集データを読み出す。

戻り値:
次の編集データを返す。

initDataSetReader

private void initDataSetReader(DataSet dataSet)
編集データ・セットのデータ・リーダーを設定する。
このトランスファがルート・トランスファでなければ、リーダーは設定されない。

パラメータ:
dataSet - 編集データ・セットを渡す。

initDataDict

private void initDataDict()
編集データ・セットから読み込んだ内容を保持する辞書構造を設定する。 このトランスファがルート・トランスファでなければ辞書構造は設定されない。


getDataDictionary

DataDictionary getDataDictionary()
ルート・トランスファが保持する編集データ辞書構造のゲッタ。

戻り値:
編集データを保持する辞書構造を返す。

push

private void push()
あらたなブロック内での編集データを保持するスタックを辞書構造に追加する。


pop

private void pop()
ブロック内での編集データを保持するスタックを辞書構造から削除する。


intern

private java.lang.String intern(Data data)
                         throws ReportException
編集データを辞書構造に追加する。

パラメータ:
data - 追加する編集データを渡す。
戻り値:
既に登録されているキーワードであれば追加される前に辞書構造が保持していた置換文字列を返す。そうでなければ null を返す。
例外:
辞書構造へのデータ追加で異常が起きれば - ReportException を投げる。
ReportException

setTotalPageNums

private java.lang.String setTotalPageNums(int totalPageNums)
総ページ数を設定する。

パラメータ:
totalPageNums - 総ページ数を渡す。
戻り値:
これまでに設定されていた総ページ数を表す文字列を返す。設定されていなければ null を返す。

setCurrentPageNum

private java.lang.String setCurrentPageNum(int pageNo)
現在のページ番号を設定する。

パラメータ:
pageNo - 現在のページ番号を渡す。
戻り値:
これまでに設定されていたページ番号を表す文字列を返す。設定されていなければ null を返す。

incremantCurrentPageNum

java.lang.String incremantCurrentPageNum()
現在のページ番号をインクリメントする。

戻り値:
インクリメントする前のページ番号を表す文字列を返す。現在のページ番号が設定されていなかったならば null を返す。

lookUp

java.lang.String lookUp(java.lang.String keyword)
編集データの辞書構造をキーワードで検索して、置換文字列を求める。

パラメータ:
keyword - 検索するキーワードを渡す。
戻り値:
キーワードに対応する置換文字列を返す。キーワードが辞書構造に登録されていなければ null を返す。

getBlockIterationCnt

private int getBlockIterationCnt()
                          throws ReportException
ブロックの繰り返し数を編集データから求める。
ブロックの開始指定を読み出すまでの編集データは辞書構造に登録される。

戻り値:
ブロックの繰り返し数を返す。すでにブロック内にある場合は、1 を返す。
例外:
ReportException

skipUntilBlockEnd

private void skipUntilBlockEnd()
                        throws ReportException
ブロックの終了まで編集データを読み出す。
ブロック終了までの編集データは辞書構造に登録される。

例外:
編集データの読み出し中に異常が起きると - ReportException を投げる。
ReportException

updateDataDictionary

private void updateDataDictionary()
                           throws ReportException
レコードの終了まで編集データを読み込む。
レコード終了までの編集データは辞書構造に登録される。

例外:
編集データの読み出し中に異常が起きると - ReportException を投げる。
ReportException

concatField

private java.util.List<Line> concatField(java.util.List<Line> lines,
                                         java.util.List<Line> values,
                                         Field field)
パッケージが編集済みの置換文字列の各行をレコードの編集結果に構成するデフォルトの手順。
先行するフィールドの末尾に必要なだけの空白文字 (Keyword.WHITE_SPACE) を追加して、このフィールドの各行の内容を追加する。
レコードの各行の桁数は、このフィールドの桁位置と幅桁数の和になる。

パラメータ:
lines - レコードの編集結果の各行のリストが渡される。
values - 編集済みのフィールドの各行のリストが渡される。
field - このフィールドのレイアウト指定内容が渡される。
戻り値:
このフィールドの編集結果の各行で更新されたレコード編集結果の各行のリストを返す。

concatFields

private java.util.List<Line> concatFields(java.util.List<FormattedField> fmtFlds)
                                   throws ReportException
レコードの編集済みのすべてのフィールドの編集結果で、レコード編集結果の各行のリストを構成する。
ユーザが定義したレコード構成ハンドラがレイアウトのレコード指定で設定されていれば、編集結果のフィールドそれぞれを処理対象引数 (target) に渡してハンドラのメソッド (RecordBuilder#concatField() を呼び出す。
また、フィールドの処理開始はハンドラの RecordBuilder#begin() を呼び出し、フィールド処理終了時はハンドラの RecordBuilder#end() を呼び出す。 このときも、ハンドラの処理対象引数 (target) に Field を渡す。

パラメータ:
fmtFlds - 編集済みのフィールドの内容のリストが渡される。
戻り値:
レコード編集結果の各行のリストを返す。
例外:
ユーザが定義したハンドラで例外が発生すればそれ - (ReportUserException) を投げる。
ReportException

checkPageOverFlow

private PageSet checkPageOverFlow(PageSet pageSet)
                           throws ReportException
テキスト編集結果を保持しているページ・セットのページ総数が、レイアウトで指定されいる最大ページ数を超えていれば例外を発生する。

パラメータ:
pageSet - テキスト編集結果を保持しているページ・セットを渡す。
例外:
レイアウトで指定された最大ページ数を超えていれば - ReportException を投げる。
ReportException

feedPage

PageSet feedPage(PageSet pageSet)
           throws ReportException
最後のページで改ページ制御を行う。

パラメータ:
pageSet - 改ページ制御を行ったページ・セット (追加された最後のページは空になっている) を返す。
例外:
最大ページ数を超えてしまったら - ReportException を返す。
ReportException

feedLine

PageSet feedLine(PageSet pageSet)
           throws ReportException
最後のページに空行を追加する。

パラメータ:
pageSet - 最後のページに空行を追加したページ・セットを返す。
例外:
最大ページ数を超えてしまったら - ReportException を返す。
ReportException

addLines

PageSet addLines(PageSet pageSet,
                 java.util.List<Line> lines)
           throws ReportException
最後のページに行のリストを追加する。

パラメータ:
pageSet - 最後のページに行のリストを追加したページ・セットを返す。
例外:
最大ページ数を超えてしまったら - ReportException を返す。
ReportException

createLines

private java.util.List<Line> createLines(Record record,
                                         PageSet pageSet)
                                  throws ReportException
レコードを編集して、編集結果の各行のリストを生成する。
パッケージ・ユーザがレコード構成ハンドラを定義していれば、処理対象のレコードを処理対象引数 (target) に渡して、処理開始と処理終了メソッド (RecordBuilder#begin() と RcordBuilder#end()) を呼び出す。

パラメータ:
record - 編集するレコードのレイアウト指定を渡す。
戻り値:
レコード編集結果の各行のリストを返す。
例外:
レコード編集で異常が発生した場合に - ReportException (あるいは ReportUserException) を投げる。
ReportException

parse

private PageSet parse(java.util.List<Node> top,
                      Layout layout,
                      PageSet pageSet)
               throws ReportException
レイアウトあるいはブロックを参照して編集データ・セットをテキストに編集する。
パッケージ・ユーザがブロック構成ハンドラを定義していれば、ブロックの処理の開始時と終了時にをハンドラのメソッド (BlockBuilder#begin() と BlockBuilder#end()) を呼び出す。

パラメータ:
top - レイアウトあるいはブロックのレイアウト指定の子ノードのリストを渡す。
layout - 参照するレイアウトを渡す。
pageSet - テキスト編集結果を設定するページ・セットを渡す。
戻り値:
テキスト編集結果を保持するページ・セットを返す。
例外:
テキスト編集の処理中に異常が発生すれば例外 - (ReportException あるいは ReportUserException) を投げる。 特に、未定義のノードが参照するレイアウトに指定されていれば ReportException を投げる。
ReportException

parseLayout

private PageSet parseLayout(Layout layout,
                            Transformer transformer)
                     throws ReportException
レイアウト (あるいは、ヘッダ/フッタ・レイアウト) を参照して編集データ・セットをテキストに編集する。
パッケージ・ユーザがレイアウト構成ハンドラを定義していた場合には、レイアウト処理の開始時と終了時にハンドラのメソッド (Layout#begin() と Layout#end()) を呼び出す。

パラメータ:
layout - レイアウト (あるいは、ヘッダ/フッタ・レイアウト) を渡す。
transformer - ルート/ヘッダ/フッタ・トランスフォーマを渡す。
戻り値:
テキスト編集結果を保持するページ・セットを返す。
例外:
テキスト編集の処理中に異常が発生すれば例外 - (ReportException あるいは ReportUserException) を投げる。
ReportException

parseSubPageSet

private void parseSubPageSet(HeaderLayout subPageSetLayout,
                             Page page)
                      throws ReportException
ヘッダ/フッタ・レイアウトを参照してヘッダ/フッタの編集結果を求める。

パラメータ:
subPageSetLayout - ヘッダ/フッタ・レイアウトを渡す。
page - ヘッダ/フッタを追加するページを渡す。
例外:
ヘッダ/フッタの編集処理中で異常が発生すれば例外 - (ReportException あるいは ReportUserException) を投げる。
ReportException

fixPage

private void fixPage(Page page)
              throws ReportException
テキスト編集結果を保持するページに、必要であればヘッダ/フッタの編集結果を結合して、テキスト編集結果ページを確定する。

パラメータ:
page - 編集結果を確定するページを渡す。
例外:
ページのテキスト編集結果の確定中に異常が発生すれば例外 - (ReportException あるいは ReportUseException) を投げる。
ReportException

fixPages

private PageSet fixPages(PageSet pageSet)
                  throws ReportException
テキスト編集結果を保持するページ・セットのすべてのページの編集結果を確定する。

パラメータ:
pageSet - テキスト編集結果を保持するページ・セットを渡す。
戻り値:
テキスト編集結果を確定したページ・セットを返す。
例外:
テキスト編集結果の確定中に異常が発生すれば例外 - (ReportException あるいは ReportUserException) を投げる。
ReportException

flatten

private java.lang.String flatten(PageSet pageSet)
テキスト編集結果のページ・セットの内容を確定して、すべてのページの行の内容を結合したテキストを求める。

パラメータ:
pageSet - テキスト編集結果を保持するページ・セットを渡す。
戻り値:
テキスト編集結果を結合したテキストを返す。
例外:
テキスト編集結果の結合処理中で異常が発生したら例外 - (ReportException あるいは ReportUserException) を投げる。

transform

public java.lang.String transform(DataSet dataSet)
                           throws ReportException
レイアウトを参照して、編集データ・セットから編集結果のテキストを求める。

パラメータ:
dataSet - 編集データ・セットを渡す。
戻り値:
編集結果のテキストを返す。
例外:
テキストの編集処理中に異常が発生すれば例外 - (ReportException あるいは ReportUserException) を投げる。
ReportException