missing implementations for the generic controller architeture (works for data portal...
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / json / processor / bean / MediaBeanProcessor.java
1 // $Id: TaxonBeanProcessor.java 5561 2009-04-07 12:25:33Z a.kohlbecker $
2 /**
3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.cdm.remote.json.processor.bean;
12
13 import java.util.Arrays;
14 import java.util.List;
15
16 import net.sf.json.JSONObject;
17 import net.sf.json.JsonConfig;
18
19 import org.apache.log4j.Logger;
20 import org.hibernate.Hibernate;
21
22 import eu.etaxonomy.cdm.model.common.Language;
23 import eu.etaxonomy.cdm.model.common.LanguageString;
24 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
25 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
26 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
27 import eu.etaxonomy.cdm.model.common.Representation;
28 import eu.etaxonomy.cdm.model.common.TermBase;
29 import eu.etaxonomy.cdm.model.common.TermVocabulary;
30 import eu.etaxonomy.cdm.model.media.Media;
31 import eu.etaxonomy.cdm.remote.l10n.LocaleContext;
32
33 /**
34 * @author a.kohlbecker
35 *
36 */
37 public class MediaBeanProcessor extends AbstractCdmBeanProcessor<Media> {
38
39 public static final Logger logger = Logger.getLogger(MediaBeanProcessor.class);
40
41 private static final List<String> IGNORE_LIST = Arrays.asList(new String[] {
42 "title",
43 "titleCache",
44 "description",
45 });
46
47 private boolean replaceTitle = false;
48
49 private boolean replaceDescription = false;
50
51 public boolean isReplaceTitle() {
52 return replaceTitle;
53 }
54
55 public void setReplaceTitle(boolean replaceTitle) {
56 this.replaceTitle = replaceTitle;
57 }
58
59 public boolean isReplaceDescription() {
60 return replaceDescription;
61 }
62
63 public void setReplaceDescription(boolean replaceDescription) {
64 this.replaceDescription = replaceDescription;
65 }
66
67 /* (non-Javadoc)
68 * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#getIgnorePropNames()
69 */
70 @Override
71 public List<String> getIgnorePropNames() {
72 return IGNORE_LIST;
73 }
74
75 /* (non-Javadoc)
76 * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#processBeanSecondStep(eu.etaxonomy.cdm.model.common.CdmBase, net.sf.json.JSONObject, net.sf.json.JsonConfig)
77 */
78 @Override
79 public JSONObject processBeanSecondStep(Media media, JSONObject json, JsonConfig jsonConfig) {
80
81 List<Language> languages = LocaleContext.getLanguages();
82 LanguageString langString;
83
84 // title
85 if(Hibernate.isInitialized(media.getTitle())){
86 langString = MultilanguageTextHelper.getPreferredLanguageString(media.getAllTitles(), languages);
87 if(langString != null){
88 if(langString.getText() != null && langString.getText().length() != 0){
89 json.element("title_L10n", langString.getText());
90 }
91 }
92 if(!replaceTitle){
93 json.element("title", media.getTitle(), jsonConfig);
94 }
95 } else {
96 logger.debug("title of media not initialized " + media.getUuid().toString());
97 }
98
99 // description
100 if(Hibernate.isInitialized(media.getDescription())){
101 langString = MultilanguageTextHelper.getPreferredLanguageString(media.getDescription(), languages);
102 if(langString != null){
103 if(langString.getText() != null && langString.getText().length() != 0){
104 json.element("description_L10n", langString.getText());
105 }
106 }
107 if(!replaceDescription){
108 json.element("description", media.getDescription(), jsonConfig);
109 }
110 } else {
111 logger.debug("description of media not initialized " + media.getUuid().toString());
112 }
113
114 return json;
115 }
116
117 }