AnsweredAssumed Answered

No puedo ver los valores de metadatos

Question asked by durdy48 on Nov 30, 2007
Hola.
He realizado un bean con mi propio extractor de metadatos para plantillas de OpenOffice (que es una copia de OpenDocumentMetadataExtracter):


package es.juntadeandalucia.ceh.dgsief.metadata;

import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;

import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.namespace.QName;

import com.catcode.odf.ODFMetaFileAnalyzer;
import com.catcode.odf.OpenDocumentMetadata;


public class SPOpenOfficeMetadataExtracter extends AbstractMappingMetadataExtracter
{
    private static final String KEY_CREATION_DATE = "creationDate";
    private static final String KEY_CREATOR = "creator";
    private static final String KEY_DATE = "date";
    private static final String KEY_DESCRIPTION = "description";
    private static final String KEY_GENERATOR = "generator";
    private static final String KEY_INITIAL_CREATOR = "initialCreator";
    private static final String KEY_KEYWORD = "keyword";
    private static final String KEY_LANGUAGE = "language";
    private static final String KEY_PRINT_DATE = "printDate";
    private static final String KEY_PRINTED_BY = "printedBy";
    private static final String KEY_SUBJECT = "subject";
    private static final String KEY_TITLE = "title";
   
    public static String[] SUPPORTED_MIMETYPES = new String[] {
            MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT_TEMPLATE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_GRAPHICS,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_GRAPHICS_TEMPLATE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_PRESENTATION,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_PRESENTATION_TEMPLATE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_SPREADSHEET,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_SPREADSHEET_TEMPLATE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_CHART,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_CHART_TEMPLATE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_IMAGE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_IMAGE_TEMPLATE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_FORMULA,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_FORMULA_TEMPLATE,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT_MASTER,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT_WEB,
            MimetypeMap.MIMETYPE_OPENDOCUMENT_DATABASE };

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

    @Override
    public Map<String, Serializable> extractRaw(ContentReader reader) throws Throwable
    {
        Map<String, Serializable> rawProperties = newRawMap();
       
        //es.juntadeandalucia.ceh.dgsief.metadata.ODFMetaFileAnalyzer analyzer = new es.juntadeandalucia.ceh.dgsief.metadata.ODFMetaFileAnalyzer();
        ODFMetaFileAnalyzer analyzer = new ODFMetaFileAnalyzer();
        InputStream is = null;
        try
        {
            is = reader.getContentInputStream();
            // stream the document in
            //es.juntadeandalucia.ceh.dgsief.metadata.OpenDocumentMetadata docInfo = analyzer.analyzeZip(is);
            OpenDocumentMetadata docInfo = analyzer.analyzeZip(is);
            if (docInfo != null)
            {
                putRawValue(KEY_CREATION_DATE, docInfo.getCreationDate(), rawProperties);
                putRawValue(KEY_CREATOR, docInfo.getCreator(), rawProperties);
                putRawValue(KEY_DATE, docInfo.getDate(), rawProperties);
                putRawValue(KEY_DESCRIPTION, docInfo.getDescription(), rawProperties);
                putRawValue(KEY_GENERATOR, docInfo.getGenerator(), rawProperties);
                putRawValue(KEY_INITIAL_CREATOR, docInfo.getInitialCreator(), rawProperties);
                putRawValue(KEY_KEYWORD, docInfo.getKeyword(), rawProperties);
                putRawValue(KEY_LANGUAGE, docInfo.getLanguage(), rawProperties);
                putRawValue(KEY_PRINT_DATE, docInfo.getPrintDate(), rawProperties);
                putRawValue(KEY_PRINTED_BY, docInfo.getPrintedBy(), rawProperties);
                putRawValue(KEY_SUBJECT, docInfo.getSubject(), rawProperties);
                putRawValue(KEY_TITLE, docInfo.getTitle(), rawProperties);
               
               
                // Handle user-defined properties dynamically
                Map<String, Set<QName>> mapping = super.getMapping();
                Hashtable userDefinedProperties = docInfo.getUserDefined();
               // Extract those user properties for which there is a mapping
               for (String key : mapping.keySet())
               {
                   if (userDefinedProperties.containsKey(key))
                   {
                       Object value = userDefinedProperties.get(key);
                       if (value != null && value instanceof Serializable)
                       {
                           putRawValue(key, (Serializable) value, rawProperties);
                       }
                   }
               }
            }
        }
        finally
        {
            if (is != null)
            {
                try { is.close(); } catch (IOException e) {}
            }
        }
        // Done
        return rawProperties;
    }
   
}

Al ir depurando puedo comprobar que los valores de los metadatos se cargan perfectamente en la variable rawProperties  pero posteriormente en la pagina de propiedades del documento en la interfaz de usuario puedo ver las etiquetas con los metadatos pero no sus valores.

Tengo declarado un modelo de datos propio con un aspecto con todos los metadatos, además, tengo configurado el web-client-config-custom.xml


<?xml version="1.0" encoding="UTF-8"?>
<alfresco-config>

   <!– Configuracion de la vista por defecto –>
   <config evaluator="string-compare" condition="Views">
      <!– the views available in the client –>
      <views>
         <!– default values for the views available in the client –>
         <view-defaults>
            <browse>
               <!– allowable values: list|details|icons –>
               <view>details</view>
               <sort-column>typeTitle</sort-column>
               <page-size>
                  <list>50</list>
                  <details>50</details>
                  <icons>50</icons>
               </page-size>
            </browse>
            <navegacion_categorias>
               <!– allowable values: list|details|icons –>
               <view>details</view>
               <sort-column>typeTitle</sort-column>
               <page-size>
                  <list>50</list>
                  <details>50</details>
                  <icons>50</icons>
               </page-size>
            </navegacion_categorias>
         </view-defaults>
      </views>
   </config>

   <!– Aniadido el idioma castellano al cliente web –>
   <config evaluator="string-compare" condition="Languages">
      <languages>
         <language locale="es_ES">Espańol</language>
      </languages>
   </config>
   
   <config evaluator="aspect-name" condition="sp:metadatosSP">
      <property-sheet>
         <show-property name="sp:area"/>
         <show-property name="sp:asunto"/>
      <!– Se usa el aspecto Author para esta propiedad –>
      <!–
         <show-property name="sp:autor"/>
      –>
         <show-property name="sp:categoria"/>
         <show-property name="sp:comgenerales"/>
         <show-property name="sp:dirigidoa"/>
         <show-property name="sp:dueno"/>
         <show-property name="sp:formatodoc"/>
         <show-property name="sp:idlengua"/>
         <show-property name="sp:idversion"/>
         <show-property name="sp:localizacion"/>
         <show-property name="sp:niveldeseguridad"/>
         <show-property name="sp:palabrasclaves"/>
         <show-property name="sp:procedede"/>
         <show-property name="sp:proyecto"/>
         <show-property name="sp:resumen"/>
         <show-property name="sp:so"/>
         <show-property name="sp:softcreacion"/>
         <show-property name="sp:subarea"/>
         <show-property name="sp:subcategoria"/>
         <show-property name="sp:subproyecto"/>
         <show-property name="sp:tipodoc"/>
         <!– Se usa el aspecto Titled para esta propiedad –>
      <!–
         <show-property name="sp:titulo"/>
      –>
         <show-property name="sp:verso"/>
         <show-property name="sp:versoftcreacion"/>
         <show-property name="sp:consejeria"/>
         <show-property name="sp:dg"/>
         <show-property name="sp:servicio"/>
         <show-property name="sp:revision"/>
         <show-property name="sp:clasificacion"/>
      </property-sheet>
   </config>
   
   <config evaluator="string-compare" condition="Action Wizards">
      <aspects>
         <aspect name="sp:metadatosSP"/>
      </aspects>
   </config>


   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
         </content-types>
         <custom-properties>
            <meta-data aspect="sp:metadatosSP" property="sp:area" />
         <meta-data aspect="sp:metadatosSP" property="sp:asunto" />
         <!– Se usa el aspecto Author para esta propiedad –>
         <!–
         <meta-data aspect="sp:metadatosSP" property="sp:autor" />
         –>
         <meta-data aspect="sp:metadatosSP" property="sp:categoria" />
         <meta-data aspect="sp:metadatosSP" property="sp:comgenerales" />
         <meta-data aspect="sp:metadatosSP" property="sp:dirigidoa" />
         <meta-data aspect="sp:metadatosSP" property="sp:dueno" />
         <meta-data aspect="sp:metadatosSP" property="sp:formatodoc" />
         <meta-data aspect="sp:metadatosSP" property="sp:idlengua" />
         <meta-data aspect="sp:metadatosSP" property="sp:idversion" />
         <meta-data aspect="sp:metadatosSP" property="sp:localizacion" />
         <meta-data aspect="sp:metadatosSP" property="sp:niveldeseguridad" />
         <meta-data aspect="sp:metadatosSP" property="sp:palabrasclaves" />
         <meta-data aspect="sp:metadatosSP" property="sp:procedede" />
         <meta-data aspect="sp:metadatosSP" property="sp:proyecto" />
         <meta-data aspect="sp:metadatosSP" property="sp:resumen" />
         <meta-data aspect="sp:metadatosSP" property="sp:so" />
         <meta-data aspect="sp:metadatosSP" property="sp:softcreacion" />
         <meta-data aspect="sp:metadatosSP" property="sp:subarea" />
         <meta-data aspect="sp:metadatosSP" property="sp:subcategoria" />
         <meta-data aspect="sp:metadatosSP" property="sp:subproyecto" />
         <meta-data aspect="sp:metadatosSP" property="sp:tipodoc" />
         <!– Se usa el aspecto Titled para esta propiedad –>
         <!–
         <meta-data aspect="sp:metadatosSP" property="sp:titulo" />
         –>
         <meta-data aspect="sp:metadatosSP" property="sp:verso" />
         <meta-data aspect="sp:metadatosSP" property="sp:versoftcreacion" />
         <meta-data aspect="sp:metadatosSP" property="sp:consejeria" />
         <meta-data aspect="sp:metadatosSP" property="sp:dg" />
         <meta-data aspect="sp:metadatosSP" property="sp:servicio" />
         <meta-data aspect="sp:metadatosSP" property="sp:revision" />
         <meta-data aspect="sp:metadatosSP" property="sp:clasificacion" />
         </custom-properties>
      </advanced-search>
   </config>

   

</alfresco-config>


¿Por qué no puedo ver los valores de mis metadatos en la web y si los tengo cargados en el bean?

El bean lo declaro en custom-metadata-extractors-context.xml:

<bean id="extracter.OpenDocument" class="es.juntadeandalucia.ceh.dgsief.metadata.SPOpenOfficeMetadataExtracter" parent="baseMetadataExtracter" >
        <property name="inheritDefaultMapping">
            <value>true</value>
        </property>
        <property name="mappingProperties">
            <props>
                   <prop key="namespace.prefix.sp">http://www.juntadeandalucia.es/economiayhacienda/sief/sp</prop>
                   <prop key="Area">sp:area</prop>
                   <prop key="Asunto">sp:asunto</prop>
                   <prop key="Autor">sp:autor</prop>
                   <prop key="Categoria">sp:categoria</prop>
                   <prop key="ComGenerales">sp:comgenerales</prop>
                   <prop key="DirigidoA">sp:dirigidoa</prop>
                   <prop key="Dueno">sp:dueno</prop>
                   <prop key="FormatoDoc">sp:formatodoc</prop>
                   <prop key="IdLengua">sp:idlengua</prop>
                   <prop key="IdVersion">sp:idversion</prop>
                   <prop key="Localizacion">sp:localizacion</prop>
                   <prop key="NivelDeSeguridad">sp:niveldeseguridad</prop>
                   <prop key="PalabrasClaves">sp:palabrasclaves</prop>
                   <prop key="ProcedeDe">sp:procedede</prop>
                   <prop key="Proyecto">sp:proyecto</prop>
                   <prop key="Resumen">sp:resumen</prop>
                   <prop key="SO">sp:so</prop>
                   <prop key="SoftCreacion">sp:softcreacion</prop>
                   <prop key="SubArea">sp:subarea</prop>
                   <prop key="SubCategoria">sp:subcategoria</prop>
                   <prop key="SubProyecto">sp:subproyecto</prop>
                   <prop key="TipoDoc">sp:tipodoc</prop>
                   <prop key="Titulo">sp:titulo</prop>
                   <prop key="VerSO">sp:verso</prop>
                   <prop key="VerSoftCreacion">sp:versoftcreacion</prop>
                   <prop key="Consejeria">sp:consejeria</prop>
                   <prop key="DG">sp:dg</prop>
                   <prop key="Servicio">sp:servicio</prop>
                   <prop key="Revision">sp:v</prop>
                   <prop key="Clasificacion">sp:clasificacion</prop>
            </props>
        </property>
    </bean>


MUCHAS GRACIAS POR LA AYUDA

Outcomes