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
;
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",
42 "partOf" // exclude partof to avoid lazy loading exceptions
45 private boolean replaceRepresentations
= false;
47 public boolean isReplaceRepresentations() {
48 return replaceRepresentations
;
51 public void setReplaceRepresentations(boolean replace
) {
52 this.replaceRepresentations
= replace
;
56 * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#getIgnorePropNames()
59 public List
<String
> getIgnorePropNames() {
64 * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#processBeanSecondStep(eu.etaxonomy.cdm.model.common.CdmBase, net.sf.json.JSONObject, net.sf.json.JsonConfig)
67 public JSONObject
processBeanSecondStep(TermBase term
, JSONObject json
, JsonConfig jsonConfig
) {
69 // handle OrderedTermVocabulary
70 if(OrderedTermVocabulary
.class.isAssignableFrom(term
.getClass())){
71 OrderedTermVocabulary otv
= (OrderedTermVocabulary
)term
;
72 if(Hibernate
.isInitialized(otv
.getTerms())){
73 json
.element("terms", otv
.getOrderedTerms(), jsonConfig
);
75 } else if(TermVocabulary
.class.isAssignableFrom(term
.getClass())) {
76 TermVocabulary tv
= (TermVocabulary
)term
;
77 if(Hibernate
.isInitialized(tv
.getTerms())){
78 json
.element("terms", tv
.getTerms(), jsonConfig
);
82 List
<Language
> languages
= LocaleContext
.getLanguages();
84 Representation representation
;
85 if(Hibernate
.isInitialized(term
.getRepresentations())){
86 representation
= term
.getPreferredRepresentation(languages
);
87 if(representation
!= null){
88 if(representation
.getText() != null && representation
.getText().length() != 0){
89 json
.element("representation_L10n", representation
.getText());
90 } else if (representation
.getLabel() != null && representation
.getLabel().length() !=0) {
91 json
.element("representation_L10n", representation
.getLabel());
93 json
.element("representation_L10n", 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());