csvLine[table.getIndex(CdmLightExportTable.SYN_SEC_REFERENCE_FK)] = getId(state, synonym.getSec());
csvLine[table.getIndex(CdmLightExportTable.SYN_SEC_REFERENCE)] = getTitleCache(synonym.getSec());
csvLine[table.getIndex(CdmLightExportTable.PUBLISHED)] = synonym.isPublish()?"1":"0";
+ csvLine[table.getIndex(CdmLightExportTable.IS_PRO_PARTE)] = "0";
+ csvLine[table.getIndex(CdmLightExportTable.IS_PARTIAL)] = "0";
+ csvLine[table.getIndex(CdmLightExportTable.IS_MISAPPLIED)] = "0";
state.getProcessor().put(table, synonym, csvLine);
} catch (Exception e) {
state.getResult().addException(e, "An unexpected error occurred when handling synonym " +
public CdmLightExportResultProcessor(CdmLightExportState state) {
super();
this.state = state;
+ Map<String,String[]> resultMap;
+ for (CdmLightExportTable table: CdmLightExportTable.values()){
+ resultMap = new HashMap<>();
+ if (state.getConfig().isHasHeaderLines()){
+ resultMap.put(HEADER, table.getColumnNames());
+ }
+ result.put(table, resultMap);
+ }
+
}
SCIENTIFIC_NAME("ScientificName", nameColumns()),
NAME_RELATIONSHIP("NameRelationship",nameRelationColumns()),
HOMOTYPIC_GROUP("HomotypicGroup",homotypicGroupColumns()),
- NOMENCLATURAL_AUTHOR("TeamOrPerson", nomenclaturalAuthorColumns()),
+ NOMENCLATURAL_AUTHOR("PersonOrTeam", nomenclaturalAuthorColumns()),
NOMENCLATURAL_AUTHOR_TEAM_RELATION("PersonTeamRelation", nomenclaturalAuthorTeamRelColumns()),
TYPE_DESIGNATION("TypeDesignation", typeDesignationColumns()),
SPECIMEN("Specimen", specimenColumns()),
public int compare(TaxonNode node1, TaxonNode node2) {\r
if (node1 == null && node2 == null) {\r
return 0;\r
- }\r
- else if (node1 == null) {\r
+ } else if (node1 == null) {\r
return 1;\r
- }\r
- else if (node2 == null) {\r
- return -1;\r
- }\r
- if (node1.equals(node2)){\r
- return 0;\r
- }\r
- boolean node1Excluded = node1.isExcluded();\r
- boolean node2Excluded = node2.isExcluded();\r
- boolean node1Unplaced = node1.isUnplaced();\r
- boolean node2Unplaced = node2.isUnplaced();\r
-\r
- //They should both be put to the end (first unplaced then excluded)\r
- if (node2Excluded && !node1Excluded){\r
- return -1;\r
- }\r
- if (node2Unplaced && !(node1Unplaced || node1Excluded)){\r
+ } else if (node2 == null) {\r
return -1;\r
}\r
\r
- if (node1Excluded && !node2Excluded){\r
- return 1;\r
+ if (node1.equals(node2)){\r
+ return 0;\r
}\r
- if (node1Unplaced && !(node2Unplaced || node2Excluded)){\r
- return 1;\r
+ int nodeResult = compareNodes(node1, node2);\r
+ if (nodeResult != 0){\r
+ return nodeResult;\r
}\r
+ return compareNames(node1, node2);\r
+ }\r
\r
- if (node1Unplaced && node2Excluded){\r
- return -1;\r
- }\r
- if (node2Unplaced && node1Excluded){\r
- return 1;\r
- }\r
\r
+ /**\r
+ * @param node1\r
+ * @param node2\r
+ * @return\r
+ */\r
+ protected int compareNames(TaxonNode node1, TaxonNode node2) {\r
String titleCache1 = createSortableTitleCache(node1);\r
String titleCache2 = createSortableTitleCache(node2);\r
\r
}\r
\r
\r
+ /**\r
+ * @param node1\r
+ * @param node2\r
+ */\r
+ protected int compareNodes(TaxonNode node1, TaxonNode node2) {\r
+\r
+\r
+ boolean node1Excluded = node1.isExcluded();\r
+ boolean node2Excluded = node2.isExcluded();\r
+ boolean node1Unplaced = node1.isUnplaced();\r
+ boolean node2Unplaced = node2.isUnplaced();\r
+\r
+ //They should both be put to the end (first unplaced then excluded)\r
+ if (node2Excluded && !node1Excluded){\r
+ return -1;\r
+ }\r
+ if (node2Unplaced && !(node1Unplaced || node1Excluded)){\r
+ return -1;\r
+ }\r
+\r
+ if (node1Excluded && !node2Excluded){\r
+ return 1;\r
+ }\r
+ if (node1Unplaced && !(node2Unplaced || node2Excluded)){\r
+ return 1;\r
+ }\r
+\r
+ if (node1Unplaced && node2Excluded){\r
+ return -1;\r
+ }\r
+ if (node2Unplaced && node1Excluded){\r
+ return 1;\r
+ }\r
+ return 0;\r
+ }\r
+\r
+\r
private String createSortableTitleCache(TaxonNode taxonNode) {\r
\r
String titleCache = null;\r
package eu.etaxonomy.cdm.model.taxon;
import java.io.Serializable;
-import java.util.Comparator;
import java.util.UUID;
import eu.etaxonomy.cdm.model.name.Rank;
* @since 18.03.2010
*
*/
-public class TaxonNodeByRankAndNameComparator implements Serializable, Comparator<TaxonNode> {
+public class TaxonNodeByRankAndNameComparator extends TaxonNodeByNameComparator implements Serializable {
private static final long serialVersionUID = 2596641007876609704L;
@Override
public int compare(TaxonNode node1, TaxonNode node2) {
-
- boolean node1Excluded = node1.isExcluded();
- boolean node2Excluded = node2.isExcluded();
- boolean node1Unplaced = node1.isUnplaced();
- boolean node2Unplaced = node2.isUnplaced();
-
-
- if (node1.getUuid().equals(node2.getUuid())){
- return 0;
- }
- //They should both be put to the end (first unplaced then excluded)
- if (node2Excluded && !node1Excluded){
- return -1;
- }
- if (node2Unplaced && !(node1Unplaced || node1Excluded)){
- return -1;
- }
-
- if (node1Excluded && !node2Excluded){
- return 1;
+ if (node1.getUuid().equals(node2.getUuid())){
+ return 0;
}
- if (node1Unplaced && !(node2Unplaced || node2Excluded)){
- return 1;
- }
-
- if (node1Unplaced && node2Excluded){
- return -1;
- }
- if (node2Unplaced && node1Excluded){
- return 1;
- }
-
+ compareNodes(node1, node2);
TaxonBase<?> taxon1 = node1.getTaxon();
TaxonBase<?> taxon2 = node2.getTaxon();
}else if (rankTax1 == null && rankTax2 == null || rankTax1.equals(rankTax2)) {
if (name1 != null && name2 != null){
//same rank, order by name
- int result = name1.compareToName(name2);
- if (result == 0){
- return getTaxonUuid(taxon1, node1).compareTo(getTaxonUuid(taxon2, node2));
- }else{
- return result;
- }
+ return compareNames(node1, node2);
+
}else {
//this is maybe not 100% correct, we need to compare name cases, but it is a very rare case
return getTaxonTitle(taxon1, node1).compareTo(getTaxonTitle(taxon2, node2));
import eu.etaxonomy.cdm.model.common.OrderIndexComparator;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.strategy.cache.TagEnum;
+import eu.etaxonomy.cdm.strategy.cache.TaggedText;
/**
* @author k.luther
int rankOrder = OrderIndexComparator.instance().compare(rankTax1, rankTax2);
if (rankOrder == 0) {
- if (node1.getTitleCache() != null && node2.getTitleCache() != null){
+ if (node1.getTaggedTitle() != null && node2.getTaggedTitle() != null){
//same rank, order by name
- int result = node1.getNameTitleCache().compareTo(node2.getNameTitleCache());
+ String sortableName1 = "";
+ for (TaggedText tagged: node1.getTaggedTitle()){
+ if (tagged.getType().equals(TagEnum.name)){
+ sortableName1 += " " + tagged.getText();
+ }
+ }
+
+ String sortableName2 = "";
+ for (TaggedText tagged: node2.getTaggedTitle()){
+ if (tagged.getType().equals(TagEnum.name)){
+ sortableName2 += " " + tagged.getText();
+ }
+ }
+ int result = sortableName1.compareTo(sortableName2);
if (result == 0){
return node1.getTaxonUuid().compareTo(node2.getTaxonUuid());
}else{