Project

General

Profile

« Previous | Next » 

Revision 0c9ec93a

Added by Katja Luther over 8 years ago

fix move taxon node in natural order

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java
113 113
	public int countAllNodesForClassification(Classification classification);
114 114

  
115 115

  
116
    /**
117
     * @param taxonNode
118
     * @param newParentTaxonNode
119
     * @return
120
     */
121
    public UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParentTaxonNode);
122

  
123

  
124

  
125

  
126 116
    /**
127 117
     * @param taxonNodeUuid
128 118
     * @param newParentTaxonNodeUuid
129 119
     * @return
130 120
     */
131
    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID newParentTaxonNodeUuid);
121
    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID newParentTaxonNodeUuid, boolean parent);
132 122

  
133 123

  
134 124

  
......
137 127
     * @param newParentNodeUuid
138 128
     * @return
139 129
     */
140
    UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid);
130
    UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid, boolean parent);
131

  
132
    /**
133
     * @param taxonNode
134
     * @param newParent
135
     * @param parent
136
     * @return
137
     */
138
    UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParent, boolean parent);
141 139

  
142 140

  
143 141

  
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java
490 490

  
491 491
    @Override
492 492
    @Transactional
493
    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID targetNodeUuid){
494
    	UpdateResult result = new UpdateResult();
495

  
496

  
497
    	   TaxonNode taxonNode = dao.load(taxonNodeUuid);
498
    	   TaxonNode targetNode = dao.load(targetNodeUuid);
499
    	   Integer sortIndex = targetNode.getSortIndex();
500
    	   TaxonNode parent = targetNode.getParent();
501
    	   result.addUpdatedObject(parent);
502
           result.addUpdatedObject(taxonNode.getParent());
503
           result.setCdmEntity(taxonNode);
504
    	   parent.addChildNode(taxonNode, sortIndex+1, taxonNode.getReference(),  taxonNode.getMicroReference());
505
    	   dao.saveOrUpdate(parent);
506

  
507
        return result;
493
    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID targetNodeUuid, boolean isParent){
494
        TaxonNode taxonNode = dao.load(taxonNodeUuid);
495
    	TaxonNode targetNode = dao.load(targetNodeUuid);
496
    	return moveTaxonNode(taxonNode, targetNode, isParent);
508 497
    }
509 498

  
510 499
    @Override
511 500
    @Transactional
512
    public UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParent){
501
    public UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParent, boolean isParent){
513 502
        UpdateResult result = new UpdateResult();
514
        result.addUpdatedObject(taxonNode.getParent());
503

  
504
        Integer sortIndex;
505
        if (isParent){
506

  
507
            sortIndex = newParent.getChildNodes().size();
508
        }else{
509
            sortIndex = newParent.getSortIndex() +1;
510
            newParent = newParent.getParent();
511
        }
515 512
        result.addUpdatedObject(newParent);
513
        result.addUpdatedObject(taxonNode.getParent());
516 514
        result.setCdmEntity(taxonNode);
517
        Reference<?> reference = taxonNode.getReference();
518
        String microReference = taxonNode.getMicroReference();
519
        newParent.addChildNode(taxonNode, reference, microReference);
520
        dao.saveOrUpdate(taxonNode);
515
        newParent.addChildNode(taxonNode, sortIndex, taxonNode.getReference(),  taxonNode.getMicroReference());
516
        dao.saveOrUpdate(newParent);
521 517

  
522 518
        return result;
523 519
    }
......
526 522

  
527 523
    @Override
528 524
    @Transactional
529
    public UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid){
525
    public UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid, boolean isParent){
530 526
        UpdateResult result = new UpdateResult();
531 527
        TaxonNode targetNode = dao.load(newParentNodeUuid);
532 528
        for (UUID taxonNodeUuid: taxonNodeUuids){
533 529
            TaxonNode taxonNode = dao.load(taxonNodeUuid);
534
            result.includeResult(moveTaxonNode(taxonNode,targetNode));
530
            result.includeResult(moveTaxonNode(taxonNode,targetNode, isParent));
535 531
        }
536 532
        return result;
537 533
    }

Also available in: Unified diff