## データ前処理プラグイン

学習ウィザードの前処理段階で使用する特別な前処理plug-inを書くことが可能です．
このplug-inにはいくつかの制約が適用されます:

- このplug-inは， Javaで書かれ拡張された COM.hugin.HGUI.PreProcess classでなければならない．
- このplug-inは，一度に単一のフィールドでのみ動作でき，他のフィールドの値を知らない．

それ以外は， このplug-inへの制限はありません．
以下にとても簡単な前処理（"superman" を "batman"に置き換える処理)を示します:
`public class MyPreprocess extends COM.hugin.HGUI.PreProcess{
public String process(String value){
if(value.equals("superman"))
return "batman";
else
return value;
}
// No we do not provide an interface. If we did, we
// should also implement the getInterface function.
public boolean providesInterface(){
return false;
}
public String getDescription(){
return "Replacing superman with batman";
}
}
`
`providesInterface`関数が真を返す場合，`getInterface` 関数と`storeValues` 関数が実装されていなければなりません．前者は，ユーザーにグラフィカル・インタフェースを提供するためにシステムによって使用され，後者はユーザーがインタフェースに入力した値を格納するために使用されます．つまり，ユーザーが "ok"-ボタンを押すと， `storeValues`が呼ばれます．
`process` 関数は，ケースごとに1回呼ばれ，できるだけ効率的に実行するために，この関数を書くことが重要です．
ユーザー独自のデータ前処理を追加するには，インストール・ディレクトリの下の"plugins" サブ・ディレクトリにコンパイルされたclassを追加するだけです．すると，Huginグラフィカル・ユーザー・インタフェースは，そのプロセスを自動t系に利用可能なプロセスの一覧に追加します．これらは，前処理の"外部プラグイン”セクションの下にグループ化されます（図1）．そして，ユーザー定義前処理が，プルダウン・メニューに現れます．

図 1: プルダウン・メニューから利用できる外部データ前処理プラグイン

Huginグラフィカル・ユーザー・インタフェースには，CapitalizeProcess と ConvertToBooleanの2つの前処理プラグインの事例がついています．これらのソース・コードは，classファイルとともに "plugins"ディレクトリ中にあり， データ前処理plug-in機能のすべての様相をデモします．

Back