Revision 6f2311af
Added by Katja Luther about 5 years ago
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java | ||
---|---|---|
17 | 17 |
import java.util.HashSet; |
18 | 18 |
import java.util.Iterator; |
19 | 19 |
import java.util.List; |
20 |
import java.util.Map.Entry; |
|
20 | 21 |
import java.util.Set; |
21 | 22 |
import java.util.UUID; |
22 | 23 |
|
... | ... | |
44 | 45 |
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; |
45 | 46 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
46 | 47 |
import eu.etaxonomy.cdm.model.common.DefinedTerm; |
48 |
import eu.etaxonomy.cdm.model.common.Language; |
|
49 |
import eu.etaxonomy.cdm.model.common.LanguageString; |
|
47 | 50 |
import eu.etaxonomy.cdm.model.common.TreeIndex; |
48 | 51 |
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet; |
49 | 52 |
import eu.etaxonomy.cdm.model.description.TaxonDescription; |
... | ... | |
822 | 825 |
TaxonNode parent = dao.load(parentNodeUuid); |
823 | 826 |
TaxonNode child = null; |
824 | 827 |
try{ |
825 |
child = parent.addChildTaxon(newTaxon, parent.getReference(), parent.getMicroReference());
|
|
828 |
child = parent.addChildTaxon(newTaxon,ref, microref);
|
|
826 | 829 |
}catch(Exception e){ |
827 | 830 |
result.addException(e); |
828 | 831 |
result.setError(); |
... | ... | |
844 | 847 |
public UpdateResult saveNewTaxonNode(TaxonNode newTaxonNode){ |
845 | 848 |
UpdateResult result = new UpdateResult(); |
846 | 849 |
UUID parentUuid = newTaxonNode.getParent().getUuid(); |
847 |
TaxonNode parent = dao.load(parentUuid); |
|
848 |
if (newTaxonNode.getTaxon().getId() != 0){ |
|
849 |
Taxon taxon = (Taxon)taxonService.load(newTaxonNode.getTaxon().getUuid()); |
|
850 |
newTaxonNode.setTaxon(taxon); |
|
851 |
}else{ |
|
852 |
Taxon taxon = newTaxonNode.getTaxon(); |
|
853 |
taxon.removeTaxonNode(newTaxonNode); |
|
854 |
UUID taxonUUID = taxonService.saveOrUpdate(taxon); |
|
855 |
taxon = (Taxon) taxonService.load(taxonUUID); |
|
856 |
newTaxonNode.setTaxon(taxon); |
|
857 |
} |
|
850 |
Taxon taxon = null; |
|
858 | 851 |
|
859 |
if (newTaxonNode.getTaxon().getName().getId() != 0){ |
|
852 |
if (newTaxonNode.getTaxon().getId() != 0){ |
|
853 |
taxon = (Taxon)taxonService.load(newTaxonNode.getTaxon().getUuid()); |
|
854 |
//newTaxonNode.setTaxon(taxon); |
|
855 |
}else if (newTaxonNode.getTaxon().getName().getId() != 0){ |
|
860 | 856 |
TaxonName name = nameService.load(newTaxonNode.getTaxon().getName().getUuid()); |
861 |
newTaxonNode.getTaxon().setName(name); |
|
857 |
taxon = newTaxonNode.getTaxon(); |
|
858 |
taxon.setName(name); |
|
862 | 859 |
}else{ |
863 | 860 |
for (HybridRelationship rel : newTaxonNode.getTaxon().getName().getHybridChildRelations()){ |
864 | 861 |
if (!rel.getHybridName().isPersited()) { |
... | ... | |
869 | 866 |
} |
870 | 867 |
} |
871 | 868 |
} |
869 |
if (taxon == null){ |
|
870 |
taxon = newTaxonNode.getTaxon(); |
|
871 |
} |
|
872 |
taxon.removeTaxonNode(newTaxonNode); |
|
873 |
if (taxon.getId() == 0){ |
|
874 |
UUID taxonUUID = taxonService.saveOrUpdate(taxon); |
|
875 |
taxon = (Taxon) taxonService.load(taxonUUID); |
|
876 |
|
|
877 |
} |
|
872 | 878 |
|
879 |
|
|
880 |
TaxonNode parent = dao.load(parentUuid); |
|
873 | 881 |
TaxonNode child = null; |
874 | 882 |
try{ |
875 |
child = parent.addChildNode(newTaxonNode, newTaxonNode.getReference(), newTaxonNode.getMicroReference());
|
|
883 |
child = parent.addChildTaxon(taxon, newTaxonNode.getReference(), newTaxonNode.getMicroReference());
|
|
876 | 884 |
|
877 | 885 |
}catch(Exception e){ |
878 | 886 |
result.addException(e); |
879 | 887 |
result.setError(); |
880 | 888 |
return result; |
881 | 889 |
} |
890 |
|
|
891 |
child.setUnplaced(newTaxonNode.isUnplaced()); |
|
892 |
child.setExcluded(newTaxonNode.isExcluded()); |
|
893 |
for (TaxonNodeAgentRelation agentRel :newTaxonNode.getAgentRelations()){ |
|
894 |
child.addAgentRelation(agentRel.getType(), agentRel.getAgent()); |
|
895 |
} |
|
896 |
for (Entry<Language, LanguageString> entry: newTaxonNode.getExcludedNote().entrySet()){ |
|
897 |
child.putExcludedNote(entry.getKey(), entry.getValue().getText()); |
|
898 |
} |
|
899 |
|
|
900 |
newTaxonNode = null; |
|
882 | 901 |
dao.saveOrUpdate(child); |
883 | 902 |
|
884 | 903 |
result.addUpdatedObject(child.getParent()); |
Also available in: Unified diff
ref #8088: fix save taxonnode method