updated palmae protologue import
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / media / MediaDefaultCacheStrategy.java
1 /**
2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.strategy.cache.media;
11
12 import java.util.Arrays;
13 import java.util.List;
14 import java.util.UUID;
15
16 import org.apache.commons.lang.StringUtils;
17 import org.apache.log4j.Logger;
18
19 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
20 import eu.etaxonomy.cdm.model.common.Language;
21 import eu.etaxonomy.cdm.model.common.LanguageString;
22 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
23 import eu.etaxonomy.cdm.model.media.Media;
24 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
25 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
26 import eu.etaxonomy.cdm.strategy.StrategyBase;
27 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
28
29 public class MediaDefaultCacheStrategy extends StrategyBase implements IIdentifiableEntityCacheStrategy<Media> {
30 protected static final Logger logger = Logger.getLogger(MediaDefaultCacheStrategy.class);
31
32 final static UUID uuid = UUID.fromString("0517ae48-597d-4d6b-9f18-8752d689720d");
33
34
35 public static MediaDefaultCacheStrategy NewInstance() {
36 return new MediaDefaultCacheStrategy();
37 }
38
39 @Override
40 protected UUID getUuid() {
41 return uuid;
42 }
43
44
45 public String getTitleCache(Media media) {
46 media = (Media) HibernateProxyHelper.deproxy(media, Media.class);
47 return getTitleCacheByLanguage(media, Language.DEFAULT());
48 }
49
50 public String getTitleCacheByLanguage(Media media, Language lang) {
51 String result;
52 List<Language> languages = Arrays.asList(new Language[]{lang});
53 LanguageString languageString = MultilanguageTextHelper.getPreferredLanguageString(media.getAllTitles(), languages);
54 result = (languageString != null ? languageString.getText() : "");
55
56 //get first image uri
57 if (StringUtils.isBlank(result)){
58 for (MediaRepresentation mediaRepresentation : media.getRepresentations()){
59 for (MediaRepresentationPart part : mediaRepresentation.getParts()){
60 result = part.getUri();
61 if (StringUtils.isBlank(result)){
62 continue;
63 }
64 int lastSlashPos = result.lastIndexOf("/");
65 if (lastSlashPos != -1 && lastSlashPos + 1 < result.length()){
66 result = result.substring(lastSlashPos + 1);
67 }
68 break;
69 }
70 if (! StringUtils.isBlank(result)){
71 break;
72 }
73 }
74 if (StringUtils.isBlank(result)){
75 result = "- empty media - <" + media.getUuid() + ">";
76 }
77 }
78 return result;
79 }
80
81
82
83 }