import eu.etaxonomy.cdm.model.common.TermIdInVocabularyComparator;
import eu.etaxonomy.cdm.model.common.TermLanguageComparator;
import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
EventList<TaxonDistributionDTO> taxonList;
Map<UUID,Map<NamedArea,Set<DescriptionElementBase>>> taxonDistributionMap = new HashMap();
- Set<TaxonDescription> descriptionsToSave;
+ List<TaxonDistributionDTO> descriptionsToSave = new ArrayList();
SortedSet<DefinedTermBase> areas;
}
- public Set<TaxonDescription> getDescriptionsToSave() {
+ public List<TaxonDistributionDTO> getDescriptionsToSave() {
return descriptionsToSave;
}
- public void setDescriptionsToSave(Set<TaxonDescription> descriptionsToSave) {
+ public void setDescriptionsToSave(List<TaxonDistributionDTO> descriptionsToSave) {
this.descriptionsToSave = descriptionsToSave;
}
@Override
public void widgetSelected(SelectionEvent event) {
- defaultSource = ReferenceSelectionDialog.select(AbstractUtility.getShell(), null);
+ defaultSource = part.getCdmEntitySession().load(ReferenceSelectionDialog.select(AbstractUtility.getShell(), null), true);
String defaultSourceStr = (defaultSource == null) ? "" : "Default Source Reference: " + defaultSource.getTitleCache();
if (defaultSourceStr.length()> 100){
}
taxonList.stream().forEach(wrapper->DistributionEditor.this.taxonList.add(wrapper));
statusLabel.setText(ELEMENT_COUNT + (taxonList != null ? taxonList.size() : UNKNOWN));
- Iterator<TaxonDistributionDTO> iterator = this.taxonList.iterator();
- while (iterator.hasNext()){
- TaxonDistributionDTO dto = iterator.next();
- TaxonDescriptionDTO descriptionDto = dto.getDescriptionsWrapper();
- for (TaxonDescription desc: descriptionDto.getDescriptions()){
- for (DescriptionElementBase descElement: desc.getElements()){
- if (descElement instanceof Distribution){
- Map<NamedArea, Set<DescriptionElementBase>> distributionsMap = taxonDistributionMap.get(dto.getTaxonUuid());
-
- if (distributionsMap == null){
- distributionsMap = new HashMap();
- taxonDistributionMap.put(dto.getTaxonUuid(), distributionsMap);
- }
- Set<DescriptionElementBase> distributions = distributionsMap.get(((Distribution) descElement).getArea());
- if (distributions == null){
- distributions = new HashSet();
- distributionsMap.put(((Distribution)descElement).getArea(), distributions);
- }
- distributions.add(descElement);
-
- }
- }
- }
- }
+ createTaxonDistributionMap();
}
+ protected void createTaxonDistributionMap() {
+ Iterator<TaxonDistributionDTO> iterator = this.taxonList.iterator();
+ while (iterator.hasNext()){
+ TaxonDistributionDTO dto = iterator.next();
+ TaxonDescriptionDTO descriptionDto = dto.getDescriptionsWrapper();
+ for (TaxonDescription desc: descriptionDto.getDescriptions()){
+ if(this.part.getCdmEntitySession()!=null){
+ this.part.getCdmEntitySession().load(desc, true);
+ }
+ for (DescriptionElementBase descElement: desc.getElements()){
+ if (descElement instanceof Distribution){
+ Map<NamedArea, Set<DescriptionElementBase>> distributionsMap = taxonDistributionMap.get(dto.getTaxonUuid());
+
+ if (distributionsMap == null){
+ distributionsMap = new HashMap();
+ taxonDistributionMap.put(dto.getTaxonUuid(), distributionsMap);
+ }
+ Set<DescriptionElementBase> distributions = distributionsMap.get(((Distribution) descElement).getArea());
+ if (distributions == null){
+ distributions = new HashSet();
+ distributionsMap.put(((Distribution)descElement).getArea(), distributions);
+ }
+ distributions.add(descElement);
-
- public List<DescriptionBase> getDistributions() {
- List<DescriptionBase> descriptions = new ArrayList();
-
- taxonList.forEach(taxonDto -> taxonDto.getDescriptionsWrapper().getDescriptions().forEach(taxDesc -> descriptions.add(taxDesc)));
-
- for (DescriptionBase description: descriptions){
- List<DescriptionElementBase> toDelete = new ArrayList();
- for (Object desc: description.getElements()){
- if (desc instanceof Distribution){
- Distribution distribution = (Distribution) desc;
- if (distribution.getStatus() == null || !distribution.getStatus().isPersited()){
- toDelete.add(distribution);
+ }
}
}
}
- for (DescriptionElementBase element: toDelete){
- description.removeElement(element);
- }
+ }
- }
- return descriptions;
- }
private void initLabels() {
return defaultSource;
}
+ /**
+ * @param result
+ */
+ public void reloadDistributions() {
+ loadDistributions(taxonList);
+
+ }
+
}
*/
package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
import javax.annotation.PostConstruct;
@Override
public List<DescriptionBase> getRootEntities() {
- return editor.getDistributions();
+ List<DescriptionBase> rootEntities = new ArrayList();
+ editor.taxonList.forEach(dto -> rootEntities.addAll(dto.getDescriptionsWrapper().getDescriptions()));
+ return rootEntities;
}
/**
return conversation;
}
+
@Persist
@Override
public void save(IProgressMonitor monitor) {
- List<MergeResult<DescriptionBase>> result =CdmStore.getService(IDescriptionService.class).merge(editor.getDistributions(), true);
-// for (MergeResult mergeRes: result){
-// mergeRes.getNewEntities()
-// }
- conversation.commit();
- //editor.getDescriptionsToSave().clear();
-
- dirty.setDirty(false);
+ saveDistributions();
+ dirty.setDirty(false);
+ }
+
+ protected void saveDistributions() {
+ Set<TaxonDistributionDTO> coll = new HashSet();
+ editor.taxonList.forEach(dto->coll.add(dto));
+ List<MergeResult<DescriptionBase>> result = CdmStore.getService(IDescriptionService.class).mergeDescriptionElements(coll, true);
+ for (MergeResult<DescriptionBase> mergeRes: result ){
+ cdmEntitySession.load(mergeRes, true);
+ }
+ // editor.createTaxonDistributionMap();
+ conversation.commit();
+ this.dirty.setDirty(false);
+ editor.getDescriptionsToSave().clear();
}
/**
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.location.NamedArea;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
/**
* @author k.luther
}else if (elements.size() == 1){
DescriptionElementBase base = elements.iterator().next();
Distribution distr = (Distribution) base;
+ editor.descriptionsToSave.add( (TaxonDistributionDTO) rowWrapper);
//TODO set value corresponding to preference
if (distr.getStatus() != null){
if (distr.getStatus().getLabel() == ""){
distr.setStatus(null);
super.setCanonicalValue("");
+
}else{
super.setCanonicalValue(distr.getStatus().getLabel());
}
distributionMap.put(area, elements);
}
elements.add(newDistribution);
- // ((TaxonDistributionDTO) rowWrapper).getDistributionMap().put(area, elements);
Set<TaxonDescription> descriptionSet = ((TaxonDistributionDTO) rowWrapper).getDescriptionsWrapper().getDescriptions();
Iterator<TaxonDescription> iterator = descriptionSet.iterator();
if (iterator.hasNext()){
- iterator.next().addElement(newDistribution);
+ TaxonDescription desc = iterator.next();
+ desc.addElement(newDistribution);
+ editor.descriptionsToSave.add((TaxonDistributionDTO) rowWrapper);
}else{
- Taxon taxon = ((TaxonDistributionDTO) rowWrapper).getTaxon();
- TaxonDescription desc = TaxonDescription.NewInstance(taxon);
+
+ TaxonDescription desc = TaxonDescription.NewInstance();
desc.addElement(newDistribution);
((TaxonDistributionDTO) rowWrapper).getDescriptionsWrapper().getDescriptions().add(desc);
+ editor.descriptionsToSave.add((TaxonDistributionDTO) rowWrapper);
}
}
}