Project

General

Profile

« Previous | Next » 

Revision 3a99aa7c

Added by Katja Luther about 5 years ago

ref #8088: fix save taxonnode method

View differences:

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