*/
@Override
public void onChange(CdmChangeEvent event) {
- //editorDirtyStateChanged();
+ editorDirtyStateChanged();
IEditorPart activeEditor = getActiveEditor();
if (activeEditor instanceof IDirtyMarkable) {
for(CdmBase cdmBase : event.getChangedObjects()) {
package eu.etaxonomy.taxeditor.editor.key.polytomous;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.UUID;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
*/
@Override
public void merge() {
- key = CdmStore.getService(IPolytomousKeyService.class).merge(key);
+ key = CdmStore.getService(IPolytomousKeyService.class).merge(key,true);
+ }
+
+ @Override
+ public Map<Object, List<String>> getPropertyPathsMap() {
+ Map<Object,List<String>> propertyPathsMap = new HashMap<Object,List<String>>();
+
+ List<String> polytomousKeyNodePropertyPaths = Arrays.asList(new String[] {
+ "statement"
+ });
+ propertyPathsMap.put("children", polytomousKeyNodePropertyPaths);
+ return propertyPathsMap;
}
}
package eu.etaxonomy.taxeditor.editor.key.polytomous;
+import java.util.List;
+
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.MenuManager;
*/
@Override
public void doSave(IProgressMonitor monitor) {
-
}
/*
*/
@Override
public void changed(Object element) {
- if(element != null) {
- viewer.update(element, null);
- }
-
- if (element instanceof PolytomousKeyNode) {
- PolytomousKeyNode node = (PolytomousKeyNode) element;
- viewer.update(node, null);
- for (PolytomousKeyNode child : node.getChildren()) {
- viewer.update(child, null);
- }
+ if(element != null) {
+ viewer.update(element, null);
+ }
- }
- viewer.refresh();
+ if (element instanceof PolytomousKeyNode) {
+ List<PolytomousKeyNode> children = ((PolytomousKeyNode) element)
+ .getParent().getChildren();
+ for (PolytomousKeyNode child : children) {
+ viewer.update(child, null);
+ }
+ }
+ viewer.refresh();
}
/* (non-Javadoc)
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
-import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
-import eu.etaxonomy.taxeditor.operation.RemotingCdmMergeOperation;
+import eu.etaxonomy.taxeditor.operation.RemotingCdmDefaultOperation;
/**
* @author cmathew
* @date 21 Jul 2015
*
*/
-public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmMergeOperation {
+public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmDefaultOperation {
private final PolytomousKeyNode parentNode;
super(LABEL, Action.Create, source, async);
this.parentNode = parentNode;
}
+
/* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.operation.RemotingCdmMergeOperation#doMergeExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ * @see eu.etaxonomy.taxeditor.operation.RemotingCdmSimpleOperation#doSimpleExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
*/
@Override
- protected CdmBase doMergeExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
- PolytomousKeyNode childNode = PolytomousKeyNode.NewInstance();
- parentNode.addChild(childNode);
- //childNode.getModifyingText().put(CdmStore.getDefaultLanguage(),LanguageString.NewInstance("",CdmStore.getDefaultLanguage()));
- return CdmApplicationState.getCurrentAppConfig().getPolytomousKeyNodeService().merge(parentNode);
+ protected CdmBase doSimpleExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
+ PolytomousKeyNode childNode = PolytomousKeyNode.NewInstance();
+ parentNode.addChild(childNode);
+ return childNode;
}
}
return defaultService.merge(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public AgentBase merge(AgentBase arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
+
}
return defaultService.merge(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public Classification merge(Classification arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
+
}
return defaultService.merge(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public Collection merge(Collection arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
+
}
return defaultService.moveDescriptionElementsToDescription(arg0, arg1, arg2, arg3);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public DescriptionBase merge(DescriptionBase arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
+
}
public List<TaxonNameBase> merge(List<TaxonNameBase> arg0) {
return defaultService.merge(arg0);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public TaxonNameBase merge(TaxonNameBase arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
}
return defaultService.moveSequence(arg0, arg1, arg2);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public SpecimenOrObservationBase merge(SpecimenOrObservationBase arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
+
}
public List<Reference> merge(List<Reference> arg0) {
return defaultService.merge(arg0);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public Reference merge(Reference arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
}
return defaultService.changeSynonymToAcceptedTaxon(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public TaxonBase merge(TaxonBase arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
+
}
public DeleteResult delete(UUID arg0, TermDeletionConfigurator arg1) {
return defaultService.delete(arg0, arg1);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
+ */
+ @Override
+ public DefinedTermBase merge(DefinedTermBase arg0, boolean arg1) {
+ return defaultService.merge(arg0, arg1);
+ }
}
* @date 21 Jul 2015
*
*/
-public abstract class RemotingCdmMergeOperation extends RemotingCdmOperation {
+public abstract class RemotingCdmDefaultOperation extends RemotingCdmOperation {
- private CdmBase mergedCdmEntity;
+ private CdmBase cdmEntity;
- public RemotingCdmMergeOperation(String label, Action action, Object source, boolean async) {
+ public RemotingCdmDefaultOperation(String label, Action action, Object source, boolean async) {
super(label, action, source, async);
}
/* (non-Javadoc)
@Override
protected boolean doExecute(IProgressMonitor monitor, IAdaptable info) {
try {
- mergedCdmEntity = doMergeExecute(monitor, info);
+ cdmEntity = doSimpleExecute(monitor, info);
} catch (Exception e) {
throw new RuntimeException(e);
}
return true;
}
- protected abstract CdmBase doMergeExecute(IProgressMonitor monitor, IAdaptable info) throws Exception;
+ protected abstract CdmBase doSimpleExecute(IProgressMonitor monitor, IAdaptable info) throws Exception;
@Override
protected void postExecute(boolean success) {
- if(success && mergedCdmEntity != null) {
- fireDataChangeEvent(mergedCdmEntity);
+ if(success && cdmEntity != null) {
+ fireDataChangeEvent(cdmEntity);
}
}
import org.eclipse.jface.util.PropertyChangeEvent;
+import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.description.KeyStatement;
-import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
/**
* @author n.hoffmann
/**
* @return the keyStatement
*/
- public KeyStatement getKeyStatement() {
- return keyStatement;
- }
+ public KeyStatement updateKeyStatement(KeyStatement ks) {
+ keyStatement = ks;
+ if(keyStatement == null) {
+ keyStatement = KeyStatement.NewInstance(element_languageString.getLanguageString().getLanguage(),
+ element_languageString.getLanguageString().getText());
- public void update(PolytomousKeyNode node) {
- if(node.getStatement() == null) {
- node.setStatement(KeyStatement.NewInstance(element_languageString.getLanguageString().getLanguage(),
- element_languageString.getLanguageString().getText()));
} else {
- node.getStatement().getLabel().put(element_languageString.getLanguageString().getLanguage(),
- element_languageString.getLanguageString());
+ LanguageString languageString = keyStatement.getLabel().get(element_languageString.getLanguageString().getLanguage());
+ if(languageString != null) {
+ languageString.setText(element_languageString.getText());
+ } else {
+ keyStatement.getLabel().put(element_languageString.getLanguageString().getLanguage(),
+ element_languageString.getLanguageString());
+ }
}
+ return keyStatement;
}
+
/*
* (non-Javadoc)
*
this.multilanguageText = multilanguageText;
if (multilanguageText != null) {
- if (multilanguageText.isEmpty()) {
-// multilanguageText.put(
-// CdmStore.getDefaultLanguage(),
-// LanguageString.NewInstance("",
-// CdmStore.getDefaultLanguage()));
- }
if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
combo_language.setTerms(getLanguages());
button.setEnabled(false);
@Override
public void handleEvent(Object eventSource) {
if (eventSource == element_question) {
- getEntity().getParent().setQuestion(
- element_question.getKeyStatement());
+ getEntity().getParent().setQuestion(element_question.updateKeyStatement(getEntity().getQuestion()));
} else if (eventSource == element_statement) {
- //getEntity().setStatement(element_statement.getKeyStatement());
- element_statement.update(getEntity());
+ getEntity().getParent().setStatement(element_statement.updateKeyStatement(getEntity().getStatement()));
} else if (eventSource == selection_feature) {
getEntity().getParent().setFeature(selection_feature.getEntity());
} else if (eventSource == selection_taxon) {
+++ /dev/null
-httpPort=9090
-stopPort=9191
-stopKey=jetty-cdm-server
-user=admin
-password=00000
-
Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getChildAt(0).getTaxon().getTitleCache(), "Achillea arabica Kotschy sec. Cyprus");
}
+ @Test
+ public void addGrandChildPolytomousKeyNode() {
+
+ PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
+ PolytomousKeyNode rootChildNode = pKey.getRoot().getChildAt(0);
+ PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
+ rootChildNode.addChild(grandChildNode);
+
+ pKey = polytomousKeyService.merge(pKey, true);
+ grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0);
+ Assert.assertTrue(0 != grandChildNode.getId());
+
+ grandChildNode.setStatement(KeyStatement.NewInstance("test"));
+ pKey = polytomousKeyService.merge(pKey, true);
+
+ grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0);
+ KeyStatement ks = grandChildNode.getStatement();
+ Assert.assertTrue(0 != ks.getId());
+
+ }
+
@Test
public void addGreatGrandChildPolytomousKeyNode() {
PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
rootChildNode.addChild(grandChildNode);
+
grandChildNode = polytomousKeyNodeService.merge(grandChildNode);
PolytomousKeyNode greatGrandChildNode = PolytomousKeyNode.NewInstance();