• 検索結果がありません。

サービスハンドオフデータ取得 & 解析部

ドキュメント内 PDF uMediator - sfc.wide.ad.jp (ページ 68-71)

実装

5.3.7 サービスハンドオフデータ取得 & 解析部

SHデータ取得&解析部はHandoffDataGetterAndParserクラスが担う.HandoffDataGet- terAndParserクラスではまず,SH元サービスのDepartureUsdlParserインスタンスを 利用してリクエストメッセージを取得する.次にSH元データにリクエストメッセージ を送信し,SHデータ要求を行いSHデータを取得する.その後,取得データをHandof- fXmlParserクラスまたはHandoffCsvParserクラスのインスタンスとして読み込み,解 析を行う.ここでの解析とは取得データとusdlファイルを照合し,変数名とその値のリ ストを作成することである.HandoffDataGetterAndParserクラスが保持するメソッド を表5.9,HandoffXmlParserクラスが保持するメソッドを表5.10,HandoffCsvParser クラスが保持するメソッドを表5.11に示す.

5.3.8 データマッピング部

データマッピング部はDataMapperクラスが担う.DataMapperクラスでは,Hand-

offProtocolGetterクラスにより作成されたSHデータで必要となる変数名のリストと,

HandoffDataGetterAndParserクラスにより作成された受信SHデータの変数名とその データ値のリストから,SHデータの作成で必要となる変数名とそのデータ値のリスト を再編成し作成する.この際,SHデータで必要となる変数名に対応するデータ値が 存在しない場合,欠如データ算出部に依頼し欠如したデータを算出することを試みる.

データマッピングの詳細を図5.6に示す.

表 5.9: HandoffDataGetterAndParserクラスのメソッド

public HandoffDataGetterAndParser(

DepartureUsdlParser departure)

コンストラクタ public void getHandoffData(

DepartureUsdlParser departure)

SHデータ取得 public ArrayList<ArrayList<String[]>>

getDataAndElementName()

データ値とその親要素名のリスト作成 public ArrayList<ArrayList<String[]>>

getVariableAndElementName()

変数名とその親要素名のリスト作成 public ArrayList<ArrayList<String[]>>

mapVariableAndData()

変数名とそのデータ値のリストをマッ ピングし作成

表 5.10: HandoffXmlParserのメソッド

public HandoffDataGetterAndParser(

DepartureUsdlParser departure)

コンストラクタ public ArrayList<ArrayList<String[]>>

getDataAndElementName()

データ値とその親要素名のリスト作成 public ArrayList<ArrayList<String[]>>

getVariableAndElementName()

変数名とその親要素名のリスト作成

表 5.11: HandoffCsvParserクラスのメソッド

public HandoffDataGetterAndParser(

DepartureUsdlParser departure)

コンストラクタ public ArrayList<ArrayList<String[]>>

getDataAndElementName()

データ値とその親要素名のリスト作成 public ArrayList<ArrayList<String[]>>

getVariableAndElementName()

変数名とその親要素名のリスト作成

'

&

$

%

package umediator;

・・・

public class DataMapper {

public ArrayList<String[]> dataMapping(

ArrayList<String> destinationVariableList, ArrayList<String[]> variableAndValueList) {

//最終的にSHデータ作成に必要となる変数名とデータ値をマッピングしたリスト

ArrayList<String[]> destinationVariableAndValueList = new ArrayList<String[]>();

//データマッピングのための走査を行うループ

for (int i = 0; i < destinationVariableList.size(); i++){ //欠如データの有無を判定するフラグ true:無しfalse:有り boolean flag = false;

label1: for (int j = 0; j < variableAndValueList.size(); j++) { if (destinationVariableList.get(i).equals(

variableAndValueList.get(j)[0])) {

//変数名とデータ値をマッピングし一時的に配列に格納

String[] destinationVariableAndValue = {destinationVariableList.get(i), variableAndValueList.get(j)[1] };

//マッピング結果である変数名とデータ値を格納

destinationVariableAndValueList.add(destinationVariableAndValue);

//一致データの変数名とデータ値を削除 variableAndValueList.remove(j);

flag = true;

break label1;

} }

//欠如データが有る場合の処理 if (!flag) {

LackDataCalculator calculator = new LackDataCalculator();

//欠如データ算出部の呼び出し,結果をリストに追加 destinationVariableAndValueList.add(

calculator.calculate(destinationVariableList.get(i));

} }

return destinationVariableAndValueList;

}

} 60

ドキュメント内 PDF uMediator - sfc.wide.ad.jp (ページ 68-71)