# パッケージ org.opengion.hayabusa.report2

package org.opengion.hayabusa.report2

     OpenOfficeを利用した帳票システム関係のクラスです。

     従来のExcel帳票は、互換性のため残っていますが、こちらのパッケージが今後の主流の帳票システムになります。

- Related Packages
  パッケージ
  説明
  org.opengion.hayabusa
  このドキュメントは、Ｗｅｂアプリケーションフレームワーク『はやぶさ』の ＡＰＩ 仕様です。
- クラス
  説明
  DocConverter_OOO
  OpenOfficeを利用して様々な形式のﾌｧｲﾙを読み込み､出力･印刷を行うための変換ｸﾗｽです｡ 変換を行うことのできる入出力のﾌｫｰﾏｯﾄ以下の通りです｡ [対応ﾌｫｰﾏｯﾄ] 入力[Calc(ods) ,Excel(xls) ] ⇒ 出力[Calc(ods) ,Excel(xls,xlsx) ,PDF] 入力[Writer(odt) ,Word(doc) ] ⇒ 出力[Writer(odt) ,Word(doc,docx) ,PDF] 入力[Impress(odp),PowerPoint(ppt)] ⇒ 出力[Impress(odp),PowerPoint(ppt,pptx) ,PDF] 入力[ * 上記の全て ] ⇒ 印刷 ※ xlsx,docx,pptx は､MS 2007形式の為､LibreOffice のみ利用できます｡ 変換を行うには､以下の2通りの方法があります｡ (1)簡易的な変換ﾒｿｯﾄﾞを利用する場合 `DocConverter_OOO.convert(String, String)`を利用して､変換を行います｡ この場合､出力形式は､出力ﾌｧｲﾙの拡張子に従って自動的に決定されます｡ このため､印刷処理などを行う場合は､(2)の方法で出力して下さい｡ (2)段階的に書くﾒｿｯﾄﾞを呼び出して変換する場合 ｵﾌﾞｼﾞｪｸﾄを生成した後､`DocConverter_OOO.open()`､#(各種変換ﾒｿｯﾄﾞ)､`Object.clone()`を 順番に呼び出して変換を行います｡ この場合､出力形式は､それに対応するﾒｿｯﾄﾞを呼び出ることで決定されます｡ また､変換を行うための､各種ﾒｿｯﾄﾞは､例外としてThrowableを投げるように定義されています｡ このｸﾗｽを利用する場合は､このThrowableをcatchし､catch句で､必ず`DocConverter_OOO.close(boolean)`に､ "true"(ｴﾗｰ発生時のｸﾛｰｽﾞ処理)を指定して､終了処理を行って下さい｡ (これを行わない場合､OpenOfficeの不要なﾌﾟﾛｾｽが残ってしまう可能性があります) また､出力ﾌｧｲﾙが既に存在する場合､出力ﾌｧｲﾙは一旦削除された後､処理されます｡ なお､入力ﾌｧｲﾙと出力ﾌｧｲﾙが同じ場合､何も処理されません｡(例外も発行されません) 入力ﾌｧｲﾙを､CSV形式で複数指定した場合､複数の入力ﾌｧｲﾙをﾏｰｼﾞして出力します｡ ※1 現状は､ﾌｧｲﾙのﾏｰｼﾞは､入力ﾌｧｲﾙがExcelまたはCalcの場合のみ対応しています｡ ※ DocConverter は､ｸﾗｳﾄﾞ対応されていません｡変換時はﾛｰｶﾙﾌｧｲﾙ間で行ってください｡
  ExecProcess
  帳票要求に設定された実行方法により､各種出力､Excel取り込み処理を行います｡ 1.出力 雛形ﾌｧｲﾙを一時ﾃﾞｨﾚｸﾄﾘに展開した後､帳票ﾃﾞｰﾀを埋め込み､最後にOpenOffice.orgの ﾌﾟﾛｾｽを利用して出力を行います｡ 対応している出力方法は､印刷､PDF出力､Excel出力です｡ 一時ﾃﾞｨﾚｸﾄﾘは､ｼｽﾃﾑﾘｿｰｽのREPORT_FILE_URLで定義されたﾃﾞｨﾚｸﾄﾘです｡ これが定義されていない場合は､ｼｽﾃﾑﾘｿｰｽのFILE_URLで定義されたﾃﾞｨﾚｸﾄ以下の/REPORTに 展開されます｡ 一時ﾌｧｲﾙは､処理が正常に終了した場合､削除されます｡(ODS出力のみにした場合は､出力直前の ODSﾌｧｲﾙは残ります) 処理でｴﾗｰが発生した場合は､一時ﾌｧｲﾙはﾃﾞﾊﾞｯｸﾞのため､削除されません｡ 2.取り込み 旧帳票ｼｽﾃﾑの取り込み処理及びその後のPG起動を行います｡ 実行方法により､出力､入力を行います｡
  ExecQueue
  帳票処理要求を管理するｷｭｰｵﾌﾞｼﾞｪｸﾄです｡ このｵﾌﾞｼﾞｪｸﾄでは､帳票の定義及びﾃﾞｰﾀと､処理中に発生したｴﾗｰﾒｯｾｰｼﾞを管理します｡ また､このｷｭｰを生成したｵﾌﾞｼﾞｪｸﾄもこのｵﾌﾞｼﾞｪｸﾄにｾｯﾄされます｡
  ExecThread
  帳票要求ｽﾚｯﾄﾞの本体です｡ 外部からｽﾀｯｸされたｷｭｰを先入れ先出しの順番に処理します｡ あるｷｭｰに対してｴﾗｰが発生すると､ｼｽﾃﾑﾘｿｰｽのRETRY_COUNTで設定された回数再処理を試みます｡ この回数分ｴﾗｰが発生した場合は､そのｷｭｰのみがｱﾌﾟﾘｴﾗｰとなります｡ このｽﾚｯﾄﾞは一度生成されると､外部から明示的に終了の要求を起こさない限り生存し続けます｡ 終了するには､finish()ﾒｿｯﾄﾞを呼び出します｡ このﾒｿｯﾄﾞが呼ばれると､内部でｽﾀｯｸしているｷｭｰは全てｸﾘｱされるため､その時点で 処理されているｷｭｰの処理が完了した時点で､ｽﾚｯﾄﾞが終了します｡
  ExecThreadManager
  帳票処理を行う各スレッドを管理するクラスです。
  OdsContentParser
  指定されたパスに存在するODSの各XMLファイルをパースし、帳票定義及び 帳票データから書き換えます。
  OdsSheet
  シート単位のcontent.xmlを管理するためのクラスです。
  ProcessFactory
  Sofficeのプロセスを管理するファクトリクラスです。
  ProcessFactory.ProcessPool
  ProcessPool は、AbstractObjectPool を継承した オブジェクトプールです。
  QueueManager
  帳票処理のキューの処理方法を定義するインターフェースです。
  QueueManager_DB
  DBからｷｭｰを作成するためのｸﾗｽです｡ ｷｭｰはGE5xﾃｰﾌﾞﾙから作成されます｡ ｷｭｰ生成時点(処理ｽﾚｯﾄﾞにｽﾀｯｸした時点)では､帳票ﾃﾞｰﾀのﾃｰﾌﾞﾙﾓﾃﾞﾙは作成されません｡ 帳票ﾃﾞｰﾀは､各ｽﾚｯﾄﾞからset()ﾒｿｯﾄﾞを呼び出したﾀｲﾐﾝｸﾞで生成されます｡ 処理開始及び､完了のｽﾃｰﾀｽは､GE50の完成ﾌﾗｸﾞに更新されます｡ また､ｴﾗｰ発生時のﾒｯｾｰｼﾞは､GE56に更新されます｡
  QueueManager_DB.DBTableModelCreator
  帳票明細ﾃﾞｰﾀを帳票ﾚｲｱｳﾄﾃｰﾌﾞﾙに従って分割し､その結果をDBTableModelとして 生成します｡ ﾃﾞｰﾀの分割は､ﾊﾞｲﾄ数ﾍﾞｰｽで行われるため､ｴﾝｺｰﾄﾞを正しく指定する必要があります｡ ｴﾝｺｰﾄﾞ指定は､ｼｽﾃﾑﾘｿｰｽのDB_ENCODEで指定します｡ ﾚｲｱｳﾄﾃｰﾌﾞﾙが存在しない場合､又は､帳票ﾃﾞｰﾀが存在しない場合､DBTableModelは nullで返されます｡
  QueueManager_DIRECT
  画面から直接キューを作成するためのクラスです。
  SOfficeProcess
  OpenOfficeのプロセスを表すクラスです。
  SOfficeProcessTcp
  OpenOfficeのプロセスを表すクラスです。
  TagParser
  Calc帳票システムでタグのパースを行うためのクラスです。