例: ファイルから索引付きグローバル変数へのストリング・リストの読み取り

この例では、ファイル・システムからファイルを読み取り、ファイル内のストリングを索引付きグローバル変数に保管します。こうした技法を使用して、例えば会社の場所のリストを含むファイルを読み取ることができます。グローバル変数にストリングを保管した後、そのグローバル変数を使用して ドロップダウン・リストやその他のウィジェットに値を入力し、ユーザーが値のリストから選択できるようにすることができます。適切な入力フィールドがあるところではどこでも、このウィジェットを使用するためのグローバル規則を作成できます。アプリケーションが起動するとすぐにグローバル変数が使用可能になるようにするには、このビジネス・ロジック・クラスの実行アクションを Start イベントに追加します。
注: テキスト・ファイルが行間に復帰および改行を使用している場合、次の例の StringTokenizer コンストラクターの呼び出しで 2 番目の引数として「"\r\n"」を使用する必要があります。
////////////////////////////////////////////////////////////////////////////////
//  This sample is provided AS IS.
//  Permission to use, copy and modify this software for any purpose and
//  without fee is hereby granted. provided that the name of IBM not be used in
//  advertising or publicity pertaining to distribution of the software without
//  specific written permission.
//
//  IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SAMPLE, INCLUDING ALL
//  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL IBM
//  BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
//  DAMAGES WZIETransOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
//  IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
//  OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SAMPLE.
////////////////////////////////////////////////////////////////////////////////
import com.ibm.ejs.container.util.ByteArray;
import com.ibm.hats.common.IBusinessLogicInformation;
import com.ibm.hats.common.GlobalVariable;
import com.ibm.hats.common.IGlobalVariable;

public class ReadNamesFromFile
{

  public static void execute(IBusinessLogicInformation blInfo)
  {
		// Name of indexed global variable to be saved
		String gvOutputName = "namesFromFile";
		
		// The file containing a list of information (in this case, it contains names)
		java.io.File myFileOfNames = new java.io.File("C:" + java.io.File.separator
						 + "temp" + java.io.File.separator + "names.txt");
    	
    	try
    	{
			// First, read the contents of the file
			
			java.io.FileInputStream fis = new java.io.FileInputStream(myFileOfNames);
			
			int buffersize = (int)myFileOfNames.length(); 
			byte[] contents = new byte[buffersize];; 

			long n = fis.read(contents, 0, buffersize);
			 
			fis.close();
			
			String namesFromFile = new String(contents);
			
			// Next, create an indexed global variable from the file contents
			
			java.util.StringTokenizer stok = 
						new java.util.StringTokenizer(namesFromFile, "\n", false);
			
			int count = stok.countTokens();
			String[] names = new String[count];
			for (int i = 0; i < count; i++)
			{
				names[i] = stok.nextToken();
			}
			
			IGlobalVariable gv = new GlobalVariable(gvOutputName, names);
			blInfo.getGlobalVariables().put(gvOutputName,gv);			
    	}
    	catch (java.io.FileNotFoundException fnfe)
    	{
    		fnfe.printStackTrace();
    	}
    	catch (java.io.IOException ioe)
    	{
    		ioe.printStackTrace();
    	}
  }
}