import java.util.ArrayList;\r
import java.util.Collection;\r
import java.util.HashMap;\r
+import java.util.HashSet;\r
import java.util.Iterator;\r
import java.util.List;\r
import java.util.Map;\r
}\r
\r
\r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
+ //#3465\r
@Override\r
- public void setSecundumForSubtreeAcceptedTaxa(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail) {\r
+ public Set<Taxon> setSecundumForSubtreeAcceptedTaxa(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail) {\r
//for some reason this does not work, maybe because the listeners are not activated,\r
//but also the first taxon for some reason does not get updated in terms of secundum, but only by the udpate listener\r
// String where = "SELECT t.id FROM TaxonNode tn JOIN tn.taxon t " +\r
}\r
}\r
\r
+ Set<Taxon> result = new HashSet<>(taxonList);\r
+ return result;\r
+\r
}\r
\r
@Override\r
- public void setSecundumForSubtreeSynonyms(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail) {\r
+ public Set<Synonym> setSecundumForSubtreeSynonyms(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail) {\r
String where = "SELECT syn FROM TaxonNode tn JOIN tn.taxon t JOIN t.synonyms syn" +\r
" WHERE tn.treeIndex like '%s%%' ";\r
if (!overwriteExisting){\r
taxon.setSecMicroReference(null);\r
}\r
}\r
+ Set<Synonym> result = new HashSet<>(synonymList);\r
+ return result;\r
}\r
\r
\r
import java.util.Collection;\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.Set;\r
import java.util.UUID;\r
\r
import eu.etaxonomy.cdm.model.common.TreeIndex;\r
import eu.etaxonomy.cdm.model.reference.Reference;\r
import eu.etaxonomy.cdm.model.taxon.Classification;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;\r
import eu.etaxonomy.cdm.persistence.dao.common.IAnnotatableDao;\r
\r
/**\r
* @param ref\r
+ * @return\r
*/\r
- public void setSecundumForSubtreeAcceptedTaxa(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail);\r
+ public Set<Taxon> setSecundumForSubtreeAcceptedTaxa(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail);\r
\r
/**\r
* @param ref\r
*/\r
- public void setSecundumForSubtreeSynonyms(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail);\r
+ public Set<Synonym> setSecundumForSubtreeSynonyms(TreeIndex subTreeIndex, Reference newSec, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail);\r
\r
}\r
import eu.etaxonomy.cdm.api.service.config.SetSecundumForSubtreeConfigurator;
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
import eu.etaxonomy.cdm.model.common.DefinedTerm;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Classification;
* @param configurator
* @return UpdateResult
*/
- UpdateResult setSecundumForSubtree(SetSecundumForSubtreeConfigurator configurator);
+ UpdateResult setSecundumForSubtree(SetSecundumForSubtreeConfigurator configurator, IProgressMonitor monitor);
}
import eu.etaxonomy.cdm.api.service.pager.Pager;
import eu.etaxonomy.cdm.api.service.pager.PagerUtils;
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
+import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
import eu.etaxonomy.cdm.hibernate.HHH_9751_Util;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
}
@Override
- public UpdateResult setSecundumForSubtree(SetSecundumForSubtreeConfigurator config) {
+ public UpdateResult setSecundumForSubtree(SetSecundumForSubtreeConfigurator config, IProgressMonitor monitor) {
UpdateResult result = new UpdateResult();
+ if (monitor == null){
+ monitor = DefaultProgressMonitor.NewInstance();
+ }
UUID subtreeUuid = config.getSubtreeUuid();
if (subtreeUuid == null){
result.setError();
result.addException(new NullPointerException("No subtree given"));
+ monitor.done();
return result;
}
TaxonNode subTree = find(subtreeUuid);
if (subTree == null){
result.setError();
result.addException(new NullPointerException("Subtree does not exist"));
+ monitor.done();
return result;
}
TreeIndex subTreeIndex = TreeIndex.NewInstance(subTree.treeIndex());
Reference ref = config.getNewSecundum();
if (config.isIncludeAcceptedTaxa()){
- dao.setSecundumForSubtreeAcceptedTaxa(subTreeIndex, ref, config.isOverwriteExistingAccepted(), config.isIncludeSharedTaxa() ,config.isEmptySecundumDetail());
+ Set<Taxon> updatedTaxa = dao.setSecundumForSubtreeAcceptedTaxa(subTreeIndex, ref, config.isOverwriteExistingAccepted(), config.isIncludeSharedTaxa() ,config.isEmptySecundumDetail());
+ result.addUpdatedObjects(updatedTaxa);
}
if (config.isIncludeSynonyms()){
- dao.setSecundumForSubtreeSynonyms(subTreeIndex, ref, config.isOverwriteExistingSynonyms(), config.isIncludeSharedTaxa() , config.isEmptySecundumDetail());
+ Set<Synonym> updatedSynonyms = dao.setSecundumForSubtreeSynonyms(subTreeIndex, ref, config.isOverwriteExistingSynonyms(), config.isIncludeSharedTaxa() , config.isEmptySecundumDetail());
+ result.addUpdatedObjects(updatedSynonyms);
}
return result;
private boolean emptySecundumDetail = true;
private boolean includeSharedTaxa = true;
+
+
+ /**
+ * @param subtreeUuid
+ * @param newSecundum
+ */
+ public SetSecundumForSubtreeConfigurator(UUID subtreeUuid, Reference newSecundum) {
+ super();
+ this.subtreeUuid = subtreeUuid;
+ this.newSecundum = newSecundum;
+ }
/**
* @return the subtreeUuid
*/
Assert.assertNotNull(taxon5.getSecMicroReference());
//set secundum
- SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator();
- config.setSubtreeUuid(subTreeUuid);
- config.setNewSecundum(newSec);
- taxonNodeService.setSecundumForSubtree(config);
+ SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator(subTreeUuid, newSec);
+ taxonNodeService.setSecundumForSubtree(config, null);
commitAndStartNewTransaction(new String[]{"TaxonBase","TaxonBase_AUD"});
Assert.assertEquals(newSec, taxonService.find(1).getSec());
Assert.assertNotNull(taxon5.getSecMicroReference());
//set secundum
- SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator();
- config.setSubtreeUuid(subTreeUuid);
- config.setNewSecundum(newSec);
+ SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator(subTreeUuid, newSec);
config.setOverwriteExistingAccepted(false);
config.setOverwriteExistingSynonyms(false);
- taxonNodeService.setSecundumForSubtree(config);
+ taxonNodeService.setSecundumForSubtree(config, null);
commitAndStartNewTransaction(new String[]{"TaxonBase","TaxonBase_AUD"});
Assert.assertEquals(newSec, taxonService.find(1).getSec());
Assert.assertNotNull(taxon5.getSecMicroReference());
//set secundum
- SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator();
- config.setSubtreeUuid(subTreeUuid);
- config.setNewSecundum(newSec);
+ SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator(subTreeUuid, newSec);
config.setIncludeSynonyms(false);
- taxonNodeService.setSecundumForSubtree(config);
+ taxonNodeService.setSecundumForSubtree(config, null);
commitAndStartNewTransaction(new String[]{"TaxonBase","TaxonBase_AUD"});
Assert.assertEquals(newSec, taxonService.find(1).getSec());
Assert.assertNotNull(taxon5.getSecMicroReference());
//set secundum
- SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator();
- config.setSubtreeUuid(subTreeUuid);
- config.setNewSecundum(newSec);
+ SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator(subTreeUuid, newSec);
config.setIncludeAcceptedTaxa(false);
- taxonNodeService.setSecundumForSubtree(config);
+ taxonNodeService.setSecundumForSubtree(config, null);
commitAndStartNewTransaction(new String[]{"TaxonBase","TaxonBase_AUD"});
Assert.assertNull(taxonService.find(1).getSec());
Assert.assertNotNull(taxon5.getSecMicroReference());
//set secundum
- SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator();
- config.setSubtreeUuid(subTreeUuid);
- config.setNewSecundum(newSec);
+ SetSecundumForSubtreeConfigurator config = new SetSecundumForSubtreeConfigurator(subTreeUuid, newSec);
config.setIncludeSharedTaxa(false);
- taxonNodeService.setSecundumForSubtree(config);
+ taxonNodeService.setSecundumForSubtree(config, null);
commitAndStartNewTransaction(new String[]{"TaxonBase","TaxonBase_AUD"});
Assert.assertNull("Shared taxon must not be set", taxonService.find(1).getSec());