eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/group/authority/handler/EditCdmAuthoritiesHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/EditNewTaxonHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/EditSequenceHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/FixClassificationHierarchyHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/LoadPherogramHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenAlignmentEditorHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenChecklistEditorHandler.java -text
Bundle-ManifestVersion: 2
Bundle-Name: Application
Bundle-SymbolicName: eu.etaxonomy.taxeditor.application;singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Bundle-Activator: eu.etaxonomy.taxeditor.TaxonomicEditorPlugin
Bundle-Vendor: EDIT
Bundle-Localization: OSGI-INF/l10n/plugin
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
// leading to a recursive infinite loop of :
// initial exception thrown -> status handling -> dialog opening + logging of status ->
// status handling -> dialog opening + logging of status ... and so on
- if(t != null && t instanceof RuntimeException && !t.getMessage().equals("Widget is disposed")) {
+ if(t != null && t instanceof RuntimeException) {
MessagingUtils.errorDialog("Unexpected error",
null,
MessagingUtils.UNEXPECTED_ERROR_MESSAGE,
Bundle-ManifestVersion: 2
Bundle-Name: Bulkeditor Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
Bundle-Vendor: EDIT
Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
-import eu.etaxonomy.cdm.api.service.ICommonService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.strategy.merge.IMergable;
import eu.etaxonomy.cdm.strategy.merge.MergeException;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
*/
public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEditorInput, IEntityPersistenceService<T> {
- /**
- *
- */
- private static final long serialVersionUID = 416414530232743735L;
-
private UUID entityUuid;
private List<T> model;
public boolean merge(T entity, T mergeTarget) {
if (entity instanceof IMergable) {
try {
- CdmStore.getService(ICommonService.class).merge((IMergable)mergeTarget, (IMergable)entity, null);
+ CdmStore.getCommonService().merge((IMergable)mergeTarget, (IMergable)entity, null);
} catch (MergeException e) {
MessagingUtils.errorDialog("Bulk Editor Merge Error",
this,
if (referencedObject != null){
referencedObjectTitleCache = ((IdentifiableEntity)referencedObject).getTitleCache();
- setOfReferencingObjects = CdmStore.getService(ICommonService.class).getReferencingObjects(referencedObject);
+ setOfReferencingObjects = CdmStore.getCommonService().getReferencingObjects(referencedObject);
}
if (setOfReferencingObjects != null){
List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);
<classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.4.1-SNAPSHOT-sources.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.4.1-SNAPSHOT.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.4.1-SNAPSHOT-sources.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.4.1-SNAPSHOT.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.4.1-SNAPSHOT.jar" sourcepath="lib/cdmlib-model-3.4.1-SNAPSHOT-sources.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.4.1-SNAPSHOT-sources.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.4.1-SNAPSHOT.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.4.1-SNAPSHOT-sources.jar"/>
Bundle-ManifestVersion: 2
Bundle-Name: CDM Library Dependencies Plugin
Bundle-SymbolicName: eu.etaxonomy.taxeditor.cdmlib;singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Eclipse-BundleShape: dir
Export-Package: com.google.api,
com.google.api.detect,
eu.etaxonomy.cdm.api.service.statistics,
eu.etaxonomy.cdm.api.service.util,
eu.etaxonomy.cdm.api.utility,
+ eu.etaxonomy.cdm.api.validation,
+ eu.etaxonomy.cdm.api.validation.batch,
eu.etaxonomy.cdm.aspectj,
eu.etaxonomy.cdm.common,
eu.etaxonomy.cdm.common.media,
lib/spring-security-remoting-3.1.3.RELEASE.jar,
lib/jena-core-2.11.2.jar,
lib/jena-iri-1.0.2.jar,
- lib/cdmlib-commons-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-commons-3.4.1-SNAPSHOT.jar,
- lib/cdmlib-ext-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-ext-3.4.1-SNAPSHOT.jar,
- lib/cdmlib-io-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-io-3.4.1-SNAPSHOT.jar,
- lib/cdmlib-model-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-model-3.4.1-SNAPSHOT.jar,
- lib/cdmlib-persistence-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-persistence-3.4.1-SNAPSHOT.jar,
- lib/cdmlib-print-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-print-3.4.1-SNAPSHOT.jar,
- lib/cdmlib-remote-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-remote-3.4.1-SNAPSHOT.jar,
- lib/cdmlib-services-3.4.1-SNAPSHOT-sources.jar,
- lib/cdmlib-services-3.4.1-SNAPSHOT.jar,
+ lib/cdmlib-commons-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-commons-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-ext-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-ext-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-io-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-io-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-model-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-model-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-persistence-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-persistence-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-print-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-print-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-remote-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-remote-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-services-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-services-3.5.0-SNAPSHOT.jar,
lib/poi-3.10-FINAL.jar,
lib/poi-ooxml-3.10-FINAL.jar,
lib/xmlbeans-2.3.0.jar,
lib/poi-ooxml-3.10-FINAL.jar,\\r
lib/poi-ooxml-schemas-3.10-FINAL.jar,\\r
lib/xmlbeans-2.3.0.jar,\\r
- lib/cdmlib-commons-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-commons-3.4.1-SNAPSHOT.jar,\\r
- lib/cdmlib-ext-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-ext-3.4.1-SNAPSHOT.jar,\\r
- lib/cdmlib-io-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-io-3.4.1-SNAPSHOT.jar,\\r
- lib/cdmlib-model-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-model-3.4.1-SNAPSHOT.jar,\\r
- lib/cdmlib-persistence-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-persistence-3.4.1-SNAPSHOT.jar,\\r
- lib/cdmlib-print-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-print-3.4.1-SNAPSHOT.jar,\\r
- lib/cdmlib-remote-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-remote-3.4.1-SNAPSHOT.jar,\\r
- lib/cdmlib-services-3.4.1-SNAPSHOT-sources.jar,\\r
- lib/cdmlib-services-3.4.1-SNAPSHOT.jar,\\r
+ lib/cdmlib-commons-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-commons-3.5.0-SNAPSHOT.jar,\\r
+ lib/cdmlib-ext-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-ext-3.5.0-SNAPSHOT.jar,\\r
+ lib/cdmlib-io-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-io-3.5.0-SNAPSHOT.jar,\\r
+ lib/cdmlib-model-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-model-3.5.0-SNAPSHOT.jar,\\r
+ lib/cdmlib-persistence-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-persistence-3.5.0-SNAPSHOT.jar,\\r
+ lib/cdmlib-print-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-print-3.5.0-SNAPSHOT.jar,\\r
+ lib/cdmlib-remote-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-remote-3.5.0-SNAPSHOT.jar,\\r
+ lib/cdmlib-services-3.5.0-SNAPSHOT-sources.jar,\\r
+ lib/cdmlib-services-3.5.0-SNAPSHOT.jar,\\r
lib/swagger-annotations-1.3.5.jar\r
\r
jars.compile.order = .\r
<parent>\r
<groupId>eu.etaxonomy</groupId>\r
<artifactId>taxeditor-parent</artifactId>\r
- <version>3.4.1-SNAPSHOT</version>\r
+ <version>3.5.0-SNAPSHOT</version>\r
</parent>\r
<modelVersion>4.0.0</modelVersion>\r
<artifactId>eu.etaxonomy.taxeditor.cdmlib</artifactId>\r
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!-- Default application context and term initializer -->
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
xmlns:context="http://www.springframework.org/schema/context"\r
xmlns:tx="http://www.springframework.org/schema/tx"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">\r
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">\r
\r
\r
<!-- <bean id="remoteTermInitializer" class="eu.etaxonomy.cdm.remote.service.RemoteTermInitializer"/>-->\r
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"\r
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"\r
xsi:schemaLocation="http://www.springframework.org/schema/beans\r
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\r
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd\r
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd\r
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd\r
+ http://www.springframework.org/schema/beans/spring-beans-3.2.xsd\r
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd\r
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd\r
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd\r
">\r
\r
\r
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
xmlns:context="http://www.springframework.org/schema/context"\r
xmlns:security="http://www.springframework.org/schema/security"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\r
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd\r
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd\r
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd\r
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd\r
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd\r
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"\r
>\r
\r
Bundle-ManifestVersion: 2
Bundle-Name: Editor Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.editor;singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Bundle-Activator: eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: OSGI-INF/l10n/plugin
class="eu.etaxonomy.taxeditor.editor.view.descriptive.handler.ToggleShowOnlyIndividualAssociationsHandler"
commandId="eu.etaxonomy.taxeditor.editor.handler.showOnlyIndividualAssociations">
</handler>
+ <handler
+ class="eu.etaxonomy.taxeditor.editor.handler.FixClassificationHierarchyHandler"
+ commandId="eu.etaxonomy.taxeditor.editor.handler.FixClassificationHierarchyHandler">
+ </handler>
<handler
class="eu.etaxonomy.taxeditor.editor.handler.ToggleInsertOverwriteHandler"
commandId="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor.toggleInsertOverwrite">
id="eu.etaxonomy.taxeditor.editor.derivate.deepDelete"
name="Deep Delete">
</command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.editor.handler.FixClassificationHierarchyHandler"
+ id="eu.etaxonomy.taxeditor.editor.handler.OpenFixClassificationHierarchyHandler"
+ name="Fix Classification Hierarchy">
+ </command>
<command
defaultHandler="eu.etaxonomy.taxeditor.editor.handler.EditSequenceHandler"
id="eu.etaxonomy.taxeditor.editor.editSequence"
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.handler;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class FixClassificationHierarchyHandler extends AbstractHandler {
+
+ private static final Logger logger = Logger.getLogger(FixClassificationHierarchyHandler.class);
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
+ * ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ boolean isChecklistEditorActivated = PreferencesUtil.getPreferenceStore().getBoolean(
+ IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE);
+ if (isChecklistEditorActivated) {
+ ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
+ if (currentSelection instanceof IStructuredSelection) {
+ Object selectedElement = ((IStructuredSelection) currentSelection).getFirstElement();
+ if (selectedElement instanceof Classification) {
+
+ Classification classification = (Classification) selectedElement;
+ try {
+ IClassificationService service = CdmStore.getService(IClassificationService.class);
+
+ // Map<String, List<TaxonNode>> sortedGenusList =
+ // service.getSortedGenusList(classification.getAllNodes());
+
+ Classification newClassification = service.createHierarchyInClassification(classification, null);
+
+ MessagingUtils.messageDialog("Fix Hierarchy successful",
+ FixClassificationHierarchyHandler.class, "Operation 'Fix Hierarchy' was successful. New classification is " + newClassification.getTitleCache());
+
+ } catch (Exception e) {
+ MessagingUtils.messageDialog("Failed to open Editor", FixClassificationHierarchyHandler.class,
+ "Could not open ChecklistView. The hierarchy is corrupted!", e);
+ }
+ }
+ }
+ }
+ return null;
+ }
+}
CdmStore.getContextManager().addContextListener(stateManager);
ValidationContextListener vcl = new ValidationContextListener();
- CdmStore.getContextManager().addContextListener(vcl);
+// CdmStore.getContextManager().addContextListener(vcl);
plugin = this;
logger.trace("Plugin started: " + this.getBundle().getSymbolicName());
package eu.etaxonomy.taxeditor.editor.validation;\r
\r
-import java.util.HashMap;\r
+import java.util.ArrayList;\r
import java.util.List;\r
import java.util.Set;\r
\r
import org.eclipse.core.runtime.CoreException;\r
\r
import eu.etaxonomy.cdm.model.validation.EntityConstraintViolation;\r
-import eu.etaxonomy.cdm.model.validation.EntityValidationResult;\r
+import eu.etaxonomy.cdm.model.validation.EntityValidation;\r
import eu.etaxonomy.cdm.model.validation.Severity;\r
\r
/**\r
* A class responsible for refreshing problem markers coming from the CVI\r
* (Cdmlib Validation Infrastructure).\r
- * \r
+ *\r
* @author ayco_holleman\r
- * \r
+ *\r
*/\r
+\r
/*\r
* See following for problems with icons in Problems view\r
* http://stackoverflow.com\r
* http\r
* ://cubussapiens.hu/2010/11/markers-and-annotations-in-eclipse-for-error-feedback\r
* /\r
- * \r
+ *\r
* See here for difficulty of attaching markers to non-resources (files,\r
* folders):\r
* http://stackoverflow.com/questions/12493179/eclipse-virtual-resources\r
*/\r
public class MarkerManager {\r
\r
- public static final String MARKER_TYPE_ID = "eu.etaxonomy.taxeditor.markers.validationerror";\r
-\r
- /**\r
- * The primary key (id) of the EntityValidationResult record\r
- */\r
- public static final String ATTRIB_DATABASE_ID = "databaseId";\r
-\r
- // The values of the following constants must correspond to the attributes\r
- // defined for the org.eclipse.core.resources.markers extension point in\r
- // plugin.xml\r
-\r
- /**\r
- * A user-friendly description of the type of the entity\r
- */\r
- public static final String ATTRIB_USER_FRIENDLY_TYPE_NAME = "userFriendlyTypeName";\r
- /**\r
- * A user-friendly description of the entity\r
- */\r
- public static final String ATTRIB_USER_FRIENDLY_DESCRIPTION = "userFriendlyDescription";\r
- /**\r
- * The field whose value violated a constraint\r
- */\r
- public static final String ATTRIB_USER_FRIENDLY_FIELD_NAME = "userFriendlyFieldName";\r
- /**\r
- * The value violating a constraint\r
- */\r
- public static final String ATTRIB_INVALID_VALUE = "invalidValue";\r
- /**\r
- * The message from the {@link Validator} about what was wrong.\r
- */\r
- public static final String ATTRIB_VALIDATOR_MESSAGE = "validatorMessage";\r
- /**\r
- * The class of the {@link Validator} coding for the constraint\r
- */\r
- public static final String ATTRIB_VALIDATOR_CLASS = "validatorClass";\r
- /**\r
- * The class of the validated entity\r
- */\r
- public static final String ATTRIB_ENTITY_CLASS = "entityClass";\r
- /**\r
- * The id of the validated entity\r
- */\r
- public static final String ATTRIB_ENTITY_ID = "entityId";\r
-\r
- private final IWorkspaceRoot root;\r
- private final IMarker[] markers;\r
- private final List<EntityValidationResult> results;\r
- private final HashMap<Integer, EntityValidationResult> resultMap;\r
- private final HashMap<Integer, IMarker> markerMap;\r
-\r
-\r
- MarkerManager(List<EntityValidationResult> results) throws CoreException\r
- {\r
- this.root = ResourcesPlugin.getWorkspace().getRoot();\r
- this.markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
- this.markerMap = new HashMap<Integer, IMarker>();\r
- for (IMarker marker : markers) {\r
- markerMap.put(getDatabaseId(marker), marker);\r
- }\r
- this.results = results;\r
- this.resultMap = new HashMap<Integer, EntityValidationResult>();\r
- for (EntityValidationResult result : results) {\r
- resultMap.put(result.getId(), result);\r
- }\r
- }\r
-\r
-\r
- /**\r
- * Delete all markers that refer to errors that do not exist any longer\r
- * (i.e. the corresponding database record has been deleted).\r
- * \r
- * @return The number of deleted markers\r
- * \r
- * @throws CoreException\r
- */\r
- int deleteObsoleteMarkers() throws CoreException\r
- {\r
- int i = 0;\r
- IMarker[] markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
- for (IMarker marker : markers) {\r
- if (isObsoleteMarker(marker)) {\r
- ++i;\r
- marker.delete();\r
- }\r
- }\r
- return i;\r
- }\r
-\r
-\r
- /**\r
- * Create markers for new errors (i.e. no marker has been created for them\r
- * yet).\r
- * \r
- * @return The number of new markers\r
- * \r
- * @throws CoreException\r
- */\r
- int createMarkers() throws CoreException\r
- {\r
- int i = 0;\r
- IMarker[] markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
- for (EntityValidationResult result : results) {\r
- if (!isNewResult(result)) {\r
- continue;\r
- }\r
- Set<EntityConstraintViolation> problems = result.getEntityConstraintViolations();\r
- for (EntityConstraintViolation problem : problems) {\r
- if (markerExistsForProblem(problem, markers)) {\r
- continue;\r
- }\r
- IMarker marker = root.createMarker(MARKER_TYPE_ID);\r
- ++i;\r
- if (problem.getSeverity() == Severity.ERROR) {\r
- marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);\r
- }\r
- else if (problem.getSeverity() == Severity.WARNING) {\r
- marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);\r
- }\r
- else {\r
- marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO);\r
- }\r
- marker.setAttribute(IMarker.MESSAGE, problem.getMessage());\r
- marker.setAttribute(ATTRIB_DATABASE_ID, result.getId());\r
- marker.setAttribute(ATTRIB_USER_FRIENDLY_TYPE_NAME, result.getUserFriendlyTypeName());\r
- marker.setAttribute(ATTRIB_USER_FRIENDLY_DESCRIPTION, result.getUserFriendlyDescription());\r
- marker.setAttribute(ATTRIB_USER_FRIENDLY_FIELD_NAME, problem.getUserFriendlyFieldName());\r
- marker.setAttribute(ATTRIB_VALIDATOR_MESSAGE, problem.getMessage());\r
- marker.setAttribute(ATTRIB_INVALID_VALUE, problem.getInvalidValue());\r
- marker.setAttribute(ATTRIB_VALIDATOR_CLASS, problem.getValidator());\r
- marker.setAttribute(ATTRIB_ENTITY_CLASS, result.getValidatedEntityClass());\r
- marker.setAttribute(ATTRIB_ENTITY_ID, result.getValidatedEntityId());\r
- }\r
- }\r
- return i;\r
- }\r
-\r
-\r
- /**\r
- * Is there a problem marker that captures the specified\r
- * {@link EntityConstraintViolation}? See\r
- * {@link #markerCapturesProblem(IMarker, EntityConstraintViolation)}.\r
- * \r
- * @param problem\r
- * @param markers\r
- * @return\r
- * @throws CoreException\r
- */\r
- private boolean markerExistsForProblem(EntityConstraintViolation problem, IMarker[] markers) throws CoreException\r
- {\r
- for (IMarker marker : markers) {\r
- if (markerCapturesProblem(marker, problem)) {\r
- return true;\r
- }\r
- }\r
- return false;\r
- }\r
-\r
-\r
- /**\r
- * <p>\r
- * This method determines whether the problem exposed by the specified\r
- * marker is <b>de facto</b> equivalent to the specified\r
- * {@code EntityConstraintViolation}. When the CVI validates an entity, it\r
- * first deletes previous validation results for that entity and only then\r
- * saves the new validation result. Thus you cannot rely on the database id\r
- * of the {@code EntityConstraintViolation} to determine equivalence. Maybe\r
- * later we can make the CVI more sophisticated in this respect. Or maybe\r
- * see if solving it through the equals() method of\r
- * {@code EntityValidationResult} and/or {@code EntityConstraintViolation}\r
- * is possible. But for now this is the easiest solution.\r
- * </p>\r
- * <p>\r
- * The reason we check for equivalence, is that we don't want to\r
- * unnecessarily update the Problems view. If a marker is there, we don't\r
- * want to replace it with an equivalent marker, because that might lead to\r
- * strange click behaviour for end users (e.g. selected problems will\r
- * disappear and re-appear unselected).\r
- * </p>\r
- * \r
- * @param marker\r
- * @param problem\r
- * @return\r
- * @throws CoreException\r
- */\r
- private static boolean markerCapturesProblem(IMarker marker, EntityConstraintViolation problem) throws CoreException\r
- {\r
- EntityValidationResult result = problem.getEntityValidationResult();\r
- if (!marker.getAttribute(ATTRIB_ENTITY_CLASS).equals(result.getValidatedEntityClass())) {\r
- return false;\r
- }\r
- if (!marker.getAttribute(ATTRIB_ENTITY_ID).equals(result.getValidatedEntityId())) {\r
- return false;\r
- }\r
- if (!marker.getAttribute(ATTRIB_USER_FRIENDLY_FIELD_NAME).equals(problem.getPropertyPath())) {\r
- return false;\r
- }\r
- if (!marker.getAttribute(ATTRIB_INVALID_VALUE).equals(problem.getInvalidValue())) {\r
- return false;\r
- }\r
- if (!marker.getAttribute(ATTRIB_VALIDATOR_CLASS).equals(problem.getValidator())) {\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
-\r
- /**\r
- * Is this a marker without a corresponding database record (\r
- * {@link EntityValidationResult})?\r
- * \r
- * @param marker\r
- * @return\r
- * @throws CoreException\r
- */\r
- private boolean isObsoleteMarker(IMarker marker) throws CoreException\r
- {\r
- return resultMap.get(getDatabaseId(marker)) == null;\r
- }\r
-\r
-\r
- /**\r
- * Is this an {@link EntityValidationResult} for which no marker has been\r
- * created yet?\r
- * \r
- * @param result\r
- * @return\r
- */\r
- private boolean isNewResult(EntityValidationResult result)\r
- {\r
- return markerMap.get(result.getId()) == null;\r
- }\r
-\r
-\r
- /**\r
- * Get the id of the {@link EntityValidationResult} that was stored as one\r
- * of the marker's attributes.\r
- * \r
- * @param marker\r
- * @return\r
- * @throws CoreException\r
- */\r
- private static Integer getDatabaseId(IMarker marker) throws CoreException\r
- {\r
- return (Integer) marker.getAttribute(ATTRIB_DATABASE_ID);\r
- }\r
+ public static final String MARKER_TYPE_ID = "eu.etaxonomy.taxeditor.markers.validationerror";\r
+\r
+ /**\r
+ * The primary key (id) of the EntityConstraintViolation record\r
+ */\r
+ public static final String ATTRIB_DATABASE_ID = "databaseId";\r
+\r
+ // The values of the following constants must correspond to the attributes\r
+ // defined for the org.eclipse.core.resources.markers extension point in\r
+ // plugin.xml\r
+\r
+ /**\r
+ * A user-friendly description of the type of the entity\r
+ */\r
+ public static final String ATTRIB_USER_FRIENDLY_TYPE_NAME = "userFriendlyTypeName";\r
+ /**\r
+ * A user-friendly description of the entity\r
+ */\r
+ public static final String ATTRIB_USER_FRIENDLY_DESCRIPTION = "userFriendlyDescription";\r
+ /**\r
+ * The field whose value violated a constraint\r
+ */\r
+ public static final String ATTRIB_USER_FRIENDLY_FIELD_NAME = "userFriendlyFieldName";\r
+ /**\r
+ * The value violating a constraint\r
+ */\r
+ public static final String ATTRIB_INVALID_VALUE = "invalidValue";\r
+ /**\r
+ * The message from the {@link Validator} about what was wrong.\r
+ */\r
+ public static final String ATTRIB_VALIDATOR_MESSAGE = "validatorMessage";\r
+ /**\r
+ * The class of the {@link Validator} coding for the constraint\r
+ */\r
+ public static final String ATTRIB_VALIDATOR_CLASS = "validatorClass";\r
+ /**\r
+ * The class of the validated entity\r
+ */\r
+ public static final String ATTRIB_ENTITY_CLASS = "entityClass";\r
+ /**\r
+ * The id of the validated entity\r
+ */\r
+ public static final String ATTRIB_ENTITY_ID = "entityId";\r
+\r
+ private final List<EntityConstraintViolation> problems;\r
+\r
+ MarkerManager(List<EntityValidation> results) {\r
+ this.problems = new ArrayList<EntityConstraintViolation>();\r
+ for (EntityValidation result : results) {\r
+ Set<EntityConstraintViolation> problemsPerEntity = result.getEntityConstraintViolations();\r
+ for (EntityConstraintViolation problem : problemsPerEntity) {\r
+ problem.setEntityValidation(result);\r
+ problems.add(problem);\r
+ }\r
+ }\r
+ //MessagingUtils.info("Number of validation errors: " + problems.size());\r
+ }\r
+\r
+ /**\r
+ * Delete all markers that refer to errors that do not exist any longer\r
+ * (i.e. the corresponding database record has been deleted).\r
+ *\r
+ * @return The number of deleted markers\r
+ *\r
+ * @throws CoreException\r
+ */\r
+ int deleteObsoleteMarkers() throws CoreException {\r
+ int i = 0;\r
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();\r
+ IMarker[] markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
+ for (IMarker marker : markers) {\r
+ if (isObsoleteMarker(marker)) {\r
+ ++i;\r
+ marker.delete();\r
+ }\r
+ }\r
+ //MessagingUtils.info("Obsolete markers: " + i);\r
+ return i;\r
+ }\r
+\r
+ /**\r
+ * Create markers for new errors (i.e. no marker has been created for them\r
+ * yet).\r
+ *\r
+ * @return The number of new markers\r
+ *\r
+ * @throws CoreException\r
+ */\r
+ int createMarkers() throws CoreException {\r
+ int i = 0;\r
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();\r
+ IMarker[] markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
+ for (EntityConstraintViolation problem : problems) {\r
+ if (isNewProblem(problem, markers)) {\r
+ ++i;\r
+ IMarker marker = root.createMarker(MARKER_TYPE_ID);\r
+ if (problem.getSeverity() == Severity.ERROR) {\r
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);\r
+ } else if (problem.getSeverity() == Severity.WARNING) {\r
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);\r
+ } else {\r
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO);\r
+ }\r
+ EntityValidation result = problem.getEntityValidation();\r
+ marker.setAttribute(IMarker.MESSAGE, problem.getMessage());\r
+ marker.setAttribute(ATTRIB_DATABASE_ID, new Integer(problem.getId()));\r
+ marker.setAttribute(ATTRIB_USER_FRIENDLY_TYPE_NAME, result.getUserFriendlyTypeName());\r
+ marker.setAttribute(ATTRIB_USER_FRIENDLY_DESCRIPTION, result.getUserFriendlyDescription());\r
+ marker.setAttribute(ATTRIB_USER_FRIENDLY_FIELD_NAME, problem.getUserFriendlyFieldName());\r
+ marker.setAttribute(ATTRIB_VALIDATOR_MESSAGE, problem.getMessage());\r
+ marker.setAttribute(ATTRIB_INVALID_VALUE, problem.getInvalidValue());\r
+ marker.setAttribute(ATTRIB_VALIDATOR_CLASS, problem.getValidator());\r
+ marker.setAttribute(ATTRIB_ENTITY_CLASS, result.getValidatedEntityClass());\r
+ marker.setAttribute(ATTRIB_ENTITY_ID, result.getValidatedEntityId());\r
+ }\r
+ }\r
+ //MessagingUtils.info("New problems: " + i);\r
+ return i;\r
+ }\r
+\r
+ private boolean isObsoleteMarker(IMarker marker) throws CoreException {\r
+ for (EntityConstraintViolation problem : problems) {\r
+ if (isMarkerForProblem(marker, problem)) {\r
+ return false;\r
+ }\r
+ }\r
+ return true;\r
+ }\r
+\r
+ private static boolean isNewProblem(EntityConstraintViolation problem, IMarker[] markers) throws CoreException {\r
+ for (IMarker marker : markers) {\r
+ if (isMarkerForProblem(marker, problem)) {\r
+ return false;\r
+ }\r
+ }\r
+ return true;\r
+ }\r
+\r
+ private static boolean isMarkerForProblem(IMarker marker, EntityConstraintViolation problem) throws CoreException {\r
+ if (isEqual(marker, ATTRIB_DATABASE_ID, new Integer(problem.getId()))) {\r
+ return true;\r
+ }\r
+ EntityValidation result = problem.getEntityValidation();\r
+ if (!isEqual(marker, ATTRIB_ENTITY_ID, result.getValidatedEntityId())) {\r
+ return false;\r
+ }\r
+ if (!isEqual(marker, ATTRIB_INVALID_VALUE, problem.getInvalidValue())) {\r
+ return false;\r
+ }\r
+ if (!isEqual(marker, ATTRIB_ENTITY_CLASS, result.getValidatedEntityClass())) {\r
+ return false;\r
+ }\r
+ if (!isEqual(marker, ATTRIB_USER_FRIENDLY_FIELD_NAME, problem.getUserFriendlyFieldName())) {\r
+ return false;\r
+ }\r
+ if (!isEqual(marker, ATTRIB_VALIDATOR_CLASS, problem.getValidator())) {\r
+ return false;\r
+ }\r
+ return true;\r
+ }\r
+\r
+ private static boolean isEqual(IMarker marker, String attribute, Object value) throws CoreException {\r
+ Object val = marker.getAttribute(attribute);\r
+ boolean equal;\r
+ if (val == null) {\r
+ equal = value == null;\r
+ } else {\r
+ equal = value != null && val.equals(value);\r
+ }\r
+ return equal;\r
+ }\r
\r
}\r
import org.eclipse.core.runtime.Status;\r
import org.eclipse.core.runtime.jobs.Job;\r
\r
-import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;\r
-import eu.etaxonomy.cdm.api.service.IEntityValidationResultService;\r
-import eu.etaxonomy.cdm.model.validation.EntityValidationResult;\r
+import eu.etaxonomy.cdm.api.service.IEntityValidationService;\r
+import eu.etaxonomy.cdm.model.validation.EntityValidation;\r
import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
\r
/**\r
* A job that repeatedly checks the error tables and refreshes the problem\r
* markers created from them.\r
- * \r
+ *\r
* @author ayco_holleman\r
- * \r
+ *\r
*/\r
public class ValidationDaemon extends Job {\r
-\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(ValidationDaemon.class);\r
\r
- private final IEntityValidationResultService validationResultService;\r
- \r
- @SuppressWarnings("unused")\r
- /* Not currently needed but present for future use if/when required */\r
- private final IEntityConstraintViolationService constraintViolationService;\r
+ private final IEntityValidationService entityValidationService;\r
\r
+ // Might want to make this configurable:\r
+ private int SLEEP_TIME = 5000;\r
+ \r
private boolean cancelRequested = false;\r
\r
+\r
+\r
public ValidationDaemon(){\r
- super("Initializing validation module");\r
-// StoreUtil.info("Initializing validation module");\r
- MessagingUtils.info("Initializing validation module");\r
- constraintViolationService = CdmStore.getService(IEntityConstraintViolationService.class);\r
- validationResultService = CdmStore.getService(IEntityValidationResultService.class);\r
+ super("Running validation daemon");\r
+ entityValidationService = CdmStore.getService(IEntityValidationService.class);\r
}\r
\r
- \r
+\r
@Override\r
protected void canceling(){\r
cancelRequested = true;\r
@Override\r
protected IStatus run(IProgressMonitor monitor){\r
MarkerManager markerManager;\r
- List<EntityValidationResult> results;\r
+ List<EntityValidation> results;\r
try {\r
while (!cancelRequested) {\r
- results = validationResultService.getValidationResults();\r
+ results = entityValidationService.getValidationResults();\r
markerManager = new MarkerManager(results);\r
markerManager.deleteObsoleteMarkers();\r
markerManager.createMarkers();\r
- // Might want to make this configurable:\r
- Thread.sleep(5000);\r
+ Thread.sleep(SLEEP_TIME);\r
}\r
-// StoreUtil.info("Validation module stopped");\r
MessagingUtils.info("Validation module stopped");\r
return Status.OK_STATUS;\r
}\r
catch (Throwable t) {\r
-// StoreUtil.info("Validation module terminated unexpectedly: " + t.getMessage());\r
MessagingUtils.info("Validation module terminated unexpectedly: " + t.getMessage());\r
return Status.CANCEL_STATUS;\r
}\r
private void createTable() {
Table table = viewer.getTable();//new Table(parent, viewer.getTable().getStyle());
List<String> titles = new ArrayList<String>();
- Collections.addAll(titles, "Taxon", "Author", "Reference", "Rank");
+ Collections.addAll(titles, "Taxon", "Author", "Rank");
List<Integer> bounds = new ArrayList<Integer>();
- Collections.addAll(bounds, 300, 200, 200, 200);
+ Collections.addAll(bounds, 300, 200, 200);
Map<Integer, Boolean> restoreValuesForColumnWidth = restoreValuesForColumnWidth(titles, bounds);
createInitalDistributionColumns(table, titles, bounds, restoreValuesForColumnWidth);
table.setSortDirection(SWT.DOWN);
}
/**
* This method creates initially the distribution columns for a table. It should only be called for creation.<br>
- *<p>
+ *<p>
*
*<b>Notice:</b> If you want to add additional columns later please use <b>addTableViewerColumn()</b>
*
/**
* This methods loads the last opened distribution columns for the table viewer from the prefrence store.<br>
- *<p>
+ *<p>
* <b>Notice:</b> It adds also the TitleCache to the titles list for the header of each column.<p>
- *
+ *
* @param titles
* @param bounds
* @return Map<Integer, Boolean>
}
/**
- * This method adds new DistributionColumns to an existing table.
- *
+ * This method adds new DistributionColumns to an existing table.
+ *
* @param title
* @param bound
* @param colNumber
column.setMoveable(true);
return viewerColumn;
}
-
-
-
+
+
+
/**
*
* pull data from database and set input for view
* It will hide the old distribution column and load the newly added columns.<br>
* <p>
* <b>Notice:</b> for data update please use <b>refresh()</b>
- *
+ *
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public void reload(){
}
}
}
-
+
/**
* <p>
* Getter for the field <code>service</code>.
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.name.NonViralName;
-import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
-import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
namedAreas = loadNamedAreas();
this.viewer = viewer;
}
-
+
/*
* (non-Javadoc)
*
String authorship = null;
authorship = (nonVirlaName != null) ? nonVirlaName.getAuthorshipCache() : null;
return (authorship != null) ? authorship : DEFAULT_ENTRY;
+// case 2:
+// String ref = null;
+// if (taxon.getName() != null) {
+// INomenclaturalReference nomenclaturalReference = HibernateProxyHelper.deproxy(
+// nonVirlaName.getNomenclaturalReference(), Reference.class);
+// ref = (nomenclaturalReference != null) ? nomenclaturalReference.getAbbrevTitleCache() : null;
+// }
+// return (ref != null) ? ref : DEFAULT_ENTRY;
case 2:
- String ref = null;
- if (taxon.getName() != null) {
- INomenclaturalReference nomenclaturalReference = HibernateProxyHelper.deproxy(
- nonVirlaName.getNomenclaturalReference(), Reference.class);
- ref = (nomenclaturalReference != null) ? nomenclaturalReference.getAbbrevTitleCache() : null;
- }
- return (ref != null) ? ref : DEFAULT_ENTRY;
- case 3:
String rank = null;
if (taxon.getName().getRank() != null) {
rank = taxon.getName().getRank().toString();
return (rank != null) ? rank : DEFAULT_ENTRY;
}
- if(columnIndex >3){
+ if(columnIndex >2){
for (TaxonDescription td : listTaxonDescriptions) {
for (DescriptionElementBase deb : td.getElements()) {
import eu.etaxonomy.cdm.api.service.IDatabaseService;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;
-import eu.etaxonomy.cdm.api.service.IEntityValidationResultService;
+import eu.etaxonomy.cdm.api.service.IEntityValidationService;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
}
@Override
- public IEntityValidationResultService getEntityValidationResultService() {
- return defaultApplicationConfiguration.getEntityValidationResultService();
+ public IEntityValidationService getEntityValidationService() {
+ return defaultApplicationConfiguration.getEntityValidationService();
}
}
return defaultService.findWithoutFlush(uuid);
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listFieldUnitsByAssociatedTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List, java.util.List)
- */
@Override
public Collection<SpecimenOrObservationBase> listFieldUnitsByAssociatedTaxon(Taxon associatedTaxon,
List<OrderHint> orderHints, List<String> propertyPaths) {
return defaultService.listFieldUnitsByAssociatedTaxon(associatedTaxon, orderHints, propertyPaths);
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#pageFieldUnitsByAssociatedTaxon(java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
- */
@Override
public Pager<SpecimenOrObservationBase> pageFieldUnitsByAssociatedTaxon(
Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize,
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#assembleDerivateHierarchyDTO(eu.etaxonomy.cdm.model.occurrence.FieldUnit, java.util.UUID)
- */
@Override
public DerivateHierarchyDTO assembleDerivateHierarchyDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid) {
return defaultService.assembleDerivateHierarchyDTO(fieldUnit, associatedTaxonUuid);
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getNonCascadedAssociatedElements(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.api.conversation.ConversationHolder)
- */
@Override
public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) {
return defaultService.getNonCascadedAssociatedElements(specimen);
<feature
id="eu.etaxonomy.taxeditor.feature.platform"
label="Taxeditor Dependencies"
- version="3.4.1.qualifier"
+ version="3.5.0.qualifier"
os="linux,macosx,win32"
ws="cocoa,gtk,win32"
arch="x86,x86_64">
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eu.etaxonomy.taxeditor.feature.platform</artifactId>
category.id.eu.etaxonomy=EDIT
category.description.eu.etaxonomy=EDIT Taxonomic Editor
category.members.eu.etaxonomy=eu.etaxonomy.taxeditor.feature
+#root.win32.win32.x86_64 = win-64-jre
+#root.win32.win32.x86 = win-32-jre
+#root.linux.gtk.x86=linux-32-jre
+#root.linux.gtk.x86_64=linux-64-jre
+#root.macosx.cocoa.x86_64=mac-64-jre
\ No newline at end of file
<feature
id="eu.etaxonomy.taxeditor.feature"
label="Taxonomic Editor"
- version="3.4.1.qualifier"
+ version="3.5.0.qualifier"
provider-name="EDIT"
plugin="eu.etaxonomy.taxeditor.application"
os="linux,macosx,win32"
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eu.etaxonomy.taxeditor.feature</artifactId>
Bundle-ManifestVersion: 2
Bundle-Name: Help
Bundle-SymbolicName: eu.etaxonomy.taxeditor.help; singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Bundle-Activator: eu.etaxonomy.taxeditor.help.Activator
Bundle-Vendor: EDIT
Require-Bundle: org.eclipse.ui,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Bundle-ManifestVersion: 2
Bundle-Name: Navigation Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.navigation;singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Bundle-Vendor: EDIT
Export-Package: eu.etaxonomy.cdm,
eu.etaxonomy.taxeditor.navigation,
SearchBar_2=Could not execute search\r
SearchBar_3=Please type at least one character when using the "*" wildcard.\r
SearchBar_4=Error opening search result.\r
-SearchBar_5=configuration menu clicked\r
SearchBar_6=Taxa\r
SearchBar_7=Synonyms\r
SearchBar_8=Names (without taxa)\r
SearchBar_2=Suche konnte nicht ausgef\u00FChrt werden\r
SearchBar_3=Bitte geben Sie mindestens ein Zeichen, wenn Sie die "*" Platzhalter benutzen wollen\r
SearchBar_4=Fehler beim f\u00fcffnen des Suchergebnisses\r
-SearchBar_5=Konfigurationsmenü angeklickt\r
SearchBar_6=Taxa\r
SearchBar_7=Synonyme\r
SearchBar_8=Namen (ohne Taxa)\r
SearchBar_2=Could not execute search\r
SearchBar_3=Please type at least one character when using the "*" wildcard.\r
SearchBar_4=Error opening search result.\r
-SearchBar_5=configuration menu clicked\r
SearchBar_6=Taxa\r
SearchBar_7=Synonyms\r
SearchBar_8=Names (without taxa)\r
</and>
</visibleWhen>
</command>
+ <command
+ commandId="eu.etaxonomy.taxeditor.editor.handler.OpenFixClassificationHierarchyHandler"
+ label="Fix Classification Hierarchy"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ <and>
+ <reference
+ definitionId="isShowExperimentalFeatures">
+ </reference>
+ <reference
+ definitionId="isClassification">
+ </reference>
+ </and>
+ </visibleWhen>
+ </command>
<separator
name="taxeditor-navigation.separator1"
visible="true">
properties="isCdmStoreConnected"
type="org.eclipse.jface.viewers.IStructuredSelection">
</propertyTester>
+ <propertyTester
+ class="eu.etaxonomy.taxeditor.preference.PreferencePropertyTester"
+ id="eu.etaxonomy.taxeditor.preferences.propertyTester"
+ namespace="eu.etaxonomy.taxeditor.preferences.propertyTester"
+ properties="isShowExperimentalFeatures"
+ type="org.eclipse.jface.viewers.IStructuredSelection">
+ </propertyTester>
</extension>
<extension
point="org.eclipse.core.expressions.definitions">
</test>
</with>
</definition>
+ <definition
+ id="isShowExperimentalFeatures">
+ <with
+ variable="selection">
+ <test
+ property="eu.etaxonomy.taxeditor.preferences.propertyTester.isShowExperimentalFeatures">
+ </test>
+ </with>
+ </definition>
</extension>
</plugin>
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
public static String SearchBar_2;\r
public static String SearchBar_3;\r
public static String SearchBar_4;\r
- public static String SearchBar_5;\r
public static String SearchBar_6;\r
public static String SearchBar_7;\r
public static String SearchBar_8;\r
// $Id$
/**
* Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy
+ * European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
- *
+ *
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
* Handles focus changes for the search textfield.
*/
private void registerAtFocusService() {
- IFocusService focusService =
+ IFocusService focusService =
(IFocusService) PlatformUI.getWorkbench().getService(IFocusService.class);
if (focusService != null) {
focusService.addFocusTracker(text_search, "navigation.textControlId");
private void addTextListeners() {
text_search.addFocusListener(new FocusListener() {
- public void focusGained(FocusEvent e) {
+ @Override
+ public void focusGained(FocusEvent e) {
text_search.setForeground(NavigationUtil.getColor(Resources.SEARCH_VIEW_FOCUS));
if (defaultText.equals(text_search.getText())) {
text_search.setText("");
}
}
- public void focusLost(FocusEvent e) {
+ @Override
+ public void focusLost(FocusEvent e) {
if (text_search.getText() == "") {
text_search.setForeground(NavigationUtil.getColor(Resources.SEARCH_VIEW_FOREGROUND));
text_search.setText(defaultText);
if(searchString == null){
return;
}
-
+
if("*".equals(searchString.trim())){
MessagingUtils.warningDialog(Messages.SearchBar_2, this, Messages.SearchBar_3);
return;
}
-
-
+
+
IFindTaxaAndNamesConfigurator configurator = configurationListener.getConfigurator();
configurator.setTitleSearchString(searchString);
openSearchResultsView(configurator);
-
+
}
-
+
private String getSearchString(){
String searchString = text_search.getText().trim();
- if (searchString.equals(defaultText) || searchString.length() == 0)
- return null;
+ if (searchString.equals(defaultText) || searchString.length() == 0) {
+ return null;
+ }
return searchString;
}
-
+
/**
* Opens a new instance of the search result view to display the result to the user.
- *
+ *
* @param searchResult
*/
private void openSearchResultsView(IFindTaxaAndNamesConfigurator configurator) {
boolean openResultInSeparateWindows = PreferencesUtil.getPreferenceStore().getBoolean((IPreferenceKeys.SEARCH_OPEN_RESULTS_IN_SEPARATE_WINDOWS));
if(openResultInSeparateWindows){
- //increment change secondary id so it is unique
+ //increment change secondary id so it is unique
secondaryId += "1";
}
/**
* Handles drop down menu selection. Available items are defined in the enumeration SearchOption.
- *
+ *
* @author n.hoffmann
* @created Feb 2, 2010
* @version 1.0
/**
* Handles search configuration selection.
- *
+ *
* @author n.hoffmann
* @created Feb 2, 2010
* @version 1.0
class ConfigurationSelectionListener extends SelectionAdapter {
private IFindTaxaAndNamesConfigurator configurator = PreferencesUtil.getSearchConfigurator();
-
+
/*
* (non-Javadoc)
- *
+ *
* @see
* org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse
* .swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent e) {
- MessagingUtils.info(Messages.SearchBar_5);
SearchOption option = (SearchOption) e.widget.getData();
switch (option){
break;
case COMMON_NAME:
configurator.setDoTaxaByCommonNames(getConfigurator().isDoTaxaByCommonNames() ? false : true);
- break;
+ break;
}
-
+
saveConfigurator();
}
/**
* Available search options.
- *
+ *
* @author n.hoffmann
* @created Feb 2, 2010
* @version 1.0
*/
enum SearchOption {
- TAXON(Messages.SearchBar_6),
- SYNONYM(Messages.SearchBar_7),
- NAME(Messages.SearchBar_8),
+ TAXON(Messages.SearchBar_6),
+ SYNONYM(Messages.SearchBar_7),
+ NAME(Messages.SearchBar_8),
COMMON_NAME(Messages.SearchBar_9);
private final String label;
\r
\r
<!-- enable the configuration of transactional behavior based on annotations -->\r
- <tx:annotation-driven transaction-manager="transactionManager"/> \r
+ <tx:annotation-driven transaction-manager="transactionManager"/>\r
+ \r
+<!-- <bean id="validationManager" class="eu.etaxonomy.cdm.api.validation.ValidationManager" scope="prototype"/> -->\r
+ \r
\r
\r
\r
Bundle-ManifestVersion: 2
Bundle-Name: Printpublisher Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.printpublisher;singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Require-Bundle: org.eclipse.osgi,
org.eclipse.ui,
eu.etaxonomy.taxeditor.cdmlib,
<parent>
<artifactId>taxeditor-parent</artifactId>
<groupId>eu.etaxonomy</groupId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Bundle-ManifestVersion: 2
Bundle-Name: DataStore Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.store;singleton:=true
-Bundle-Version: 3.4.1.qualifier
+Bundle-Version: 3.5.0.qualifier
Bundle-Activator: eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin
Bundle-Vendor: EDIT
Export-Package: eu.etaxonomy.cdm,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
import java.util.ArrayList;
import java.util.List;
-import eu.etaxonomy.cdm.api.service.ICommonService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.model.name.NonViralName;
return new ArrayList<INomenclaturalReference>();
}
try{
- return CdmStore.getService(ICommonService.class).findMatching(nomenclaturalReference, MatchStrategyConfigurator.ReferenceMatchStrategy());
+ return CdmStore.getCommonService().findMatching(nomenclaturalReference, MatchStrategyConfigurator.ReferenceMatchStrategy());
}catch (MatchException e) {
MessagingUtils.error(this.getClass(), "Error finding matching references", e);
}
}
try{
- return CdmStore.getService(ICommonService.class).findMatching(authorTeam, MatchStrategyConfigurator.TeamOrPersonMatchStrategy());
+ return CdmStore.getCommonService().findMatching(authorTeam, MatchStrategyConfigurator.TeamOrPersonMatchStrategy());
}catch (MatchException e) {
MessagingUtils.error(this.getClass(), "Error finding matching authors", e);
}
private List<TaxonNameBase> findMatchingLatinNames(TaxonNameBase taxonNameBase) {
try {
- return CdmStore.getService(ICommonService.class).findMatching(taxonNameBase, MatchStrategyConfigurator.NonViralNameMatchStrategy());
+ return CdmStore.getCommonService().findMatching(taxonNameBase, MatchStrategyConfigurator.NonViralNameMatchStrategy());
} catch (MatchException e) {
MessagingUtils.error(this.getClass(), "Error finding matching names", e);
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.ICommonService;
import eu.etaxonomy.cdm.api.service.IService;
import eu.etaxonomy.cdm.config.ICdmSource;
import eu.etaxonomy.cdm.database.DbSchemaValidation;
return service;
}
+
+ /**
+ * @see #getService(Class)
+ * As ICommonService is not extending IService we need a specific request here
+ */
+ public static ICommonService getCommonService() {
+ ICdmApplicationConfiguration configuration = getCurrentApplicationConfiguration();
+
+ return configuration.getCommonService();
+
+ }
/**
* <p>
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.widgets.Display;
-import org.hibernate.collection.internal.AbstractPersistentCollection;
-import org.hibernate.proxy.AbstractLazyInitializer;
import org.springframework.core.io.Resource;
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController;
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
-import eu.etaxonomy.cdm.config.ICdmSource;
-import eu.etaxonomy.cdm.remote.ICdmRemoteSource;
import eu.etaxonomy.cdm.config.CdmSourceException;
-import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
+import eu.etaxonomy.cdm.config.ICdmSource;
import eu.etaxonomy.cdm.database.DbSchemaValidation;
import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
-import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
+import eu.etaxonomy.cdm.remote.ICdmRemoteSource;
import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.ui.dialog.LoginDialog;
public IStatus run(final IProgressMonitor monitor) {
monitor.beginTask(getConnectionMessage(), 10);
-
+
// check if database is up and running
checkDatabaseReachable(monitor);
CdmProgressMonitorAdapter subprogressMonitor = CdmProgressMonitorAdapter
.CreateSubMonitor(monitor, 7);
// This is where we instantiate the application controller
+ int oldPriority = Thread.currentThread().getPriority();
try {
-
+ Thread.currentThread().setPriority(10);
applicationController = getApplicationController(cdmSource,subprogressMonitor);
-
} catch (Exception e) {
if(! causeIsCancelationExceptionRecursive(e)){
return new Status(IStatus.ERROR, "Could not connect to CDM Store", "An error occurred while trying to connect to datasource: " + cdmSource.getName(), e);
}
} finally {
monitor.done();
+ Thread.currentThread().setPriority(oldPriority);
}
}
btnDeleteIndividualsassociationsfactual.setText("Delete from factual data");
btnDeleteSpecimenDescription = new Button(this, SWT.CHECK);
- toolkit.adapt(btnDeleteSpecimenDescription, true, true);
btnDeleteSpecimenDescription.setText("Delete specimen description");
m_bindingContext = initDataBindings();
/** {@inheritDoc} */
@Override
protected String getTooltipString() {
- return "Add a membmer to this team";
+ return "Add a member to this team";
}
/** {@inheritDoc} */
service = (IService<T>) CdmStore.getService(IAmplificationService.class);
}
//check if original already exists in data base. If not then do not clone and all changes will be persisted directly -> Warning to user.
- if(service !=null && service.find(originalEntity.getUuid())==null){
+ if(service !=null && service.find(originalEntity.getUuid())==null && originalEntity.getId() != 0){
if(MessagingUtils.confirmDialog(TRANSIENT_EDITING_WARNING_TITLE, "["+originalEntity.getClass().getSimpleName()+"]"+originalEntity + " has to be saved before it can be edited. Save now?")){
service.save(originalEntity);
AbstractUtility.getActiveEditor().doSave(new NullProgressMonitor());
}
//be sure to reset to original in all cases
selectionElement.setEntity(originalEntity);
+ selectionElement.refresh();
}
}
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" application="eu.etaxonomy.taxeditor.application.application" version="3.4.1.qualifier" useFeatures="true" includeLaunchers="true">
-
- <aboutInfo>
- <image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>
- <text>
- %productBlurb
- </text>
- </aboutInfo>
-
- <configIni use="default">
- </configIni>
-
- <launcherArgs>
- <programArgs>-data @user.home/.cdmLibrary -Dserver_port=58080</programArgs>
- <vmArgs>-Xmx512M -XX:MaxPermSize=256M -Dorg.eclipse.update.reconcile=false -Declipse.p2.unsignedPolicy=allow</vmArgs>
- <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
- </launcherArgs>
-
- <windowImages i16="/eu.etaxonomy.taxeditor.application/icons/256color_16x16.gif" i32="/eu.etaxonomy.taxeditor.application/icons/256color_32x32.gif" i48="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>
-
- <splash
- location="eu.etaxonomy.taxeditor.application"
- startupProgressRect="5,447,366,15"
- startupMessageRect="7,432,360,20"
- startupForegroundColor="000000" />
- <launcher name="TaxonomicEditor">
- <solaris/>
- <win useIco="false">
- <bmp/>
- </win>
- </launcher>
-
- <vm>
- </vm>
-
- <plugins>
- </plugins>
-
- <features>
- <feature id="eu.etaxonomy.taxeditor.feature"/>
- </features>
-
- <configurations>
- <plugin id="eu.etaxonomy.taxeditor.application" autoStart="true" startLevel="5" />
- <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
- <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
- <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
- <plugin id="org.eclipse.equinox.p2.transport.ecf" autoStart="true" startLevel="4" />
- <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
- </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<?pde version="3.5"?>\r
+\r
+<product name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" application="eu.etaxonomy.taxeditor.application.application" version="3.5.0.qualifier" useFeatures="true" includeLaunchers="true">\r
+\r
+ <aboutInfo>\r
+ <image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>\r
+ <text>\r
+ %productBlurb\r
+ </text>\r
+ </aboutInfo>\r
+\r
+ <configIni use="default">\r
+ </configIni>\r
+\r
+ <launcherArgs>\r
+ <programArgs>-data @user.home/.cdmLibrary -Dserver_port=58080 </programArgs>\r
+ <vmArgs>-Xmx512M -XX:MaxPermSize=256M -Dorg.eclipse.update.reconcile=false -Declipse.p2.unsignedPolicy=allow</vmArgs>\r
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>\r
+ </launcherArgs>\r
+\r
+ <windowImages i16="/eu.etaxonomy.taxeditor.application/icons/256color_16x16.gif" i32="/eu.etaxonomy.taxeditor.application/icons/256color_32x32.gif" i48="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>\r
+\r
+ <splash\r
+ location="eu.etaxonomy.taxeditor.application"\r
+ startupProgressRect="5,447,366,15"\r
+ startupMessageRect="7,432,360,20"\r
+ startupForegroundColor="000000" />\r
+ <launcher name="TaxonomicEditor">\r
+ <solaris/>\r
+ <win useIco="false">\r
+ <bmp/>\r
+ </win>\r
+ </launcher>\r
+\r
+ <vm>\r
+ </vm>\r
+\r
+ <plugins>\r
+ </plugins>\r
+\r
+ <features>\r
+ <feature id="eu.etaxonomy.taxeditor.feature"/>\r
+ </features>\r
+\r
+ <configurations>\r
+ <plugin id="eu.etaxonomy.taxeditor.application" autoStart="true" startLevel="5" />\r
+ <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />\r
+ <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />\r
+ <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />\r
+ <plugin id="org.eclipse.equinox.p2.transport.ecf" autoStart="true" startLevel="4" />\r
+ <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />\r
+ </configurations>\r
+\r
+</product>\r
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
</prerequisites>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>3.4.1-SNAPSHOT</version>
+ <version>3.5.0-SNAPSHOT</version>
<name>EDIT Taxonomic Editor</name>
<description>The Taxonomic Editor for EDIT's platform for
cybertaxonomy</description>
<properties>
<java.codelevel>1.6</java.codelevel>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <cdmlib.version>3.4.1-SNAPSHOT</cdmlib.version>
+ <cdmlib.version>3.5.0-SNAPSHOT</cdmlib.version>
<!-- TODO can we use project.version ????? -->
- <tycho.version>0.14.0</tycho.version>
- <taxeditor.version>3.4.1-SNAPSHOT</taxeditor.version>
+ <tycho.version>0.22.0</tycho.version>
+ <taxeditor.version>3.5.0-SNAPSHOT</taxeditor.version>
<update.dir>snapshot</update.dir>
</properties>
<modules>