電子フォームに設定されている項目に対する項目名一覧やXPath名一覧などの情報を取得します。
また、電子フォーム設計時にサーバアプリケーションでの制御などを定義した備考情報一覧を取得します。
このクラスを使用すると、電子フォームやデータ構造、DOMインターフェースを意識しないで簡単に電子フォームに設定されている項目の各情報の取得を行うことができます。
備考情報は、電子フォーム設計時に項目ごとに指定可能で、複数の備考を定義することができます。
当クラスのコンストラクタで電子フォーム格納パスを指定する場合、URIエンコードする必要があります。詳細については3.2.2.1 URIエンコードについてを参照してください。
■ クラスの概要
クラス名 | EformInfo |
パッケージ名 | com.fujitsu.form |
文法 | public class EformInfo |
継承関係 | java.lang.Object | +--- com.fujitsu.form.EformInfo |
■ コンストラクタの概要
コンストラクタ名 | 説明 |
---|---|
電子フォーム名を指定し、EformInfoオブジェクトを生成します。 | |
電子フォーム格納パス、電子フォーム名を指定し、EformInfoオブジェクトを生成します。 | |
public | 電子フォーム格納パス、電子フォーム名、ServletContextオブジェクトを指定し、EformInfoオブジェクトを生成します。 |
■ メソッドの概要
戻り値型 | メソッド名 | 説明 |
---|---|---|
java.util.Enumeration | 電子フォームに設定されている項目に対する項目名の一覧を列挙します。 | |
java.util.Enumeration | 電子フォームに設定されているコマンドボタン項目に対する項目名の一覧を列挙します。 | |
java.util.Enumeration | 電子フォームに設定されている項目に対するXPath名の一覧を取得します。 | |
java.lang.String | XPath名に対応する項目名を取得します。 | |
java.lang.String | 項目名に対応するXPath名を取得します。 | |
java.util.Hashtable | 電子フォームに設定されている項目の備考情報一覧を取得します。 | |
java.util.Hashtable | 電子フォームに設定されている電子フォームの備考情報を取得します。 | |
com.fujitsu.form.ItemInfo | 項目に設定されている情報を取得するためのItemInfoクラスのオブジェクトを取得します。 | |
org.w3c.dom.Document | 電子フォームからXMLデータの雛形に対応するドキュメントオブジェクトを取得します。 |
■ コンストラクタの詳細
EformInfo(java.lang.String)
形式:
public EformInfo(java.lang.String formName) throws java.lang.IllegalArgumentException, java.lang.UnsatisfiedLinkError, com.fujitsu.form.XmlProcessorException, com.fujitsu.form.FormIOException
説明:
電子フォーム名を指定し、EformInfoオブジェクトを生成します。
なお、電子フォームは、Formcoordinatorの「環境設定」で設定されている電子フォーム格納先ディレクトリから検索されます。
なお、電子フォームは、Formcoordinatorの環境設定コマンドのmxsetassetsdir コマンドで設定されている電子フォーム格納先ディレクトリから検索されます。
パラメタ:
電子フォーム名
例外:
パラメタ「formName」がnullまたは空のオブジェクトの場合
ライブラリのロードに失敗した場合
項目情報を扱うためのオブジェクトを生成できなかった場合
次に示すどれかの場合
電子フォームが見つからなかった場合
電子フォームのアクセスで異常が発生した場合
INTERSTAGE FormCoordinator デザイナ V4.0L20以前のフォームデザイナで作成した電子フォームの場合
EformInfo(java.lang.String, java.lang.String)
形式:
public EformInfo(java.lang.String formPath, java.lang.String formName) throws java.lang.IllegalArgumentException, java.lang.UnsatisfiedLinkError, com.fujitsu.form.XmlProcessorException, com.fujitsu.form.FormIOException
説明:
電子フォーム格納パス、電子フォーム名を指定し、EformInfoオブジェクトを生成します。
電子フォーム格納パスはURIエンコードした文字列で指定します。詳細については3.2.2.1 URIエンコードについてを参照してください。また、現在利用できるプロトコルはfileだけです。
パラメタ:
電子フォーム格納パス
電子フォーム名
例外:
次に示すどちらかの場合
パラメタ「formPath」、「formName」がnullまたは空のオブジェクトの場合
パラメタ「formPath」にfileプロトコル以外を指定した場合
ライブラリのロードに失敗した場合
項目情報を扱うためのオブジェクトを生成できなかった場合
次に示すどれかの場合
電子フォームが見つからなかった場合
電子フォームのアクセスで異常が発生した場合
INTERSTAGE FormCoordinator デザイナ V4.0L20以前のフォームデザイナで作成した電子フォームの場合
EformInfo(java.lang.String, java.lang.String, javax.servlet.ServletContext)
形式:
public EformInfo(java.lang.String formPath, java.lang.String formName javax.servlet.ServletContext context) throws java.lang.IllegalArgumentException, java.lang.UnsatisfiedLinkError, com.fujitsu.form.XmlProcessorException, com.fujitsu.form.FormIOException
説明:
電子フォーム格納パス、電子フォーム名、ServletContextオブジェクトを指定し、EformInfoオブジェクトを生成します。このコンストラクタは、電子フォーム格納パスをWebアプリケーションの仮想パスで指定する場合に使用します。電子フォーム格納パスはURIエンコードした文字列で指定します。詳細については3.2.2.1 URIエンコードについてを参照してください。
指定方法の詳細については、「■ 使用例」の「電子フォーム格納パスにWebアプリケーションの仮想パスを指定する場合」を参照してください。
パラメタ:
電子フォーム格納パス
Webアプリケーションの仮想パスを「/」から始まる形式で指定してください。
電子フォーム名
ServletContextオブジェクト
例外:
次に示すどれかの場合
パラメタ「formPath」、「formName」、「context」がnullまたは空のオブジェクトの場合
パラメタ「formPath」に指定された仮想パスが「/」から始まっていない場合
パラメタ「formPath」に指定された仮想パスから物理パスへの変換に失敗した場合(コンテンツが.warアーカイブにより提供されている場合など)
ライブラリのロードに失敗した場合
項目情報を扱うためのオブジェクトを生成できなかった場合
次に示すどれかの場合
電子フォームが見つからなかった場合
電子フォームのアクセスで異常が発生した場合
INTERSTAGE FormCoordinator デザイナ V4.0L20以前のフォームデザイナで作成した電子フォームの場合
■ メソッドの詳細
形式:
public java.util.Enumeration getItemNames()
説明:
電子フォームに設定されている項目に対する項目名の一覧を列挙します。
パラメタ:
なし
戻り値:
項目名の文字列からなる列挙オブジェクト。項目名がない場合は、空の列挙オブジェクト
例外:
なし
形式:
public java.util.Enumeration getButtonNames()
説明:
電子フォームに設定されているコマンドボタン項目に対する項目名の一覧を列挙します。
パラメタ:
なし
戻り値:
項目名の文字列からなる列挙オブジェクトを返します。項目名がない場合は、空の列挙オブジェクト
例外:
なし
形式:
public java.util.Enumeration getXPathNames()
説明:
電子フォームに設定されている項目に対するXPath名の一覧を列挙します。XPath名は、データルートが基準となります。
パラメタ:
なし
戻り値:
XPath名の文字列からなる列挙オブジェクト。XPathがない場合は、空の列挙オブジェクト
例外:
なし
補足:
次に示すXMLデータの場合に列挙されるXPath名一覧を例に示します。
形式:
public java.lang.String getItemName(java.lang.String XPathName) throws java.lang.IllegalArgumentException, com.fujitsu.form.XmlProcessorException
説明:
XPath名に対応する項目名を取得します。
パラメタ:
XPath名
戻り値:
XPath名に対応する項目名。XPath名に対応する項目名が見つからなかった場合は、null
例外:
パラメタ「XPathName」がnullまたは空のオブジェクトの場合
パラメタ「XPathName」が不当な場合
getXPathName(java.lang.String)
形式:
public java.lang.String getXPathName(java.lang.String itemName) throws java.lang.IllegalArgumentException
説明:
項目名に対応するXPath名を取得します。
パラメタ:
項目名
戻り値:
項目名に対応するXPath名。項目名に対応するXPathが見つからなかった場合は、null
例外:
パラメタ「itemName」がnullまたは空のオブジェクトの場合
形式:
public java.util.Hashtable getRemarksColumns()
説明:
電子フォームに設定されている項目に対する備考情報一覧を取得します。
パラメタ:
なし
戻り値:
電子フォームに設定されている項目に対する備考情報一覧。備考情報一覧が見つからなかった場合は、空のオブジェクト
例外:
なし
補足:
取得する備考情報一覧は、次に示すオブジェクト構造となります。
形式:
public java.util.Hashtable getRemarks()
説明:
電子フォームに設定されている電子フォームの備考情報を取得します。
パラメタ:
なし
戻り値:
電子フォームに設定されている電子フォームの備考情報。備考情報が見つからなかった場合は、空のオブジェクト
例外:
なし
補足:
取得する備考情報は、次に示すオブジェクト構造となります。
形式:
public com.fujitsu.form.ItemInfo getItemInfo(java.lang.String itemName) throws java.lang.IllegalArgumentException
説明:
項目に設定されている情報を取得するためのItemInfoクラスのオブジェクトを取得します。
パラメタ:
項目名
戻り値:
項目に設定されている情報を取得するためのItemInfoクラスのオブジェクト。電子フォームに設定されている項目が見つからなかった場合、および項目情報を扱うためのオブジェクトを生成できなかった場合は、null
例外:
パラメタ「itemName」がnullまたは空のオブジェクトの場合
形式:
public org.w3c.dom.Document getTemplateXMLData() throws com.fujitsu.form.XmlProcessorException, com.fujitsu.form.FormIOException
説明:
電子フォームからXMLデータの雛形に対応するドキュメントオブジェクトを取得します。
パラメタ:
なし
戻り値:
XMLデータの雛形を表すドキュメントオブジェクト
例外:
ドキュメントオブジェクトを生成できなかった場合
次に示すどれかの場合
電子フォームが見つからなかった場合
電子フォームのアクセスで異常が発生した場合
INTERSTAGE FormCoordinator デザイナ V4.0L20以前のフォームデザイナで作成した電子フォームの場合
■ 使用例
EformInfoクラスの使用例を次に示します。
電子フォームに設定されている各項目の情報を取得する場合
この例では、電子フォームに設定されている各項目の情報を取得しています。
import java.util.Enumeration; import com.fujitsu.form.EformInfo; import com.fujitsu.form.ItemInfo; import com.fujitsu.form.NumberItemInfo; import com.fujitsu.form.TextItemInfo; import com.fujitsu.form.RectTextItemInfo; import com.fujitsu.form.BarcodeItemInfo; import com.fujitsu.form.HiddenItemInfo; public class ItemInfoSample{ public void test(){ try{ // 電子フォーム名を指定して、EformInfoオブジェクトを生成します。 // Windowsの場合は以下のように記述します。 EformInfo ef = new EformInfo( java.net.URLEncoder.encode("file:///c:/pmd", System.getProperty("file.encoding")), "電子フォーム名"); // SolarisおよびLinuxの場合は以下のように記述します。 // EformInfo ef = new EformInfo( // java.net.URLEncoder.encode("file:////home/pmd", // System.getProperty("file.encoding")), "電子フォーム名"); // 電子フォームに指定されている項目名の一覧を取得します。 Enumeration itemnames = ef.getItemNames(); while(itemnames.hasMoreElements()){ Object obj = itemnames.nextElement(); // 指定した項目名に対応するXPath名を取得します。 String itemXPathName = ef.getXPathName((String)obj); // 指定した項目名に設定されている情報を取得するためのオブジェクトを // 取得します。 ItemInfo iI = ef.getItemInfo((String)obj); // 指定した項目の項目種別を参照し、情報を採取します。 int itemType = iI.getItemType(); switch(itemType){ // 数字項目の場合 case ItemInfo.ITEMTYPE_NUMBER: long maxColumn = ((NumberItemInfo)iI).getMaxColumn(); long decimalPosition = ((NumberItemInfo)iI).getDecimalPosition(); break; // テキスト項目の場合 case ItemInfo.ITEMTYPE_TEXT: long maxCharacter_text = ((TextItemInfo)iI).getMaxCharacter(); break; // 矩形テキスト項目の場合 case ItemInfo.ITEMTYPE_RECTTEXT: long maxCharactor_rect = ((RectTextItemInfo)iI).getMaxCharacter(); break; // バーコード項目の場合 case ItemInfo.ITEMTYPE_BARCODE: long maxDataLength = ((BarcodeItemInfo)iI).getMaxDataLength(); break; //非出力項目(項目形式が数字)の場合 case ItemInfo.ITEMTYPE_HIDDEN_NUMBER: long maxCharacter_hidden_number = ((HiddenItemInfo)iI).getMaxCharacter(); break; //非出力項目(項目形式がテキスト)の場合 case ItemInfo.ITEMTYPE_HIDDEN_TEXT: long maxCharacter_hidden_text = ((HiddenItemInfo)iI).getMaxCharacter(); break; // ラジオボタン項目の場合 // チェックボックス項目の場合 // メディア項目の場合 case ItemInfo.ITEMTYPE_RADIOBUTTON: case ItemInfo.ITEMTYPE_CHECKBOX: case ItemInfo.ITEMTYPE_IMAGE: defalut: break; } } } catch(Exception e){ // 例外処理 ・ ・ ・ } return; } }
電子フォームに設定されている各項目の備考情報を取得する場合
この例では、電子フォームに設定されている各項目の備考情報を取得しています。
import java.util.Enumeration; import java.util.Hashtable; import com.fujitsu.form.EformInfo; public class RemarksColumnsSample{ public void test(){ try{ // 電子フォーム名を指定して、EformInfoオブジェクトを生成します。 // Windowsの場合は以下のように記述します。 EformInfo ef = new EformInfo( java.net.URLEncoder.encode("file:///c:/pmd", System.getProperty("file.encoding")), "電子フォーム名"); // SolarisおよびLinuxの場合は以下のように記述します。 // EformInfo ef = new EformInfo( // java.net.URLEncoder.encode("file:////home/pmd", // System.getProperty("file.encoding")), "電子フォーム名"); // 電子フォームの各項目に指定されている全備考情報の情報を取得します。 Hashtable rc = ef.getRemarksColumns(); // 備考情報が記述されている項目ごとに対応する備考情報の情報を取得します。 Enumeration enumItemName = rc.keys(); while(enumItemName.hasMoreElements()){ // 項目名を取得します。 String itemName = (String)enumItemName.nextElement(); // 項目名に指定されている備考情報の全情報を取得します。 Hashtable columns = (Hashtable)rc.get(itemName); // 備考情報のうち、備考名が「承認」の場合の備考に設定されている値を // 取得します。 String[] note = (String[])columns.get("承認"); } } catch(Exception e){ // 例外処理 ・ ・ ・ } return; } }
電子フォーム格納パスにWebアプリケーションの仮想パスを指定する場合
この例では、電子フォーム格納パスにWebアプリケーションの仮想パスを指定して、EformInfoオブジェクトを生成します。コンストラクタに指定するServletContextオブジェクトはHttpServletクラスのgetServletContext()から取得します。
この例で使用するWebアプリケーションの構成は以下の通りです。
import java.io.IOException ; import javax.servlet.ServletException ; import javax.servlet.ServletContext ; import javax.servlet.http.HttpServlet ; import javax.servlet.http.HttpServletRequest ; import javax.servlet.http.HttpServletResponse ; import com.fujitsu.form.EformInfo ; public class SampleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try { // ServletContextオブジェクトを生成します。 ServletContext context = getServletContext(); // 電子フォーム格納パスをURIエンコードします。
String formPath = java.net.URLEncoder.encode("/eform", System.getProperty("file.encoding")); // EformInfoを構築します。 EformInfo ef = new EformInfo(formPath, "sample", context) ; // EformInfoオブジェクトを使った処理 ・ ・ ・ } catch(Exception e){ // 例外処理 ・ ・ ・ } } }