cleanup
[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 private static final long serialVersionUID = 7246846028810250751L;
31
32 protected static final Logger logger = Logger.getLogger(MediaDefaultCacheStrategy.class);
33
34 final static UUID uuid = UUID.fromString("0517ae48-597d-4d6b-9f18-8752d689720d");
35
36
37 public static MediaDefaultCacheStrategy NewInstance() {
38 return new MediaDefaultCacheStrategy();
39 }
40
41 @Override
42 protected UUID getUuid() {
43 return uuid;
44 }
45
46
47 @Override
48 public String getTitleCache(Media media) {
49 media = HibernateProxyHelper.deproxy(media, Media.class);
50 return getTitleCacheByLanguage(media, Language.DEFAULT());
51 }
52
53 public String getTitleCacheByLanguage(Media media, Language lang) {
54 String result;
55 List<Language> languages = Arrays.asList(new Language[]{lang});
56 LanguageString languageString = MultilanguageTextHelper.getPreferredLanguageString(media.getAllTitles(), languages);
57 result = (languageString != null ? languageString.getText() : "");
58
59 //get first image uri
60 if (StringUtils.isBlank(result)){
61 for (MediaRepresentation mediaRepresentation : media.getRepresentations()){
62 for (MediaRepresentationPart part : mediaRepresentation.getParts()){
63 result = (part == null || part.getUri() == null) ? null : part.getUri().toString();
64 if (StringUtils.isBlank(result)){
65 continue;
66 }
67 int lastSlashPos = result.lastIndexOf("/");
68 if (lastSlashPos != -1 && lastSlashPos + 1 < result.length()){
69 result = result.substring(lastSlashPos + 1);
70 }
71 break;
72 }
73 if (! StringUtils.isBlank(result)){
74 break;
75 }
76 }
77 if (StringUtils.isBlank(result)){
78 result = "- empty media - <" + media.getUuid() + ">";
79 }
80 }
81 return result;
82 }
83
84
85
86 }