cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/agent/TeamDefaultCacheStrategyTest.java -text
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/common/TermDefaultCacheStrategyTest.java -text
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/description/TaxonDescriptionDefaultCacheStrategyTest.java -text
+cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/media/MediaDefaultCacheStrategyTest.java -text
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/BotanicNameCacheStrategyTest.java -text
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/NonViralNameDefaultCacheStrategyTest.java -text
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/ZoologicalNameCacheStrategyTest.java -text
public void addTitle(LanguageString title){
this.title.put(title.getLanguage(), title);
}
+ public void addTitle(String title, Language language){
+ this.title.put(language, LanguageString.NewInstance(title, language));
+ }
public void removeTitle(Language language){
this.title.remove(language);
addTitle(LanguageString.NewInstance(titleCache, Language.DEFAULT()));
}
- /*
- * Overriding the title cache methods here to avoid confusion with the title field
- */
-
- /*
- * (non-Javadoc)
- * @see eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache()
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.model.common.IIdentifiableEntity#getTitleCache()
*/
@Override
- public String getTitleCache() {
- List<Language> languages = Arrays.asList(new Language[]{Language.DEFAULT()});
- LanguageString languageString = MultilanguageTextHelper.getPreferredLanguageString(title, languages);
- return languageString != null ? languageString.getText() : null;
+ public String getTitleCache(){
+ if (protectedTitleCache){
+ return this.titleCache;
+ }
+ // is title dirty, i.e. equal NULL?
+ if (titleCache == null){
+ this.titleCache = generateTitle();
+ this.titleCache = getTruncatedCache(this.titleCache) ;
+ }else{
+ //do the same as listeners on dependend objects like representations parts
+ //are not yet installed
+ this.titleCache = generateTitle();
+ this.titleCache = getTruncatedCache(this.titleCache) ;
+ }
+ return titleCache;
}
- @Override
- public String generateTitle() {
- return getTitleCache();
- }
}
\ No newline at end of file
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
\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
+ 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
--- /dev/null
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/ \r
+\r
+package eu.etaxonomy.cdm.strategy.cache.media;\r
+\r
+\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+\r
+import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
+/**\r
+ * @author a.mueller\r
+ *\r
+ */\r
+public class MediaDefaultCacheStrategyTest {\r
+\r
+ /**\r
+ * @throws java.lang.Exception\r
+ */\r
+ @BeforeClass\r
+ public static void setUpBeforeClass() throws Exception {\r
+ new DefaultTermInitializer().initialize();\r
+ }\r
+ \r
+ /**\r
+ * @throws java.lang.Exception\r
+ */\r
+ @Before\r
+ public void setUp() throws Exception {\r
+ }\r
+\r
+ \r
+//*********************** TESTS ****************************************************/\r
+ \r
+ @Test\r
+ public void testGetTitleCache(){\r
+ \r
+ Media media = Media.NewInstance();\r
+ media.addTitle("My best media", Language.DEFAULT());\r
+ Assert.assertEquals("Wrong title cache for media", "My best media", media.getTitleCache());\r
+ \r
+ media = Media.NewInstance();\r
+ Assert.assertTrue("Wrong title cache for media", media.getTitleCache().startsWith("- empty"));\r
+ \r
+ MediaRepresentation representation = MediaRepresentation.NewInstance(null, null, "www.abc.de/Abc my title is here", 0);\r
+ media.addRepresentation(representation);\r
+ Assert.assertEquals("Wrong title cache for media", "www.abc.de/Abc my title is here", media.getTitleCache());\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+}\r