Author: mir
Date: Tue Dec 22 18:48:50 2009
New Revision: 893269

URL: http://svn.apache.org/viewvc?rev=893269&view=rev
Log:
CLEREZZA-38: platform.content.representations is now a multimodule project. 
implemented Thumbnails service

Added:
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/
   (with props)
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/pom.xml
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/AlternativeRepresentationGenerator.java
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/ThumbnailService.java
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/
   (with props)
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/pom.xml
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/representations/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/representations/ontologies/
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/representations/ontologies/representations.rdf
Removed:
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/src/
Modified:
    
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/pom.xml

Propchange: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Dec 22 18:48:50 2009
@@ -0,0 +1 @@
+target

Added: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/pom.xml?rev=893269&view=auto
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/pom.xml
 (added)
+++ 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/pom.xml
 Tue Dec 22 18:48:50 2009
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><project 
xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               
<artifactId>org.apache.clerezza.platform.content.representations</artifactId>
+               <groupId>org.apache.clerezza</groupId>
+               <version>0.1-incubating-SNAPSHOT</version>
+       </parent>
+       <groupId>org.apache.clerezza</groupId>
+       
<artifactId>org.apache.clerezza.platform.content.representations.core</artifactId>
+       <version>0.1-incubating-SNAPSHOT</version>
+       <packaging>bundle</packaging>
+       <name>Clerezza - Platform Content Representations Core</name>
+       <description>Provides a Meta Data Generator that generates alternative
+               representations for data of     various meta types</description>
+       <dependencies>
+               <dependency>
+                       <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.compendium</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>org.apache.clerezza.rdf.core</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>org.apache.clerezza.rdf.utils</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       
<artifactId>org.apache.clerezza.platform.content</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       
<artifactId>org.apache.clerezza.utils.imageprocessing</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       
<artifactId>org.apache.clerezza.web.resources.style</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       
<artifactId>org.apache.clerezza.platform.content.representations.ontologies</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.felix</groupId>
+                       
<artifactId>org.apache.felix.scr.annotations</artifactId>
+               </dependency>
+       </dependencies>
+</project>

Added: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/AlternativeRepresentationGenerator.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/AlternativeRepresentationGenerator.java?rev=893269&view=auto
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/AlternativeRepresentationGenerator.java
 (added)
+++ 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/AlternativeRepresentationGenerator.java
 Tue Dec 22 18:48:50 2009
@@ -0,0 +1,183 @@
+/*
+ * 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.clerezza.platform.content.representations.core;
+
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import javax.imageio.ImageIO;
+import javax.ws.rs.core.MediaType;
+import org.apache.clerezza.platform.content.DiscobitsHandler;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.utils.imageprocessing.ImageProcessor;
+import org.apache.clerezza.rdf.ontologies.DISCOBITS;
+import org.apache.clerezza.rdf.utils.GraphNode;
+import org.apache.clerezza.platform.content.MetaDataGenerator;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * This class provides a method that generates a thumbnail for specified data
+ * if the specified media type is supported. The supported media types are 
"image/*".
+ * The generated thumbnail is added as a property to the specified
+ * <code>GraphNode</code>. The property URI is
+ * "http://discobits.org/ontology#thumbnail";.
+ *
+ * @author mir
+ */
+...@component(metatype=true)
+...@service(MetaDataGenerator.class)
+public class AlternativeRepresentationGenerator implements MetaDataGenerator {
+
+       private static class Resolution {
+
+               private int width;
+
+               private int height;
+               /**
+                * Takes a String, which contains a resoultion in the format
+                * [width]x[height].
+                *
+                * @param resoulutionString
+                */
+               public Resolution(String resoulutionString) {
+                       String[] widthAndHeight = resoulutionString.split("x");
+                       width = new Integer(widthAndHeight[0]);
+                       height = new Integer(widthAndHeight[1]);
+               }
+
+               public int getHeight() {
+                       return height;
+               }
+
+               public int getWidth() {
+                       return width;
+               }
+       }
+
+       @Reference
+       private ImageProcessor imageProcessor;
+       @Property(value="100x100", description="Specifies the resolutions of 
alternative" +
+                       " representations in the format [width]x[height]. 
Multiple resolutions" +
+                       " are separated by comma (e.g. 100x100,30x30)")
+       public static final String RESOLUTIONS = "resolutions";
+       
+       private volatile ServiceTracker discobitTracker;
+       private Resolution[] resolutions;
+
+       /**
+        * Indicates if data given to the AlternativeRepresentationGenerator is 
a
+        * alternative representation itself and therefore does not have to 
have a
+        * alternative representation generated for it.
+        */
+       private ThreadLocal<Boolean> isAltRepresentation = new 
ThreadLocal<Boolean>() {
+
+               @Override
+               protected Boolean initialValue() {
+                       return false;
+               }
+       };
+
+       protected void activate(ComponentContext context) {
+               setupResolutionArray((String) 
context.getProperties().get(RESOLUTIONS));
+               discobitTracker = new ServiceTracker(context.getBundleContext(),
+                               DiscobitsHandler.class.getName(), null);
+               new Thread() {
+                       @Override
+                       public void run() {
+                               discobitTracker.open();
+                       }
+               }.start();
+       }
+
+       private void setupResolutionArray(String resolutionsString) {
+               String[] resoultionStrings = resolutionsString.split(",");
+               resolutions = new Resolution[resoultionStrings.length];
+               for (int i = 0; i < resoultionStrings.length; i++) {
+                       resolutions[i] = new 
Resolution(resoultionStrings[i].trim());
+               }
+       }
+
+       protected void deactivate(ComponentContext context) {
+               discobitTracker.close();
+               discobitTracker = null;
+       }
+
+       @Override
+       public void generate(GraphNode node, byte[] data, MediaType mediaType) {
+               if (isAltRepresentation.get()) {
+                       return;
+               }
+               if (mediaType.getType().startsWith("image")) {
+                       try {
+                               isAltRepresentation.set(Boolean.TRUE);
+                               BufferedImage buffImage = ImageIO.read(new 
ByteArrayInputStream(data));
+                               int imgWidth = buffImage.getWidth();
+                               int imgHeigth = buffImage.getHeight();
+                               for (Resolution resolution : resolutions) {
+                                       if (imgWidth > resolution.getWidth() ||
+                                                       imgHeigth > 
resolution.getHeight()){
+                                               BufferedImage alternativeImage 
= imageProcessor.makeAThumbnail(
+                                                               buffImage, 
resolution.getWidth(), resolution.getHeight());
+                                               byte[] alternativeImageBytes = 
bufferedImage2ByteArray(alternativeImage, mediaType);
+                                               DiscobitsHandler contentHandler 
= (DiscobitsHandler)discobitTracker.getService();
+                                               UriRef thumbnailUri = 
createThumbnailUri((UriRef) node.getNode(), alternativeImage);
+                                               
contentHandler.put(thumbnailUri, mediaType, alternativeImageBytes);
+                                               
node.addProperty(DISCOBITS.thumbnail, thumbnailUri);
+                                       }
+                               }
+                       } catch (IOException ex) {
+                               throw new RuntimeException(ex);
+                       } finally {
+                               isAltRepresentation.set(Boolean.FALSE);
+                       }
+               }
+       }
+
+       private byte[] bufferedImage2ByteArray(BufferedImage image,
+                       MediaType mediaType) throws IOException {
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               ImageIO.write(image, mediaType.getSubtype(), baos);
+               byte[] bytes = baos.toByteArray();
+               baos.flush();
+               return bytes;
+       }
+
+       private UriRef createThumbnailUri(UriRef uriRef, BufferedImage img) {
+               String resolution = "-" + img.getWidth() + "x" + 
img.getHeight();
+               String oldUri = uriRef.getUnicodeString();
+               String newUri;
+               int lastIndexOfDot = oldUri.lastIndexOf(".");
+               int lastIndexOfSlash = oldUri.lastIndexOf("/");
+               if (lastIndexOfSlash < lastIndexOfDot &&
+                               lastIndexOfDot >= (oldUri.length() - 6)) {
+                       String firstPart = oldUri.substring(0, lastIndexOfDot);
+                       String lastPart = oldUri.substring(lastIndexOfDot, 
oldUri.length());
+                       newUri = firstPart + resolution + lastPart;
+               } else {
+                       newUri = oldUri + resolution;
+               }
+               return new UriRef(newUri);
+       }
+}

Added: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/ThumbnailService.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/ThumbnailService.java?rev=893269&view=auto
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/ThumbnailService.java
 (added)
+++ 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.core/src/main/java/org/apache/clerezza/platform/content/representations/core/ThumbnailService.java
 Tue Dec 22 18:48:50 2009
@@ -0,0 +1,155 @@
+/*
+ * 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.clerezza.platform.content.representations.core;
+
+import java.net.URI;
+import java.util.Iterator;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.apache.clerezza.platform.config.PlatformConfig;
+import 
org.apache.clerezza.platform.content.representations.ontologies.REPRESENTATIONS;
+import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
+import org.apache.clerezza.rdf.core.InvalidLiteralTypeException;
+import org.apache.clerezza.rdf.core.LiteralFactory;
+import org.apache.clerezza.rdf.core.NoConvertorException;
+import org.apache.clerezza.rdf.core.NonLiteral;
+import org.apache.clerezza.rdf.core.Resource;
+import org.apache.clerezza.rdf.core.TypedLiteral;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.apache.clerezza.rdf.ontologies.DISCOBITS;
+import org.apache.clerezza.rdf.ontologies.EXIF;
+import org.apache.clerezza.rdf.utils.GraphNode;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * This JAX-RS resource provides a method to retrieve the uri to
+ * the thumbnail or a other small representation of a InfoDiscoBit.
+ * 
+ * @author mir
+ */
+...@component
+...@service(value = Object.class)
+...@property(name = "javax.ws.rs", boolValue = true)
+...@path("thumbnail-service")
+public class ThumbnailService {
+
+       @Reference
+       ContentGraphProvider cgProvider;
+
+       @Reference
+       PlatformConfig config;
+
+       private UriRef defaultIconUri;
+
+       protected void activate(ComponentContext context) {
+               String baseUri = config.getDefaultBaseUri().getUnicodeString();
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/text/plain.png"), MediaType.TEXT_PLAIN);
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/msword.png"), "application/msword");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/x-amf.png"), 
"application/x-shockwave-flash");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/pdf.png"), "application/pdf");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/vnd.ms-powerpoint.png"), 
"application/vnd.ms-powerpoint");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/x-tar.png"), "application/x-tar");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/x-amf.png"), "application/x-amf");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/vnd.ms-excel.png"), 
"application/vnd.ms-excel");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/application/octet-stream.png"), 
"application/octet-stream");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/audio/any.png"), "audio/x-wav");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/audio/any.png"), "audio/mpeg");
+               addMediaTypeIcon(createUriRef(baseUri, 
"style/images/icons/mediatype/audio/any.png"), "audio/mid");
+               defaultIconUri = createUriRef(baseUri, 
"style/images/icons/mediatype/any.png");
+       }
+
+       private UriRef createUriRef(String baseUri, String relativeUri) {
+               return new UriRef(baseUri + relativeUri);
+       }
+
+       private void addMediaTypeIcon(UriRef icon, String type) {
+               cgProvider.getContentGraph().add(
+                               new TripleImpl(icon, REPRESENTATIONS.isIconFor ,
+                               
LiteralFactory.getInstance().createTypedLiteral(type)));
+       }
+
+       /**
+        * Returns the thumbnail uri for a specified InfoDiscoBit. If no 
thumbnail
+        * is available then the uri of the icon representing the media type is
+        * returned. If also no media type icon is available the uri to default
+        * icon is returned.
+        * @param infoBitUri
+        * @return
+        */
+       @GET
+       public Response getThumbnailUri(@QueryParam("uri") UriRef infoBitUri,
+                       @QueryParam("width") Integer width,
+                       @QueryParam("height") Integer height) {         
+               if (width == null) {
+                       width = Integer.MAX_VALUE;
+               }
+               if (height == null) {
+                       height = Integer.MAX_VALUE;
+               }
+               GraphNode infoBitNode = new GraphNode(infoBitUri, 
cgProvider.getContentGraph());
+               UriRef thumbnailUri = getThumbnailUri(infoBitNode, height, 
width);
+               if (thumbnailUri != null) {
+                       return Response.seeOther(
+                                       
URI.create((thumbnailUri).getUnicodeString())).build();
+               }               
+               Iterator<Resource> mediaTypes = 
infoBitNode.getObjects(DISCOBITS.mediaType);
+               if (mediaTypes.hasNext()) {
+                       GraphNode mediaType = new GraphNode(mediaTypes.next(), 
+                                       cgProvider.getContentGraph());
+                       
+                       Iterator<NonLiteral> icons = 
mediaType.getSubjects(REPRESENTATIONS.isIconFor);
+                       if (icons.hasNext()) {
+                               return Response.seeOther(
+                                       
URI.create(((UriRef)icons.next()).getUnicodeString())).build();
+                       }
+               }
+               return 
Response.seeOther(URI.create(defaultIconUri.getUnicodeString())).build();
+       }
+
+       private UriRef getThumbnailUri(GraphNode infoBitNode, Integer height,
+                       Integer width) {
+               UriRef resultThumbnailUri = null;
+               int pixels = 0;
+               Iterator<Resource> thumbnails = 
infoBitNode.getObjects(DISCOBITS.thumbnail);
+               while (thumbnails.hasNext()) {
+                       UriRef thumbnailUri = (UriRef) thumbnails.next();
+                       GraphNode thumbnailNode = new GraphNode(thumbnailUri, 
+                                       cgProvider.getContentGraph());
+                       Integer thumbnailWidth = 
LiteralFactory.getInstance().createObject(
+                                       Integer.class, (TypedLiteral) 
thumbnailNode.getObjects(EXIF.width).next());
+                       Integer thumbnailHeight = 
LiteralFactory.getInstance().createObject(
+                                       Integer.class, (TypedLiteral) 
thumbnailNode.getObjects(EXIF.height).next());
+                       int thumbnailPixels = thumbnailWidth * thumbnailHeight;
+                       if (thumbnailHeight <= height && thumbnailWidth <= 
width && thumbnailPixels > pixels) {
+                               resultThumbnailUri = thumbnailUri;
+                               pixels = thumbnailPixels;
+                       }
+               }
+               return resultThumbnailUri;
+       }
+}
\ No newline at end of file

Propchange: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Dec 22 18:48:50 2009
@@ -0,0 +1 @@
+target

Added: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/pom.xml?rev=893269&view=auto
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/pom.xml
 (added)
+++ 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/pom.xml
 Tue Dec 22 18:48:50 2009
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><project 
xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.apache.clerezza</groupId>
+               
<artifactId>org.apache.clerezza.platform.content.representations</artifactId>
+               <version>0.1-incubating-SNAPSHOT</version>
+       </parent>
+       <groupId>org.apache.clerezza</groupId>
+       
<artifactId>org.apache.clerezza.platform.content.representations.ontologies</artifactId>
+       <version>0.1-incubating-SNAPSHOT</version>
+       <packaging>bundle</packaging>
+       <name>Clerezza - Platform Content Representations Ontologies</name>
+       <description>
+               Representations Ontologies
+       </description>
+       <dependencies>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>org.apache.clerezza.rdf.core</artifactId>
+               </dependency>
+       </dependencies>
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.clerezza</groupId>
+                               
<artifactId>org.apache.clerezza.maven-ontologies-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <phase>generate-sources</phase>
+                                               <configuration>
+                                                       
<resourcePath>${basedir}/src/main/resources</resourcePath>
+                                                       <sources>
+                                                               
<source>${basedir}/target/generated-sources/main/java</source>
+                                                       </sources>
+                                               </configuration>
+                                               <goals>
+                                                       <goal>generate</goal>
+                                               </goals>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
+</project>

Added: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/representations/ontologies/representations.rdf
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/representations/ontologies/representations.rdf?rev=893269&view=auto
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/representations/ontologies/representations.rdf
 (added)
+++ 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/org.apache.clerezza.platform.content.representations.ontologies/src/main/resources/org/apache/clerezza/platform/content/representations/ontologies/representations.rdf
 Tue Dec 22 18:48:50 2009
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF
+       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#";
+       xmlns:owl="http://www.w3.org/2002/07/owl#";
+       xmlns:dc="http://purl.org/dc/elements/1.1/";
+       xmlns:skos="http://www.w3.org/2008/05/skos#";
+>
+
+<!-- Ontology -->
+
+<owl:Ontology rdf:about="http://clerezza.org/2009/12/representations#";>
+       <owl:versionInfo>Revision: 0.1</owl:versionInfo>
+       <dc:title xml:lang="en">
+               Clerezza Content Representations
+       </dc:title>
+</owl:Ontology>
+
+
+<!-- Properties -->
+
+<rdf:Property 
rdf:about="http://clerezza.org/2009/12/representations#isIconFor";>
+       <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"; />
+       <rdfs:label xml:lang="en">is icon for</rdfs:label>
+       <skos:definition xml:lang="en">Points to a string of which the subject 
is a icon for.</skos:definition>
+       <rdfs:isDefinedBy 
rdf:resource="http://clerezza.org/2009/11/globalMenu#"; />
+       <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Image"; />
+       <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"; />
+</rdf:Property>
+</rdf:RDF>
+

Modified: 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/pom.xml?rev=893269&r1=893268&r2=893269&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/pom.xml
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-38/org.apache.clerezza.platform.content.representations/pom.xml
 Tue Dec 22 18:48:50 2009
@@ -1,45 +1,19 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><project 
xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><project 
xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
        <modelVersion>4.0.0</modelVersion>
        <parent>
-               <artifactId>org.apache.clerezza.parent</artifactId>
                <groupId>org.apache.clerezza</groupId>
+               <artifactId>org.apache.clerezza.parent</artifactId>
                <version>0.2-incubating-SNAPSHOT</version>
        </parent>
        <groupId>org.apache.clerezza</groupId>
        
<artifactId>org.apache.clerezza.platform.content.representations</artifactId>
+       <packaging>pom</packaging>
        <version>0.1-incubating-SNAPSHOT</version>
-       <packaging>bundle</packaging>
-       <name>Clerezza - Platform Content Representations</name>
-       <description>Provides a Meta Data Generator that generates alternative
-               representations for data of     various meta types</description>
-       <dependencies>
-               <dependency>
-                       <groupId>org.osgi</groupId>
-                       <artifactId>org.osgi.core</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.osgi</groupId>
-                       <artifactId>org.osgi.compendium</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.clerezza</groupId>
-                       <artifactId>org.apache.clerezza.rdf.core</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.clerezza</groupId>
-                       <artifactId>org.apache.clerezza.rdf.utils</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.clerezza</groupId>
-                       
<artifactId>org.apache.clerezza.platform.content</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.clerezza</groupId>
-                       
<artifactId>org.apache.clerezza.utils.imageprocessing</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.felix</groupId>
-                       
<artifactId>org.apache.felix.scr.annotations</artifactId>
-               </dependency>
-       </dependencies>
+       <name>Clerezza - Platform Representations</name>
+       <description>Provides services for creating and retrieving alternative 
representations of content.</description>
+       
+       <modules>
+               
<module>org.apache.clerezza.platform.content.representations.ontologies</module>
+               
<module>org.apache.clerezza.platform.content.representations.core</module>
+       </modules>
 </project>


Reply via email to