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 protected static final Logger logger
= Logger
.getLogger(MediaDefaultCacheStrategy
.class);
32 final static UUID uuid
= UUID
.fromString("0517ae48-597d-4d6b-9f18-8752d689720d");
35 public static MediaDefaultCacheStrategy
NewInstance() {
36 return new MediaDefaultCacheStrategy();
40 protected UUID
getUuid() {
45 public String
getTitleCache(Media media
) {
46 media
= (Media
) HibernateProxyHelper
.deproxy(media
, Media
.class);
47 return getTitleCacheByLanguage(media
, Language
.DEFAULT());
50 public String
getTitleCacheByLanguage(Media media
, Language lang
) {
52 List
<Language
> languages
= Arrays
.asList(new Language
[]{lang
});
53 LanguageString languageString
= MultilanguageTextHelper
.getPreferredLanguageString(media
.getAllTitles(), languages
);
54 result
= (languageString
!= null ? languageString
.getText() : "");
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
)){
64 int lastSlashPos
= result
.lastIndexOf("/");
65 if (lastSlashPos
!= -1 && lastSlashPos
+ 1 < result
.length()){
66 result
= result
.substring(lastSlashPos
+ 1);
70 if (! StringUtils
.isBlank(result
)){
74 if (StringUtils
.isBlank(result
)){
75 result
= "- empty media - <" + media
.getUuid() + ">";