(no commit message)
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / media / MediaDefaultCacheStrategy.java
index 9dd6109b1eab3b8a4fb7c5446e995b3215bce043..4f59e0aad35865e036646e21c74fcd039af05f6c 100644 (file)
@@ -13,49 +13,71 @@ import java.util.Arrays;
 import java.util.List;\r
 import java.util.UUID;\r
 \r
-import javax.persistence.Transient;\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;\r
-import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
 import eu.etaxonomy.cdm.strategy.StrategyBase;\r
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
 \r
-public class MediaDefaultCacheStrategy extends StrategyBase implements\r
-               IIdentifiableEntityCacheStrategy<Media> {\r
+public class MediaDefaultCacheStrategy extends StrategyBase implements IIdentifiableEntityCacheStrategy<Media> {\r
+       protected static final  Logger logger = Logger.getLogger(MediaDefaultCacheStrategy.class);\r
 \r
        final static UUID uuid = UUID.fromString("0517ae48-597d-4d6b-9f18-8752d689720d");\r
+\r
+\r
+       public static MediaDefaultCacheStrategy NewInstance() {\r
+               return new MediaDefaultCacheStrategy();\r
+       }\r
        \r
        @Override\r
        protected UUID getUuid() {\r
-               return uuid;\r
+               return uuid; \r
        }\r
        \r
        \r
        public String getTitleCache(Media media) {\r
                media = (Media) HibernateProxyHelper.deproxy(media, Media.class);\r
-               \r
-               List<Language> languages = Arrays.asList(new Language[]{Language.DEFAULT()});\r
-               LanguageString languageString = MultilanguageTextHelper.getPreferredLanguageString(media.getAllTitles(), languages);\r
-               return languageString != null ? languageString.getText() : null;\r
-       \r
+               return getTitleCacheByLanguage(media, Language.DEFAULT());\r
        }\r
        \r
        public String getTitleCacheByLanguage(Media media, Language lang) {\r
+               String result;\r
                List<Language> languages = Arrays.asList(new Language[]{lang});\r
                LanguageString languageString = MultilanguageTextHelper.getPreferredLanguageString(media.getAllTitles(), languages);\r
-               return languageString != null ? languageString.getText() : null;\r
-       \r
+               result = (languageString != null ? languageString.getText() : "");\r
+               \r
+               //get first image uri\r
+               if (StringUtils.isBlank(result)){\r
+                       for (MediaRepresentation mediaRepresentation : media.getRepresentations()){\r
+                               for (MediaRepresentationPart part : mediaRepresentation.getParts()){\r
+                                       result = part.getUri();\r
+                                       if (StringUtils.isBlank(result)){\r
+                                               continue;\r
+                                       }\r
+                                       int lastSlashPos = result.lastIndexOf("/");\r
+                                       if (lastSlashPos != -1 && lastSlashPos + 1 < result.length()){\r
+                                               result = result.substring(lastSlashPos + 1);\r
+                                       }\r
+                                       break;\r
+                               }\r
+                               if (! StringUtils.isBlank(result)){\r
+                                       break;\r
+                               }\r
+                       }\r
+                       if (StringUtils.isBlank(result)){\r
+                               result = "- empty media - <" + media.getUuid() + ">";\r
+                       }\r
+               }\r
+               return result;\r
        }\r
 \r
 \r
-       public static MediaDefaultCacheStrategy NewInstance() {\r
-               return new MediaDefaultCacheStrategy();\r
-       }\r
-\r
        \r
 }\r