2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.strategy
.cache
.media
;
12 import java
.util
.Arrays
;
13 import java
.util
.List
;
14 import java
.util
.UUID
;
16 import org
.apache
.commons
.lang
.StringUtils
;
17 import org
.apache
.log4j
.Logger
;
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
;
29 public class MediaDefaultCacheStrategy
extends StrategyBase
implements IIdentifiableEntityCacheStrategy
<Media
> {
30 private static final long serialVersionUID
= 7246846028810250751L;
32 protected static final Logger logger
= Logger
.getLogger(MediaDefaultCacheStrategy
.class);
34 final static UUID uuid
= UUID
.fromString("0517ae48-597d-4d6b-9f18-8752d689720d");
37 public static MediaDefaultCacheStrategy
NewInstance() {
38 return new MediaDefaultCacheStrategy();
42 protected UUID
getUuid() {
48 public String
getTitleCache(Media media
) {
49 media
= HibernateProxyHelper
.deproxy(media
, Media
.class);
50 return getTitleCacheByLanguage(media
, Language
.DEFAULT());
53 public String
getTitleCacheByLanguage(Media media
, Language lang
) {
55 List
<Language
> languages
= Arrays
.asList(new Language
[]{lang
});
56 LanguageString languageString
= MultilanguageTextHelper
.getPreferredLanguageString(media
.getAllTitles(), languages
);
57 result
= (languageString
!= null ? languageString
.getText() : "");
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
)){
67 int lastSlashPos
= result
.lastIndexOf("/");
68 if (lastSlashPos
!= -1 && lastSlashPos
+ 1 < result
.length()){
69 result
= result
.substring(lastSlashPos
+ 1);
73 if (! StringUtils
.isBlank(result
)){
77 if (StringUtils
.isBlank(result
)){
78 result
= "- empty media - <" + media
.getUuid() + ">";