KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > alfresco > jcr > dictionary > DataTypeMap


1 /*
2  * Copyright (C) 2005 Alfresco, Inc.
3  *
4  * Licensed under the Mozilla Public License version 1.1
5  * with a permitted attribution clause. You may obtain a
6  * copy of the License at
7  *
8  * http://www.alfresco.org/legal/license.txt
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software distributed under the License is distributed on an
12  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13  * either express or implied. See the License for the specific
14  * language governing permissions and limitations under the
15  * License.
16  */

17 package org.alfresco.jcr.dictionary;
18
19 import java.util.HashMap JavaDoc;
20 import java.util.Map JavaDoc;
21
22 import javax.jcr.PropertyType;
23 import javax.jcr.RepositoryException;
24
25 import org.alfresco.error.AlfrescoRuntimeException;
26 import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
27 import org.alfresco.service.namespace.QName;
28
29
30 /**
31  * Responsible for mapping Alfresco Data Types to JCR Property Types and vice versa.
32  *
33  * @author David Caruana
34  */

35 public class DataTypeMap
36 {
37
38     /** Map of Alfresco Data Type to JCR Property Type */
39     private static Map JavaDoc<QName, Integer JavaDoc> dataTypeToPropertyType = new HashMap JavaDoc<QName, Integer JavaDoc>();
40     static
41     {
42         dataTypeToPropertyType.put(DataTypeDefinition.TEXT, PropertyType.STRING);
43         dataTypeToPropertyType.put(DataTypeDefinition.CONTENT, PropertyType.BINARY);
44         dataTypeToPropertyType.put(DataTypeDefinition.INT, PropertyType.LONG);
45         dataTypeToPropertyType.put(DataTypeDefinition.LONG, PropertyType.LONG);
46         dataTypeToPropertyType.put(DataTypeDefinition.FLOAT, PropertyType.DOUBLE);
47         dataTypeToPropertyType.put(DataTypeDefinition.DOUBLE, PropertyType.DOUBLE);
48         dataTypeToPropertyType.put(DataTypeDefinition.DATE, PropertyType.DATE);
49         dataTypeToPropertyType.put(DataTypeDefinition.DATETIME, PropertyType.DATE);
50         dataTypeToPropertyType.put(DataTypeDefinition.BOOLEAN, PropertyType.BOOLEAN);
51         dataTypeToPropertyType.put(DataTypeDefinition.QNAME, PropertyType.NAME);
52         dataTypeToPropertyType.put(DataTypeDefinition.CATEGORY, PropertyType.STRING); // TODO: Check this mapping
53
dataTypeToPropertyType.put(DataTypeDefinition.NODE_REF, PropertyType.REFERENCE);
54         dataTypeToPropertyType.put(DataTypeDefinition.PATH, PropertyType.PATH);
55         dataTypeToPropertyType.put(DataTypeDefinition.ANY, PropertyType.UNDEFINED);
56     }
57     
58     /** Map of JCR Property Type to Alfresco Data Type */
59     private static Map JavaDoc<Integer JavaDoc, QName> propertyTypeToDataType = new HashMap JavaDoc<Integer JavaDoc, QName>();
60     static
61     {
62         propertyTypeToDataType.put(PropertyType.STRING, DataTypeDefinition.TEXT);
63         propertyTypeToDataType.put(PropertyType.BINARY, DataTypeDefinition.CONTENT);
64         propertyTypeToDataType.put(PropertyType.LONG, DataTypeDefinition.LONG);
65         propertyTypeToDataType.put(PropertyType.DOUBLE, DataTypeDefinition.DOUBLE);
66         propertyTypeToDataType.put(PropertyType.DATE, DataTypeDefinition.DATETIME);
67         propertyTypeToDataType.put(PropertyType.BOOLEAN, DataTypeDefinition.BOOLEAN);
68         propertyTypeToDataType.put(PropertyType.NAME, DataTypeDefinition.QNAME);
69         propertyTypeToDataType.put(PropertyType.REFERENCE, DataTypeDefinition.NODE_REF);
70         propertyTypeToDataType.put(PropertyType.PATH, DataTypeDefinition.PATH);
71         propertyTypeToDataType.put(PropertyType.UNDEFINED, DataTypeDefinition.ANY);
72     }
73     
74     /**
75      * Convert an Alfresco Data Type to a JCR Property Type
76      *
77      * @param datatype alfresco data type
78      * @return JCR property type
79      * @throws RepositoryException
80      */

81     public static int convertDataTypeToPropertyType(QName datatype)
82     {
83         Integer JavaDoc propertyType = dataTypeToPropertyType.get(datatype);
84         if (propertyType == null)
85         {
86             throw new AlfrescoRuntimeException("Cannot map Alfresco data type " + datatype + " to JCR property type.");
87         }
88         return propertyType;
89     }
90
91     /**
92      * Convert a JCR Property Type to an Alfresco Data Type
93      *
94      * @param propertyType JCR property type
95      * @return alfresco data type
96      * @throws RepositoryException
97      */

98     public static QName convertPropertyTypeToDataType(int propertyType)
99     {
100         QName type = propertyTypeToDataType.get(propertyType);
101         if (type == null)
102         {
103             throw new AlfrescoRuntimeException("Cannot map JCR property type " + propertyType + " to Alfresco data type.");
104         }
105         return type;
106     }
107
108 }
109
Popular Tags