blob: 3564851fcb258169af88dd63c552eb8be2c70942 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.chemistry.opencmis.tools.mapper;
import java.util.Properties;
import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
/**
* A property mapper is a class being responsible to map a Content-Type (e.g. image/jpeg)
* to a CMIS type id and to map and convert properties. Extracted tags are mapped to
* CMIS property ids and sometimes type conversion is required (e.g. a string to a date).
* Classes implementing this interface are not responsible for extracting the metadata
* (see MetadataParser). It only reads a configuration and maps properties. The
* Configurator will read the configuration properties and instantiate implementations
* of this interface (one instance per CMIS type)
*/
public interface PropertyMapper {
/**
* initialize a property mapper
* @param cfgPrefix
* prefix for all configuration entries in properties file
* @param typeKey
* type key in configuration used to identify this type
* @param properties
* all properties read from resource mapping.properties
* @return
* true, if processing should continue, false if not
*/
boolean initialize(String cfgPrefix, String typeKey, Properties properties);
/**
* Reset all internal data to get ready for a new parsing process
*/
void reset();
/**
* return the CMIS type id used for this mapper
* @return
* CMIS type id to map this content type to or null if not mappable
*/
String getMappedTypeId();
/**
* return the CMIS property id for a found tag in a file
* @param key
* tag (usually parsed from Tika) found in file
* @return
* CMIS property this tag gets mapped to, null if not mapped
*/
String getMappedPropertyId(String key);
/**
* Convert a value parsed from the file to the type the corresponding property expects
* @param id
* CMIS property id
* @param propertyType
* property type from type definition
* @param strValue
* value read from file (Tika always gives a string)
* @return
* converted value conforming to the mapped property
*/
Object convertValue(String id, PropertyDefinition<?> propDef, String strValue);
/**
* get all content types handled by this parser
* @return
* array with content types
*/
String[] getContentTypes();
}