ページの先頭行へ戻る
 Formcoordinatorユーザーズガイド

C.1.8 クラス:EformInfo

電子フォームに設定されている項目に対する項目名一覧やXPath名一覧などの情報を取得します。
また、電子フォーム設計時にサーバアプリケーションでの制御などを定義した備考情報一覧を取得します。
このクラスを使用すると、電子フォームやデータ構造、DOMインターフェースを意識しないで簡単に電子フォームに設定されている項目の各情報の取得を行うことができます。
備考情報は、電子フォーム設計時に項目ごとに指定可能で、複数の備考を定義することができます。
当クラスのコンストラクタで電子フォーム格納パスを指定する場合、URIエンコードする必要があります。詳細については3.2.2.1 URIエンコードについてを参照してください。

クラスの概要

クラス名

EformInfo

パッケージ名

com.fujitsu.form

文法

public class EformInfo

継承関係

java.lang.Object
   |
   +--- com.fujitsu.form.EformInfo

コンストラクタの概要

コンストラクタ名

説明

public
EformInfo(java.lang.String)

電子フォーム名を指定し、EformInfoオブジェクトを生成します。

public
EformInfo(java.lang.String, java.lang.String)

電子フォーム格納パス、電子フォーム名を指定し、EformInfoオブジェクトを生成します。

public
EformInfo(java.lang.String, java.lang.String, javax.servlet.ServletContext)

電子フォーム格納パス、電子フォーム名、ServletContextオブジェクトを指定し、EformInfoオブジェクトを生成します。

メソッドの概要

戻り値型

メソッド名

説明

java.util.Enumeration

getItemNames()

電子フォームに設定されている項目に対する項目名の一覧を列挙します。

java.util.Enumeration

getButtonNames()

電子フォームに設定されているコマンドボタン項目に対する項目名の一覧を列挙します。

java.util.Enumeration

getXPathNames()

電子フォームに設定されている項目に対するXPath名の一覧を取得します。

java.lang.String

getItemName(java.lang.String)

XPath名に対応する項目名を取得します。

java.lang.String

getXPathName(java.lang.String)

項目名に対応するXPath名を取得します。

java.util.Hashtable

getRemarksColumns()

電子フォームに設定されている項目の備考情報一覧を取得します。

java.util.Hashtable

getRemarks()

電子フォームに設定されている電子フォームの備考情報を取得します。

com.fujitsu.form.ItemInfo

getItemInfo(java.lang.String)

項目に設定されている情報を取得するためのItemInfoクラスのオブジェクトを取得します。

org.w3c.dom.Document

getTemplateXMLData()

電子フォームから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オブジェクトを生成します。

Windowsなお、電子フォームは、Formcoordinatorの「環境設定」で設定されている電子フォーム格納先ディレクトリから検索されます。

SolarisLinuxなお、電子フォームは、Formcoordinatorの環境設定コマンドのmxsetassetsdir コマンドで設定されている電子フォーム格納先ディレクトリから検索されます。


パラメタ:

formName

電子フォーム名

例外:

java.lang.IllegalArgumentException

パラメタ「formName」がnullまたは空のオブジェクトの場合

java.lang.UnsatisfiedLinkError

ライブラリのロードに失敗した場合

com.fujitsu.form.XmlProcessorException

項目情報を扱うためのオブジェクトを生成できなかった場合

com.fujitsu.form.FormIOException

次に示すどれかの場合

  • 電子フォームが見つからなかった場合

  • 電子フォームのアクセスで異常が発生した場合

  • 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

電子フォーム名

例外:

java.lang.IllegalArgumentException

次に示すどちらかの場合

  • パラメタ「formPath」、「formName」がnullまたは空のオブジェクトの場合

  • パラメタ「formPath」にfileプロトコル以外を指定した場合

java.lang.UnsatisfiedLinkError

ライブラリのロードに失敗した場合

com.fujitsu.form.XmlProcessorException

項目情報を扱うためのオブジェクトを生成できなかった場合

com.fujitsu.form.FormIOException

次に示すどれかの場合

  • 電子フォームが見つからなかった場合

  • 電子フォームのアクセスで異常が発生した場合

  • 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アプリケーションの仮想パスを指定する場合」を参照してください。


パラメタ:

formPath

電子フォーム格納パス
Webアプリケーションの仮想パスを「/」から始まる形式で指定してください。

formName

電子フォーム名

context

ServletContextオブジェクト

例外:

java.lang.IllegalArgumentException

次に示すどれかの場合

  • パラメタ「formPath」、「formName」、「context」がnullまたは空のオブジェクトの場合

  • パラメタ「formPath」に指定された仮想パスが「/」から始まっていない場合

  • パラメタ「formPath」に指定された仮想パスから物理パスへの変換に失敗した場合(コンテンツが.warアーカイブにより提供されている場合など)

java.lang.UnsatisfiedLinkError

ライブラリのロードに失敗した場合

com.fujitsu.form.XmlProcessorException

項目情報を扱うためのオブジェクトを生成できなかった場合

com.fujitsu.form.FormIOException

次に示すどれかの場合

  • 電子フォームが見つからなかった場合

  • 電子フォームのアクセスで異常が発生した場合

  • INTERSTAGE FormCoordinator デザイナ V4.0L20以前のフォームデザイナで作成した電子フォームの場合

■ メソッドの詳細

getItemNames()

形式:

public java.util.Enumeration getItemNames()

説明:

電子フォームに設定されている項目に対する項目名の一覧を列挙します。


パラメタ:

なし


戻り値:

項目名の文字列からなる列挙オブジェクト。項目名がない場合は、空の列挙オブジェクト


例外:

なし

getButtonNames()

形式:

public java.util.Enumeration getButtonNames()

説明:

電子フォームに設定されているコマンドボタン項目に対する項目名の一覧を列挙します。


パラメタ:

なし


戻り値:

項目名の文字列からなる列挙オブジェクトを返します。項目名がない場合は、空の列挙オブジェクト


例外:

なし

getXPathNames()

形式:

public java.util.Enumeration getXPathNames()

説明:

電子フォームに設定されている項目に対するXPath名の一覧を列挙します。XPath名は、データルートが基準となります。


パラメタ:

なし


戻り値:

XPath名の文字列からなる列挙オブジェクト。XPathがない場合は、空の列挙オブジェクト


例外:

なし


補足:

次に示すXMLデータの場合に列挙されるXPath名一覧を例に示します。

getItemName(java.lang.String)

形式:

public java.lang.String getItemName(java.lang.String XPathName)
  throws java.lang.IllegalArgumentException,
         com.fujitsu.form.XmlProcessorException

説明:

XPath名に対応する項目名を取得します。


パラメタ:

XPathName

XPath名

戻り値:

XPath名に対応する項目名。XPath名に対応する項目名が見つからなかった場合は、null


例外:

java.lang.IllegalArgumentException

パラメタ「XPathName」がnullまたは空のオブジェクトの場合

com.fujitsu.form.XmlProcessorException

パラメタ「XPathName」が不当な場合

getXPathName(java.lang.String)

形式:

public java.lang.String getXPathName(java.lang.String itemName)
  throws java.lang.IllegalArgumentException

説明:

項目名に対応するXPath名を取得します。


パラメタ:

itemName

項目名

戻り値:

項目名に対応するXPath名。項目名に対応するXPathが見つからなかった場合は、null


例外:

java.lang.IllegalArgumentException

パラメタ「itemName」がnullまたは空のオブジェクトの場合

getRemarksColumns()

形式:

public java.util.Hashtable getRemarksColumns()

説明:

電子フォームに設定されている項目に対する備考情報一覧を取得します。


パラメタ:

なし


戻り値:

電子フォームに設定されている項目に対する備考情報一覧。備考情報一覧が見つからなかった場合は、空のオブジェクト


例外:

なし


補足:

取得する備考情報一覧は、次に示すオブジェクト構造となります。

getRemarks()

形式:

public java.util.Hashtable getRemarks()

説明:

電子フォームに設定されている電子フォームの備考情報を取得します。


パラメタ:

なし


戻り値:

電子フォームに設定されている電子フォームの備考情報。備考情報が見つからなかった場合は、空のオブジェクト


例外:

なし


補足:

取得する備考情報は、次に示すオブジェクト構造となります。

getItemInfo(java.lang.String)

形式:

public com.fujitsu.form.ItemInfo getItemInfo(java.lang.String itemName)
  throws java.lang.IllegalArgumentException

説明:

項目に設定されている情報を取得するためのItemInfoクラスのオブジェクトを取得します。


パラメタ:

itemName

項目名

戻り値:

項目に設定されている情報を取得するためのItemInfoクラスのオブジェクト。電子フォームに設定されている項目が見つからなかった場合、および項目情報を扱うためのオブジェクトを生成できなかった場合は、null


例外:

java.lang.IllegalArgumentException

パラメタ「itemName」がnullまたは空のオブジェクトの場合

getTemplateXMLData()

形式:

public org.w3c.dom.Document getTemplateXMLData()
  throws com.fujitsu.form.XmlProcessorException,
         com.fujitsu.form.FormIOException

説明:

電子フォームからXMLデータの雛形に対応するドキュメントオブジェクトを取得します。


パラメタ:

なし


戻り値:

XMLデータの雛形を表すドキュメントオブジェクト


例外:

com.fujitsu.form.XmlProcessorException

ドキュメントオブジェクトを生成できなかった場合

com.fujitsu.form.FormIOException

次に示すどれかの場合

  • 電子フォームが見つからなかった場合

  • 電子フォームのアクセスで異常が発生した場合

  • 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){
      // 例外処理
             ・
             ・
             ・
    }
  }
}