Project

General

Profile

« Previous | Next » 

Revision c22a678f

Added by Katja Luther over 5 years ago

ref #7903: add sortIndex to taxon table in cdm light export

View differences:

cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightClassificationExport.java
15 15
import java.util.Iterator;
16 16
import java.util.List;
17 17
import java.util.Map;
18
import java.util.Map.Entry;
18 19
import java.util.Set;
19 20

  
20 21
import org.apache.commons.lang3.StringUtils;
......
78 79
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
79 80
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
80 81
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
82
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
83
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByRankAndNameComparator;
81 84
import eu.etaxonomy.cdm.strategy.cache.TagEnum;
82 85
import eu.etaxonomy.cdm.strategy.cache.TaggedText;
83 86
import eu.etaxonomy.cdm.strategy.cache.reference.DefaultReferenceCacheStrategy;
......
163 166
                    handleTaxonNode(state, node);
164 167
                    node = partitioner.next();
165 168
                }
169
              //create sortIndex for nodes
170
                for(Entry<Integer, List<TaxonNodeDto>> entry :state.getNodeChildrenMap().entrySet()){
171
                    List<TaxonNodeDto> children = entry.getValue();
172
                    TaxonNodeDtoByRankAndNameComparator comp = new TaxonNodeDtoByRankAndNameComparator();
173
                    Collections.sort(children, comp);
174
                    int index = 0;
175
                    for (TaxonNodeDto child:children) {
176
                        if (state.getProcessor().hasRecord(CdmLightExportTable.TAXON, child.getTaxonUuid().toString())){
177
                            String[] csvLine = state.getProcessor().getRecord(CdmLightExportTable.TAXON,child.getTaxonUuid().toString());
178
                            csvLine[CdmLightExportTable.TAXON.getIndex(CdmLightExportTable.SORT_INDEX)] =  String.valueOf(index);
179
                            index++;
180
                        }
181

  
182
                    }
183
               }
166 184

  
167 185

  
168 186
//            for (LogicFilter<TaxonNode> taxonNodeFilter : config.getTaxonNodeFilter().getTaxonNodesFilter()){
......
189 207
            }else{
190 208
                try {
191 209
                    TaxonNode root = taxonNode;
210
                    List<TaxonNodeDto> childNodes;
211
                    if (root.hasChildNodes()){
212
                        childNodes = new ArrayList();
213
                        for (TaxonNode child: root.getChildNodes()){
214
                            childNodes.add(new TaxonNodeDto(child));
215
                        }
216
                        state.getNodeChildrenMap().put(root.getId(),childNodes);
217
                    }
192 218
                    if (root.hasTaxon()){
193 219
                        handleTaxon(state, root);
194
                    }else{
195
    //                    for (TaxonNode child : root.getChildNodes()){
196
    //                        handleTaxon(state, child);
197
    //                        //TODO progress monitor
198
    //                    }
220

  
199 221
                    }
200 222
                } catch (Exception e) {
201 223
                    state.getResult().addException(e, "An unexpected error occurred when handling classification " +
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightExportResultProcessor.java
80 80
        }
81 81
    }
82 82

  
83
    public  String[] getRecord(CdmLightExportTable table, String id){
84
        return result.get(table).get(id);
85

  
86
    }
83 87

  
84 88
    /**
85 89
     * @param table
......
87 91
     * @param csvLine
88 92
     */
89 93
    public void put(CdmLightExportTable table, ICdmBase cdmBase, String[] csvLine) {
90
       this.put(table, String.valueOf(cdmBase.getId()), csvLine);
94
       this.put(table, cdmBase.getUuid().toString(), csvLine);
91 95
    }
92 96

  
93 97

  
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightExportState.java
10 10

  
11 11
import java.io.File;
12 12
import java.util.HashMap;
13
import java.util.List;
13 14
import java.util.Map;
14 15

  
15 16
import eu.etaxonomy.cdm.io.common.ExportResult;
......
21 22
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
22 23
import eu.etaxonomy.cdm.model.reference.Reference;
23 24
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
25
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
24 26

  
25 27
/**
26 28
 * @author k.luther
......
41 43

  
42 44
    private Map<Integer, SpecimenOrObservationBase> specimenStore = new HashMap<>();
43 45
    private Map<Integer, Reference> referenceStore = new HashMap<>();
44

  
46
    private Map<Integer,List<TaxonNodeDto>> nodeChildrenMap = new HashMap<>();
45 47
    /**
46 48
     * @param config
47 49
     */
......
190 192
        return referenceStore;
191 193
    }
192 194

  
195
    /**
196
     * @return the nodeChildrenMap
197
     */
198
    public Map<Integer, List<TaxonNodeDto>> getNodeChildrenMap() {
199
        return nodeChildrenMap;
200
    }
201

  
202
    /**
203
     * @param nodeChildrenMap the nodeChildrenMap to set
204
     */
205
    public void setNodeChildrenMap(Map<Integer, List<TaxonNodeDto>> nodeChildrenMap) {
206
        this.nodeChildrenMap = nodeChildrenMap;
207
    }
208

  
193 209
}
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightExportTable.java
45 45
    protected static final String PARENT_FK = "Parent_FK";
46 46
    protected static final String SEC_REFERENCE_FK = "SecReference_FK";
47 47
    protected static final String SEC_REFERENCE = "SecReference";
48
    protected static final String SORT_INDEX = "SortIndex";
48 49
    //pro parte / misapplied
49 50
    protected static final String SYN_SEC_REFERENCE_FK = "SynSecReference_FK";
50 51
    protected static final String SYN_SEC_REFERENCE = "SynSecReference";
......
276 277
        };
277 278
    }
278 279
    final static String[] taxonColumns(){
279
        return new String[]{TAXON_ID, CLASSIFICATION_ID, CLASSIFICATION_TITLE, NAME_FK, PARENT_FK, SEC_REFERENCE_FK, SEC_REFERENCE};
280
        return new String[]{TAXON_ID, CLASSIFICATION_ID, CLASSIFICATION_TITLE, NAME_FK, PARENT_FK, SEC_REFERENCE_FK, SEC_REFERENCE, SORT_INDEX};
280 281
    }
281 282
    final static String[] synonymColumns(){
282 283
        return new String[]{SYNONYM_ID, TAXON_FK, NAME_FK, SYN_SEC_REFERENCE_FK, SYN_SEC_REFERENCE, SEC_REFERENCE_FK, SEC_REFERENCE,

Also available in: Unified diff