package eu.etaxonomy.taxeditor.session;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.unitils.dbunit.annotation.DataSet;
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.service.DeleteResult;
import eu.etaxonomy.cdm.api.service.ICommonService;
import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.model.common.CdmBase;
PolytomousKeyNode rootNode = pKey.getRoot();
- PolytomousKeyNode child = rootNode.getChildAt(0);
- PolytomousKey subKey = child.getSubkey();
+ PolytomousKeyNode childNode = rootNode.getChildAt(0);
+ PolytomousKey subKey = HibernateProxyHelper.deproxy( childNode.getSubkey(), PolytomousKey.class);;
+
+
+ DeleteResult result = polytomousKeyService.delete(subKey.getUuid());
+ //A used subKey can't be deleted
+ if (result.isOk()){
+ Assert.fail();
+ }
- polytomousKeyService.delete(subKey.getUuid());
+ Set<Integer> ids = new HashSet<Integer>();
+ ids.add(2753);
+ ids.add(2754);
+ ids.add(2751);
+ List<PolytomousKeyNode> nodes = polytomousKeyNodeService.findById(ids);
+ for (PolytomousKeyNode child:nodes){
+ child.setSubkey(null);
+ // polytomousKeyNodeService.merge(child);
+ }
+ polytomousKeyNodeService.merge(nodes, true);
+ result = polytomousKeyService.delete(subKey.getUuid());
+ if (!result.isOk()){
+ Assert.fail();
+ }
// retrieving subkey shows its null
subKey = CdmBase.deproxy(polytomousKeyService.find(subKeyUuid),PolytomousKey.class);
Assert.assertNull(subKey);
pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
- rootNode = pKey.getRoot();
- child = rootNode.getChildAt(0);
- subKey = child.getSubkey();
- // subkey will not be null, because the delete functionality of the subkey
- // does not currently delete it from a polytomous key node
-
- // FIXME: With the new delete functionality this should be null, shouldn't it ?
- Assert.assertNotNull(subKey);
}