- generalized simple user interface to add media (#3339)
authorPatric Plitzner <p.plitzner@bgbm.org>
Thu, 21 Aug 2014 07:52:52 +0000 (07:52 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Thu, 21 Aug 2014 07:52:52 +0000 (07:52 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaUtils.java

index 30d26c1d1c95eec41bad838e6726111114fbf3eb..988e289c6b3951ee93e311f1ab40c29b4ebb72e7 100644 (file)
@@ -31,18 +31,49 @@ public class MediaUtils {
     public static MediaRepresentation findBestMatchingRepresentation(Media media, Class<? extends MediaRepresentationPart> representationPartType, Integer size, Integer height, Integer widthOrDuration, String[] mimeTypes){\r
         // find best matching representations of each media\r
         SortedMap<Integer, MediaRepresentation> prefRepresentations\r
-            = filterAndOrderMediaRepresentations(media.getRepresentations(), null, mimeTypes, size, widthOrDuration, height);\r
-            try {\r
-                // take first one and remove all other representations\r
-                MediaRepresentation prefOne = prefRepresentations.get(prefRepresentations.firstKey());\r
+        = filterAndOrderMediaRepresentations(media.getRepresentations(), null, mimeTypes, size, widthOrDuration, height);\r
+        try {\r
+            // take first one and remove all other representations\r
+            MediaRepresentation prefOne = prefRepresentations.get(prefRepresentations.firstKey());\r
 \r
-                return prefOne;\r
+            return prefOne;\r
 \r
-            } catch (NoSuchElementException nse) {\r
-                /* IGNORE */\r
+        } catch (NoSuchElementException nse) {\r
+            /* IGNORE */\r
+        }\r
+        return null;\r
+    }\r
+\r
+    /**\r
+     * Creates one single {@link MediaRepresentationPart} for the given {@link Media}\r
+     * if it does not already exists. Otherwise the first part found is returned.<br>\r
+     * @param media the media for which the representation part should be created\r
+     * @return the first or newly created representation part\r
+     */\r
+    public static MediaRepresentationPart initFirstMediaRepresentationPart(Media media) {\r
+        MediaRepresentationPart mediaRepresentationPart;\r
+        Set<MediaRepresentation> representations = media.getRepresentations();\r
+        if(representations!=null && representations.size()>0){\r
+            MediaRepresentation mediaRepresentation = representations.iterator().next();\r
+            List<MediaRepresentationPart> parts = mediaRepresentation.getParts();\r
+            if(parts!=null && parts.size()>0){\r
+                mediaRepresentationPart = parts.iterator().next();\r
+            }\r
+            else{\r
+                mediaRepresentationPart = MediaRepresentationPart.NewInstance(null, null);\r
+                mediaRepresentation.addRepresentationPart(mediaRepresentationPart);\r
             }\r
-            return null;\r
         }\r
+        else{\r
+            mediaRepresentationPart = MediaRepresentationPart.NewInstance(null, null);\r
+\r
+            MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance();\r
+            mediaRepresentation.addRepresentationPart(mediaRepresentationPart);\r
+            media.addRepresentation(mediaRepresentation);\r
+        }\r
+        return mediaRepresentationPart;\r
+    }\r
+\r
 \r
     /**\r
      * Filters the given List of Media by the supplied filter parameters <code>representationPartType</code>,\r