Compass---CompassConfiguration


CompassConfiguration構成
 
Compassインスタンスを作成するには、まずCompassConfigurationを構成します.
2つの構成方法があります
1プログラム構成
1つのCompassインスタンスは、マッピング定義を追加し、異なるパラメータを設定することによって、CompassConfigurationクラスを使用して構成をプログラム化できます.CompassConfigurationでは、マッピング定義(xmlマッピングファイル、接尾辞.cmp.xml、または注釈クラス)を追加するインタフェースが多く、汎用メタデータ定義(接尾辞.cmd.xmlのxmlプロファイル)もあります.
 
 
addFile(String) Loads the mapping file (cpm or cmd) according to the  specified file path string.
addFile(File) Loads the mapping file (cpm or cmd) according to the specified file object reference.
addClass(Class) Loads the mapping file (cpm) according to the specified  class. test.Author.class will map to
test/Author.cpm.xml within the class path. Can also add annotated classes if using Compass annotations support.
addURL(URL) Loads the mapping file (cpm or cmd) according to the specified URL.
addResource(String) Loads the mapping file (cpm or cmd) according to the specified resource path from the class path.
addInputStream(InputStream) Loads the mapping file (cpm or cmd) according to the specified input stream.
addDirectory(String) Loads all the files named *.cpm.xml or *.cmd.xml from within the specified directory.
addJar(File) Loads all the files named *.cpm.xml or *.cmd.xml from within the specified Jar file.
addMapping(ResourceMapping) Programmatically add resource mapping (domain model that represents different mappings such as XSEM, OSEM,
and RSEM).
addScan(String basePackage, String pattern)Scans for all the mappings that exist wihtin the base
backage recursively. An optioal ant style pattern can be provided as well. The mappings detected are all the xml
based mappings. Annotation based mappings will be detected automatically if either ASM or Javassist exists
within the classpath.
addMappingResolver(MappingResolver) Uses a class that implements the MappingResolver to get an
InputStream for xml mapping definitions.

最小化されたプログラム制御の例を次に示します.
 
CompassConfiguration conf = new CompassConfiguration()
.setSetting(CompassEnvironment.CONNECTION, "my/index/dir")
.addResource(DublinCore.cmd.xml)
.addClass(Author.class);

2 XML/JSON構成
すべてのCompassの操作構成は、compassでxmlプロファイルに定義できます.cfg.xmlはデフォルト名です.このファイルでは、環境の構成とマッピングファイルの場所を定義できます.
configure() Loads a configuration file called compass.cfg.xml from the root of the class path.デフォルトではクラスパスの下からcompassを探します.cfg.xmlconfigure(String)Loads a configuration file from the specified path指定した位置から探す
(1)schemaベース構成
<compass-core-config xmlns="http://www.compass-project.org/schema/core-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.compass-project.org/schema/core-config
http://www.compass-project.org/schema/compass-core-config-2.2.xsd">
<compass name="default">
<connection>
<file path="target/test-index"/>
</connection>
<mappings>
<class name="test.Author" />
</mappings>
</compass>
</compass-core-config>

jdbc,トランザクション,アナライザ(such as converters,highlighters,analyzers,and so on)に基づく複雑な構成もあります
(2)jsonベースの構成
{
compass : {
engine : {
connection : "test-index"
},
event : {
preCreate : {
event1 : {
type : "test.MyEvent1"
},
event2 : {
type : "test.MyEvent2"
}
}
}
}
}

(3)dtd構成に基づく
<!DOCTYPE compass-core-configuration PUBLIC
"-//Compass/Compass Core Configuration DTD 2.2//EN"
"http://www.compass-project.org/dtd/compass-core-configuration-2.2.dtd">
<compass-core-configuration>
<compass>
<setting name="compass.engine.connection">my/index/dir</setting>
<meta-data resource="vocabulary/DublinCore.cmd.xml" />
<mapping resource="test/Author.cpm.xml" />
</compass>
</compass-core-configuration>

 
3 Compass取得
CompassConfigurationが構成されると、Compassインスタンスを作成できます.Compassは異なるアプリケーションスレッド間で共有されます.
次の簡単なコードでは、compassインスタンスの取得方法を説明します.
Compass compass = cfg.buildCompass();

 
注意:同じアプリケーションに複数のCompassインスタンスがあり、それぞれに異なる構成があります.
 
 
4 Compassの再構築
Compassでは、Compassから取得したCompassConfigurationインスタンスを使用してマッピングを動的に追加または削除できます.これにより、コンフィギュレーションオブジェクトでの変更が完了すると、Compassのrebuild()メソッドを呼び出すことができます.
Compass compass = cfg.buildCompass();
// ...
compass.getConfig().removeMappingByClass(A.class);
compass.getConifg().addClass(B.class);
compass.rebuild();

古いCompassインスタンスは短時間で閉じます.シャットダウン時間は構成パラメータcompassを用いることができる.rebuild.sleepBeforeClose制御.
 
5コールバックイベントの構成
Compassでは、Compassが指定した操作を使用しているときにトリガーされるイベント(保存操作など)を構成できます.
イベントリスナーの構成は、設定(settings)によって完了できます.たとえば、保存前のイベントリスナーを構成すると、次の構成パラメータが使用されます.
compass.event.preSave.mylistener.type、その値はリスナーの真のクラス名であってもよい