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;