diff --git a/config/alfresco/model/contentModel.xml b/config/alfresco/model/contentModel.xml
index e6ec2de0f6..a598c6baee 100644
--- a/config/alfresco/model/contentModel.xml
+++ b/config/alfresco/model/contentModel.xml
@@ -1223,7 +1223,7 @@
F Number
- d:text
+ d:double
Flash Activated
@@ -1231,7 +1231,7 @@
Focal Length
- d:int
+ d:double
ISO Speed
@@ -1255,11 +1255,11 @@
Horizontal Resolution
- d:int
+ d:double
Vertical Resolution
- d:int
+ d:double
Resolution Unit
diff --git a/source/java/org/alfresco/repo/content/metadata/PoiMetadataExtracterTest.java b/source/java/org/alfresco/repo/content/metadata/PoiMetadataExtracterTest.java
index 22f5f6d6e6..aab96351ea 100644
--- a/source/java/org/alfresco/repo/content/metadata/PoiMetadataExtracterTest.java
+++ b/source/java/org/alfresco/repo/content/metadata/PoiMetadataExtracterTest.java
@@ -87,7 +87,7 @@ public class PoiMetadataExtracterTest extends AbstractMetadataExtracterTest
}
else if (MimetypeMap.MIMETYPE_OPENXML_SPREADSHEET.equals(mimetype))
{
- checkFileCreationDate(mimetype, properties, "1996-10-14T23:33:28.000+01:00");
+ checkFileCreationDate(mimetype, properties, "1996-10-15T00:33:28.000+01:00");
}
else if (MimetypeMap.MIMETYPE_OPENXML_PRESENTATION.equals(mimetype))
{
diff --git a/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracter.properties b/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracter.properties
index de6520459b..68cc261647 100644
--- a/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracter.properties
+++ b/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracter.properties
@@ -10,6 +10,7 @@
# Namespaces
namespace.prefix.cm=http://www.alfresco.org/model/content/1.0
+namespace.prefix.exif=http://www.alfresco.org/model/exif/1.0
# Mappings
author=cm:author
@@ -19,5 +20,19 @@ created=cm:created
geo\:lat=cm:latitude
geo\:long=cm:longitude
-#tiff\:ImageWidth=cm:imageWidth
-#tiff\:ImageLength=cm:imageHeight
\ No newline at end of file
+
+tiff\:ImageWidth=exif:pixelXDimension
+tiff\:ImageLength=exif:pixelYDimension
+tiff\:Make=exif:manufacturer
+tiff\:Model=exif:model
+tiff\:Software=exif:software
+tiff\:Orientation=exif:orientation
+tiff\:XResolution=exif:xResolution
+tiff\:YResolution=exif:yResolution
+tiff\:ResolutionUnit=exif:resolutionUnit
+exif\:Flash=exif:flash
+exif\:ExposureTime=exif:exposureTime
+exif\:FNumber=exif:fNumber
+exif\:FocalLength=exif:focalLength
+exif\:IsoSpeedRatings=exif:isoSpeedRatings
+exif\:DateTimeOriginal=exif:dateTimeOriginal
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracterTest.java b/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracterTest.java
index 8858b9b4a2..955250438e 100644
--- a/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracterTest.java
+++ b/source/java/org/alfresco/repo/content/metadata/TikaAutoMetadataExtracterTest.java
@@ -34,6 +34,7 @@ import org.alfresco.repo.content.filestore.FileContentReader;
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;
@@ -218,16 +219,37 @@ public class TikaAutoMetadataExtracterTest extends AbstractMetadataExtracterTest
assertEquals("68 pixels", p.get("Image Height"));
assertEquals("8 bits", p.get("Data Precision"));
assertEquals(QUICK_TITLE, p.get("Comments"));
+ // Check namespace'd Tika properties
assertEquals("12.54321", p.get("geo:lat"));
assertEquals("-54.1234", p.get("geo:long"));
+ assertEquals("100", p.get("tiff:ImageWidth"));
+ assertEquals("68", p.get("tiff:ImageLength"));
+ assertEquals("Canon", p.get("tiff:Make"));
+ assertEquals("5.6", p.get("exif:FNumber"));
// Map and check
Map properties = new HashMap();
ContentReader reader = new FileContentReader(open("GEO.jpg"));
reader.setMimetype("image/jpeg");
extracter.extract(reader, properties);
- assertEquals(12.54321, properties.get(QName.createQName("http://www.alfresco.org/model/content/1.0","latitude")));
- assertEquals(-54.1234, properties.get(QName.createQName("http://www.alfresco.org/model/content/1.0","longitude")));
+ // Check the geo bits
+ assertEquals(12.54321, properties.get(ContentModel.PROP_LATITUDE));
+ assertEquals(-54.1234, properties.get(ContentModel.PROP_LONGITUDE));
+ // Check the exif bits
+ assertEquals(100, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "pixelXDimension")));
+ assertEquals(68, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "pixelYDimension")));
+ assertEquals(0.000625, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "exposureTime")));
+ assertEquals(5.6, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "fNumber")));
+ assertEquals(false, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "flash")));
+ assertEquals(194.0, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "focalLength")));
+ assertEquals("400", properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "isoSpeedRatings")));
+ assertEquals("Canon", properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "manufacturer")));
+ assertEquals("Canon EOS 40D", properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "model")));
+ assertEquals("Adobe Photoshop CS3 Macintosh", properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "software")));
+ assertEquals(null, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "orientation")));
+ assertEquals(240.0, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "xResolution")));
+ assertEquals(240.0, properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "yResolution")));
+ assertEquals("Inch", properties.get(QName.createQName(NamespaceService.EXIF_MODEL_1_0_URI, "resolutionUnit")));
}
private File open(String fileBase) throws Throwable {
String filename = "quick" + fileBase;