1 // $Id: TaxonBeanProcessor.java 5561 2009-04-07 12:25:33Z a.kohlbecker $
3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.cdm
.remote
.json
.processor
.bean
;
13 import java
.util
.Arrays
;
14 import java
.util
.List
;
16 import net
.sf
.json
.JSONObject
;
17 import net
.sf
.json
.JsonConfig
;
19 import org
.apache
.log4j
.Logger
;
20 import org
.hibernate
.Hibernate
;
22 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
23 import eu
.etaxonomy
.cdm
.model
.common
.OrderedTermVocabulary
;
24 import eu
.etaxonomy
.cdm
.model
.common
.RelationshipTermBase
;
25 import eu
.etaxonomy
.cdm
.model
.common
.Representation
;
26 import eu
.etaxonomy
.cdm
.model
.common
.TermBase
;
27 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
28 import eu
.etaxonomy
.cdm
.remote
.l10n
.LocaleContext
;
31 * @author a.kohlbecker
34 public class TermBaseBeanProcessor
extends AbstractCdmBeanProcessor
<TermBase
> {
36 public static final Logger logger
= Logger
.getLogger(TermBaseBeanProcessor
.class);
38 private static final List
<String
> IGNORE_LIST
= Arrays
.asList(new String
[] {
40 "inversRepresentations",
44 private boolean replaceRepresentations
= false;
46 public boolean isReplaceRepresentations() {
47 return replaceRepresentations
;
50 public void setReplaceRepresentations(boolean replace
) {
51 this.replaceRepresentations
= replace
;
55 * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#getIgnorePropNames()
58 public List
<String
> getIgnorePropNames() {
63 * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#processBeanSecondStep(eu.etaxonomy.cdm.model.common.CdmBase, net.sf.json.JSONObject, net.sf.json.JsonConfig)
66 public JSONObject
processBeanSecondStep(TermBase term
, JSONObject json
, JsonConfig jsonConfig
) {
68 // handle OrderedTermVocabulary
69 if(OrderedTermVocabulary
.class.isAssignableFrom(term
.getClass())){
70 OrderedTermVocabulary otv
= (OrderedTermVocabulary
)term
;
71 if(Hibernate
.isInitialized(otv
.getTerms())){
72 json
.element("terms", otv
.getOrderedTerms(), jsonConfig
);
74 } else if(TermVocabulary
.class.isAssignableFrom(term
.getClass())) {
75 TermVocabulary tv
= (TermVocabulary
)term
;
76 if(Hibernate
.isInitialized(tv
.getTerms())){
77 json
.element("terms", tv
.getTerms(), jsonConfig
);
81 List
<Language
> languages
= LocaleContext
.getLanguages();
83 Representation representation
;
84 if(Hibernate
.isInitialized(term
.getRepresentations())){
85 representation
= term
.getPreferredRepresentation(languages
);
86 if(representation
!= null){
87 if(representation
.getText() != null && representation
.getText().length() != 0){
88 json
.element("representation_L10n", representation
.getText());
89 } else if (representation
.getLabel() != null && representation
.getLabel().length() !=0) {
90 json
.element("representation_L10n", representation
.getLabel());
93 json
.element("representation_L10n_abbreviated", representation
.getAbbreviatedLabel());
96 if(!replaceRepresentations
){
97 json
.element("representations", term
.getRepresentations(), jsonConfig
);
100 logger
.debug("representations of term not initialized " + term
.getUuid().toString());
103 // add additional representation for RelationShipBase
104 if(RelationshipTermBase
.class.isAssignableFrom(term
.getClass())){
105 RelationshipTermBase
<?
> relTerm
= (RelationshipTermBase
<?
>)term
;
106 Representation inversRepresentation
;
107 if(Hibernate
.isInitialized(relTerm
.getInverseRepresentations())){
108 inversRepresentation
= relTerm
.getPreferredInverseRepresentation(languages
);
109 if(inversRepresentation
!= null){
110 if(inversRepresentation
.getText() != null && inversRepresentation
.getText().length() != 0){
111 json
.element("inverseRepresentation_L10n", inversRepresentation
.getText());
112 } else if (inversRepresentation
.getLabel() != null && inversRepresentation
.getLabel().length() !=0) {
113 json
.element("inverseRepresentation_L10n", inversRepresentation
.getLabel());
115 json
.element("inverseRepresentation_L10n", inversRepresentation
.getAbbreviatedLabel());
118 if(!replaceRepresentations
){
119 json
.element("inverseRepresentations", relTerm
.getRepresentations(), jsonConfig
);
122 logger
.debug("inverseRepresentations of term not initialized " + relTerm
.getUuid().toString());