Project

General

Profile

« Previous | Next » 

Revision 06cfae86

Added by Katja Luther over 8 years ago

fix #5104 and #5328

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java
1278 1278

  
1279 1279
        if (result.isOk()){
1280 1280

  
1281
            synonym = HibernateProxyHelper.deproxy(dao.merge(synonym), Synonym.class);
1281
            synonym = HibernateProxyHelper.deproxy(this.load(synonym.getUuid()), Synonym.class);
1282 1282

  
1283 1283
            //remove synonymRelationship
1284 1284
            Set<Taxon> taxonSet = new HashSet<Taxon>();
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java
15 15
import java.util.Collection;
16 16
import java.util.Enumeration;
17 17
import java.util.HashSet;
18
import java.util.Iterator;
18 19
import java.util.List;
19 20
import java.util.Locale;
20 21
import java.util.Set;
......
28 29
import org.springframework.transaction.annotation.Transactional;
29 30

  
30 31
import eu.etaxonomy.cdm.api.service.UpdateResult.Status;
32
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
31 33
import eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator;
32 34
import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
35
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
33 36
import eu.etaxonomy.cdm.api.service.pager.Pager;
34 37
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
35 38
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
......
273 276
			config = new TermDeletionConfigurator();
274 277
		}
275 278
//		boolean isInternal = config.isInternal();
276
		DeleteResult result = new DeleteResult();
279

  
277 280
		Set<DefinedTermBase> termsToSave = new HashSet<DefinedTermBase>();
278
		CdmBase.deproxy(dao.merge(term), DefinedTermBase.class);
279 281

  
282
		DeleteResult result = isDeletable(term, config);
283
		//CdmBase.deproxy(dao.merge(term), DefinedTermBase.class);
280 284
		try {
281 285
			//generalization of
282 286
			Set<DefinedTermBase> specificTerms = term.getGeneralizationOf();
......
413 417
		super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);
414 418
	}
415 419

  
420
	@Override
421
    public DeleteResult isDeletable(DefinedTermBase term, DeleteConfiguratorBase config){
422
        DeleteResult result = new DeleteResult();
423
        Set<CdmBase> references = commonService.getReferencingObjectsForDeletion(term);
424
        if (references != null){
425
            result.addRelatedObjects(references);
426
            Iterator<CdmBase> iterator = references.iterator();
427
            CdmBase ref;
428
            while (iterator.hasNext()){
429
                ref = iterator.next();
430
                if (ref instanceof TermVocabulary){
431
                    result.getRelatedObjects().remove(ref);
432
                }else{
433

  
434
                    String message = "An object of " + ref.getClass().getName() + " with ID " + ref.getId() + " is referencing the object" ;
435
                    result.addException(new ReferencedObjectUndeletableException(message));
436
                    result.setAbort();
437
                }
438

  
439
            }
440
        }
441
        return result;
442
    }
443

  
416 444
}
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplBusinessTest.java
208 208
	@Test
209 209
	public final void testChangeSynonymToRelatedTaxon() {
210 210
		t1.addSynonym(s1, homoTypicSynonymRelationshipType);
211
		t1.addSynonym(s2, homoTypicSynonymRelationshipType);
211 212
		HashSet newInstances = new HashSet<TaxonBase>();
212 213
		newInstances.add(s1);
213 214
		newInstances.add(t1);
......
229 230
		assertFalse(synonymName.getTaxonBases().contains(s1));
230 231
		assertTrue(synonymName.getTaxonBases().contains(newTaxon));
231 232

  
233
		synonymName = s2.getName();
234
        newTaxon = service.changeSynonymToRelatedTaxon(s2, t1, TaxonRelationshipType.MISAPPLIED_NAME_FOR(), reference, referenceDetail);
235
        //check removeTaxonBase()
236
        //UUID s1UUID = service.update(s1);
237
        newTaxonUUID = service.save(newTaxon).getUuid();
238

  
239

  
240
        s2 =(Synonym)service.find(s2.getUuid());
241
        newTaxon = (Taxon)service.find(newTaxonUUID);
242
        assertNull(s2);
243

  
244
        assertFalse(synonymName.getTaxonBases().contains(s2));
245
        assertTrue(synonymName.getTaxonBases().contains(newTaxon));
246

  
247

  
232 248
	}
233 249
//
234 250
//	Moved to TaxonServiceImplTest
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TermServiceImplTest.java
32 32
import eu.etaxonomy.cdm.model.common.TermType;
33 33
import eu.etaxonomy.cdm.model.common.TermVocabulary;
34 34
import eu.etaxonomy.cdm.model.location.NamedArea;
35
import eu.etaxonomy.cdm.model.name.BotanicalName;
35 36
import eu.etaxonomy.cdm.model.name.Rank;
36 37
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
38
import eu.etaxonomy.cdm.model.taxon.Taxon;
37 39
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
38 40

  
39 41
/**
......
51 53
    @SpringBeanByType
52 54
    private IVocabularyService vocabularyService;
53 55

  
56
    @SpringBeanByType
57
    private ITaxonService taxonService;
58

  
54 59
/* ************************* TESTS *************************************************/
55 60

  
56 61
    /**
......
190 195

  
191 196

  
192 197
    @Test
198
    @Ignore
193 199
    public void testDeleteTerms(){
194 200
    	final String[] tableNames = new String[]{
195 201
                "DefinedTermBase","Representation"};
......
218 224
    	termBase =  termService.load(termUUID);
219 225
    	assertNull(termBase);
220 226

  
227

  
228
    	//TermVocabulary<DefinedTerm> voc = TermVocabulary.NewInstance(TermType.Feature, "TestFeatures", null, null, null);
229
        voc.addTerm(DefinedTerm.NewDnaMarkerInstance("test", "marker", "t"));
230
        vocUUID = vocabularyService.save(voc).getUuid();
231

  
232
        voc = vocabularyService.find(vocUUID);
233
        terms = voc.getTerms();
234
        termBase =terms.iterator().next();
235
        termUUID = termBase.getUuid();
236
        termBase = termService.load(termUUID);
237
        BotanicalName testName = BotanicalName.NewInstance(Rank.SPECIES());
238
        Taxon testTaxon = Taxon.NewInstance(testName,null);
239
        testTaxon.addIdentifier("Test", (DefinedTerm) termBase);
240
        taxonService.save(testTaxon);
241
        termService.delete(termBase, null);
242
        //commitAndStartNewTransaction(tableNames);
243
        termBase =  termService.load(termUUID);
244
        assertNotNull(termBase);
221 245
    }
222 246

  
223 247
    /* (non-Javadoc)

Also available in: Unified diff