Revision c22a678f
Added by Katja Luther over 5 years ago
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
ref #7903: add sortIndex to taxon table in cdm light export