This project has retired. For details please refer to its Attic page.
PropertyMapper xref

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.chemistry.opencmis.client.mapper;
20  
21  import java.util.Properties;
22  
23  import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
24  
25  /**
26   * A property mapper is a class being responsible to map a Content-Type (e.g. image/jpeg)
27   * to a CMIS type id and to map and convert properties. Extracted tags are mapped to 
28   * CMIS property ids and sometimes type conversion is required (e.g. a string to a date).
29   * Classes implementing this interface are not responsible for extracting the metadata 
30   * (see MetadataParser). It only reads a configuration and maps properties. The 
31   * Configurator will read the configuration properties and instantiate implementations 
32   * of this interface (one instance per CMIS type)
33   * 
34   * @author Jens
35   *
36   */
37  public interface PropertyMapper {
38      
39      /**
40       * initialize a property mapper
41       * @param cfgPrefix
42       *      prefix for all configuration entries in properties file
43       * @param typeKey
44       *      type key in configuration used to identify this type
45       * @param properties
46       *      all properties read from resource mapping.properties
47       * @return
48       *      true, if processing should continue, false if not 
49       */
50      boolean initialize(String cfgPrefix, String typeKey, Properties properties);
51      
52      /**
53       * Reset all internal data to get ready for a new parsing process 
54       */
55      void reset();
56      
57      /**
58       * return the CMIS type id used for this mapper
59       * @return
60       *      CMIS type id to map this content type to or null if not mappable
61       */
62      String getMappedTypeId();
63      
64      /**
65       * return the CMIS property id for a found tag in a file
66       * @param key
67       *      tag (usually parsed from Tika) found in file
68       * @return
69       *      CMIS property this tag gets mapped to, null if not mapped
70       */
71      String getMappedPropertyId(String key);
72      
73      /**
74       * Convert a value parsed from the file to the type the corresponding property expects
75       * @param id
76       *      CMIS property id
77       * @param propertyType
78       *      property type from type definition
79       * @param strValue
80       *      value read from file (Tika always gives a string)
81       * @return
82       *      converted value conforming to the mapped property
83       */
84      Object convertValue(String id, PropertyDefinition<?> propDef, String strValue);
85  
86      /**
87       * get all content types handled by this parser
88       * @return
89       *      array with content types
90       */
91      public String[] getContentTypes();
92  
93  }