Project

General

Profile

« Previous | Next » 

Revision 4d68581f

Added by Katja Luther over 3 years ago

ref #8774: further implementations for using term dtos in editor

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dto/TermNodeDto.java
15 15
import java.util.Set;
16 16
import java.util.UUID;
17 17

  
18
import org.springframework.util.Assert;
19

  
18 20
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
19 21
import eu.etaxonomy.cdm.model.description.FeatureState;
20
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
21 22
import eu.etaxonomy.cdm.model.term.TermNode;
22 23
import eu.etaxonomy.cdm.model.term.TermTree;
23 24
import eu.etaxonomy.cdm.model.term.TermType;
......
26 27
 * @author k.luther
27 28
 * @since Mar 18, 2020
28 29
 */
29
public class TermNodeDto<T extends DefinedTermBase> implements Serializable{
30
public class TermNodeDto implements Serializable{
30 31

  
31 32
    private static final long serialVersionUID = 7568459208397248126L;
32 33

  
33 34
    UUID parentUuid;
34 35
    String treeIndex;
35
    List<TermNodeDto<T>> children;
36
    List<TermNodeDto> children;
36 37
    Set<FeatureState> onlyApplicableIf = new HashSet<>();
37 38
    Set<FeatureState> inapplicableIf = new HashSet<>();
38 39
    UUID uuid;
39 40
    TermDto term;
40 41
    TermType type;
41 42
    TermTreeDto tree;
42

  
43
    public TermNodeDto(TermNode<T> node){
44
        uuid = node.getUuid();
43
    String path;
44

  
45
    public static TermNodeDto fromNode(TermNode node){
46
        Assert.notNull(node, "Node should not be null");
47
        TermDto term = node.getTerm() != null?TermDto.fromTerm(node.getTerm()): null;
48
        TermTreeDto tree = node.getGraph() != null? TermTreeDto.fromTree(HibernateProxyHelper.deproxy(node.getGraph(), TermTree.class)):null;
49
        TermNodeDto dto = new TermNodeDto(term, null, node.getParent() != null? node.getParent().getIndex(node): 0, tree, node.getUuid(), node.treeIndex(), node.getPath());
50
//        uuid = node.getUuid();
45 51
        if (node.getParent() != null){
46
            parentUuid = node.getParent().getUuid();
52
            dto.setParentUuid(node.getParent().getUuid());
47 53
        }
48
        TermTree termTree = HibernateProxyHelper.deproxy(node.getGraph(), TermTree.class);
49
        tree = new TermTreeDto(termTree);
50
        treeIndex = node.treeIndex();
51
        children = new ArrayList();
52
        for (TermNode<T> child: node.getChildNodes()){
53

  
54
            children.add(new TermNodeDto(child));
55
        }
56
        onlyApplicableIf = node.getOnlyApplicableIf();
57
        inapplicableIf = node.getInapplicableIf();
58
        if (node.getTerm() != null){
59
            term = TermDto.fromTerm(node.getTerm());
54
//        TermTree termTree = HibernateProxyHelper.deproxy(node.getGraph(), TermTree.class);
55
//        tree = TermTreeDto.fromTree(termTree);
56
//        treeIndex = node.treeIndex();
57
        List<TermNodeDto> children = new ArrayList();
58
        for (Object o: node.getChildNodes()){
59
            if (o instanceof TermNode){
60
                TermNode child = (TermNode)o;
61

  
62
                if (child != null){
63
                    if(child.getTermType().equals(TermType.Character)){
64
                        children.add(CharacterNodeDto.fromTermNode(child));
65
                    }else{
66
                        children.add(TermNodeDto.fromNode(child));
67
                    }
68
                }
69
            }
60 70
        }
61
        type = node.getTermType();
71
        dto.setChildren(children);
72
        dto.setOnlyApplicableIf(node.getOnlyApplicableIf());
73
        dto.setInapplicableIf(node.getInapplicableIf());
74
//        if (node.getTerm() != null){
75
//            term = TermDto.fromTerm(node.getTerm());
76
//        }
77
        dto.setTermType(node.getTermType());
78
//        path = node.getPath();
79
        return dto;
62 80
    }
63 81

  
64 82

  
65
    public TermNodeDto(TermDto termDto, TermNodeDto parent, int position, TermTreeDto treeDto){
66
        uuid = null;
83
    public TermNodeDto(TermDto termDto, TermNodeDto parent, int position, TermTreeDto treeDto, UUID uuid, String treeIndex, String path){
84
        this.uuid = uuid;
67 85
        if (parent != null){
68 86
            parentUuid = parent.getUuid();
69 87
        }
70
        treeIndex = null;
88
        this.treeIndex = treeIndex;
71 89
        term = termDto;
72 90
        type = termDto!= null? termDto.getTermType(): null;
73 91
        children = new ArrayList<>();
......
75 93
            parent.getChildren().add(position, this);
76 94
        }
77 95
        tree = treeDto;
96
        this.path = path;
97

  
78 98
    }
79 99

  
80 100
/*--------Getter and Setter ---------------*/
......
103 123
        this.tree = tree;
104 124
    }
105 125

  
106
    public List<TermNodeDto<T>> getChildren() {
126
    public List<TermNodeDto> getChildren() {
107 127
        return children;
108 128
    }
109 129

  
110
    public void setChildren(List<TermNodeDto<T>> children) {
130
    public void setChildren(List<TermNodeDto> children) {
111 131
        this.children = children;
112 132
    }
113 133

  
......
162 182
        return -1;
163 183
   }
164 184

  
165
   public boolean removeChild(TermNodeDto nodeDto){
185
   /**
186
     * @return the path
187
     */
188
    public String getPath() {
189
        return path;
190
    }
191

  
192

  
193
    /**
194
     * @param path the path to set
195
     */
196
    public void setPath(String path) {
197
        this.path = path;
198
    }
199

  
200

  
201
public boolean removeChild(TermNodeDto nodeDto){
166 202
       int index = this.getIndex(nodeDto);
167 203
       if (index > -1){
168 204
           this.getChildren().remove(index);
......
179 215
   }
180 216

  
181 217

  
218
   public static String getTermNodeDtoSelect(){
219
       String[] result = createSqlParts();
220

  
221
       return result[0]+result[1]+result[2];
222
   }
223

  
224
   /**
225
    * @param fromTable
226
    * @return
227
    */
228
   private static String[] createSqlParts() {
229
       String sqlSelectString = ""
230
               + "select a.uuid, "
231
               + "r, "
232
               + "a.termType,  "
233
               + "a.uri,  "
234
               + "root,  "
235
               + "a.titleCache, "
236
               + "a.allowDuplicates, "
237
               + "a.orderRelevant, "
238
               + "a.isFlat ";
239
       String sqlFromString =   "from TermNode as a ";
240

  
241
       String sqlJoinString =  "LEFT JOIN a.tree "
242
              + "LEFT JOIN a.representations AS r "
243
               ;
244

  
245
       String[] result = new String[3];
246
       result[0] = sqlSelectString;
247
       result[1] = sqlFromString;
248
       result[2] = sqlJoinString;
249
       return result;
250
   }
251

  
252

  
182 253

  
183 254

  
184 255
}

Also available in: Unified diff