AnsweredAssumed Answered

XMLからのメタデータ抽出について

Question asked by sato on Nov 27, 2014
Latest reply on Nov 28, 2014 by sato
いつもお世話になっております、佐藤と申します。

XMLファイルを文書ライブラリに保存したとき、XMLファイルから指定したメタデータを自動的に抽出して、カスタム属性にセットするプログラムにトライしています。書籍「Alfresco 3 Business Solutions」を参考にしてプログラミングしているのですが、メタデータをカスタム属性にセットすることができていません。

以下のようなコーディングなのですが、誤りや過不足など、おわかりになることがありましたらご教示いただけないでしょうか。たびたびすみませんが、何卒宜しくお願い致します。

▼test.xml
「てすと」を抽出してカスタム属性にセットしたいです。
<pre>

<test>
<title>てすと</title>
</test>

</pre>

▼GakusanXMLMetadataExtractor.java
メタデータ抽出プログラムです(test.xml の title を抽出することを期待しています)。
<pre>

package jp.sato.xml;

public class GakusanXMLMetadataExtractor extends AbstractMappingMetadataExtracter {

    private static final String KEY_TITLE = "title";
    public static String[] SUPPORTED_MIMETYPES = new String[] { MimetypeMap.MIMETYPE_XML };

    public GakusanXMLMetadataExtractor () {
        super(new HashSet<String>(Arrays.asList(SUPPORTED_MIMETYPES)));
    }

    @Override
    public Map<String, Serializable> extractRaw( ContentReader reader) throws Throwable {
        Map<String, Serializable> rawProperties = newRawMap();
        InputStream is = null;
        try {
            is = reader.getContentInputStream();
            String titleValue = null;
            boolean wasAdded = putRawValue(KEY_TITLE, titleValue, rawProperties);
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) { /* log error */ }
            }
        }
        return rawProperties;
    }
}

</pre>

▼GakusanXMLMetadataExtractor.properties
javaと同じディレクトリにあります(カスタム属性 gm:bookName に title の値が入ることを期待しています)。
<pre>

# Namespaces
namespace.prefix.gm=http://www.alfresco.org/model/gm/1.0
# Mappings
title=gm:bookName

</pre>

▼custom-metadata-extrators-context.xml
/opt/alfresco-5.0.a/tomcat/shared/classes/alfresco/extension にあります。
<pre>

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
    <bean id="extracter.XML" class="jp.sato.xml.GakusanXMLMetadataExtractor" parent="baseMetadataExtracter" >
        <property name="inheritDefaultMapping">
            <value>true</value>
        </property>
        <property name="mappingProperties">
            <props>
                <prop key="namespace.prefix.gm">http://www.alfresco.org/model/gm/1.0</prop>
                <prop key="title">gm:bookName</prop>
            </props>
        </property>
    </bean>
</beans>

</pre>

▼jar
/opt/alfresco-5.0.a/tomcat/webapps/alfresco/WEB-INF/lib に jar を保存しています。
<pre>

# pwd
/opt/alfresco-5.0.a/tomcat/webapps/alfresco/WEB-INF/lib
# jar tvf GakusanXMLMetadataExtractor.jar
     0 Thu Nov 27 18:38:14 JST 2014 META-INF/
    68 Thu Nov 27 18:38:14 JST 2014 META-INF/MANIFEST.MF
     0 Thu Nov 27 18:37:14 JST 2014 jp/
     0 Thu Nov 27 16:21:58 JST 2014 jp/sato/
     0 Thu Nov 27 18:38:14 JST 2014 jp/sato/xml/
   197 Thu Nov 27 18:37:02 JST 2014 jp/sato/xml/GakusanXMLMetadataExtractor.properties
  1575 Thu Nov 27 18:37:42 JST 2014 jp/sato/xml/GakusanXMLMetadataExtractor.class
  2132 Thu Nov 27 18:34:50 JST 2014 jp/sato/xml/GakusanXMLMetadataExtractor.java

</pre>

宜しくお願い致します。

Outcomes