Merge branch 'release/5.45.0'
[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.logging.log4j.LogManager;
17 import org.apache.logging.log4j.Logger;
18
19 import eu.etaxonomy.cdm.model.common.CdmBase;
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
28 public class MediaDefaultCacheStrategy
29 extends StrategyBase
30 implements IMediaCacheStrategy {
31
32 private static final long serialVersionUID = 7246846028810250751L;
33 @SuppressWarnings("unused")
34 private static final Logger logger = LogManager.getLogger();
35
36 final static UUID uuid = UUID.fromString("0517ae48-597d-4d6b-9f18-8752d689720d");
37
38 public static MediaDefaultCacheStrategy NewInstance() {
39 return new MediaDefaultCacheStrategy();
40 }
41
42 @Override
43 protected UUID getUuid() {
44 return uuid;
45 }
46
47 @Override
48 public String getTitleCache(Media media) {
49 media = CdmBase.deproxy(media);
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 if (isBlank(result) && media.getArtist() != null){
60 result = media.getArtist().getTitleCache();
61 }
62
63 //get first image uri
64 if (isBlank(result)){
65 for (MediaRepresentation mediaRepresentation : media.getRepresentations()){
66 for (MediaRepresentationPart part : mediaRepresentation.getParts()){
67 result = (part == null || part.getUri() == null) ? null : part.getUri().toString();
68 if (isBlank(result)){
69 continue;
70 }
71 @SuppressWarnings("null")
72 int lastSlashPos = result.lastIndexOf("/");
73 if (lastSlashPos != -1 && lastSlashPos + 1 < result.length()){
74 int lastDotPos = result.lastIndexOf(".");
75 if (lastDotPos == -1 || lastDotPos < lastSlashPos){
76 result = result.substring(lastSlashPos + 1);
77 }else{
78 result = result.substring(lastSlashPos + 1, lastDotPos);
79 }
80 }
81 break;
82 }
83 if (! isBlank(result)){
84 break;
85 }
86 }
87 if (isBlank(result)){
88 result = "- empty media - <" + media.getUuid() + ">";
89 }
90 }
91 return result;
92 }
93
94
95
96 }