Merge branch 'develop' into LibrAlign
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 13 Jan 2017 14:32:31 +0000 (15:32 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 13 Jan 2017 14:33:00 +0000 (15:33 +0100)
36 files changed:
.gitattributes
.gitignore
eu.etaxonomy.taxeditor.cdmlib/.classpath
eu.etaxonomy.taxeditor.molecular.lib/.classpath
eu.etaxonomy.taxeditor.molecular.lib/.project
eu.etaxonomy.taxeditor.molecular.lib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.molecular.lib/build.properties
eu.etaxonomy.taxeditor.molecular.lib/configAlternatives/dependenciesFromClassFolder/build.properties [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular.lib/configAlternatives/dependenciesFromJARs/build.properties [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular.lib/pom.xml
eu.etaxonomy.taxeditor.molecular/.classpath
eu.etaxonomy.taxeditor.molecular/.gitignore
eu.etaxonomy.taxeditor.molecular/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/bundle.properties
eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/bundle_de.properties
eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages.properties [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages_de.properties [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/plugin.xml
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/Messages.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditor.java
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/AbstractPherogramComponentHandler.java
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/AlignmentEditorPasteHandler.java
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ShowPherogramHandler.java
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/CDMPherogramAlignmentObjectTranslator.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/CDMSequenceMatrixAdapter.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIterator.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/SingleReadAlignmentRDFXMLConstants.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/AbstractExportSingleReadAlignmentWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentFileFormatPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentOptionsPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizard.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardModel.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.molecular/src/test/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIteratorTest.java [new file with mode: 0644]
eu.etaxonomy.taxeditor/eu.etaxonomy.taxeditor.product
eu.etaxonomy.taxeditor/rcp.target

index 877a615a022cb9b9e3ca73dbe3410a5cfe62fb2c..177934b63a27ee3cd514cd06d3ab13d923d976ae 100644 (file)
@@ -1975,7 +1975,7 @@ src/site/resources/images/taxeditor_transformed.png -text
 src/site/site.xml -text
 
 # The following files will be ignored when merging another
-# branch into this branch in case of merge conflict and 
+# branch into this branch in case of merge conflict and
 # if the 'ours' merge driver is configured.
 # WARNING : This merge driver should NOT be set in development
 #           environments. It is supposed to be used only in CI
@@ -1987,5 +1987,11 @@ src/site/site.xml -text
 **/feature.xml merge=ours
 eu.etaxonomy.taxeditor.cdmlib/.classpath merge=ours
 eu.etaxonomy.taxeditor.cdmlib/build.properties merge=ours
+eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java -text
+eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/CDMSequenceMatrixAdapter.java -text
+eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIterator.java -text
+eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizard.java -text
+eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardPage.java -text
+eu.etaxonomy.taxeditor.molecular/src/test/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIteratorTest.java -text
 eu.etaxonomy.taxeditor/eu.etaxonomy.taxeditor.product merge=ours
 eu.etaxonomy.taxeditor/eu.etaxonomy.taxeditor.product.with.jre merge=ours
index ecfb4d5dfd34cf7944eced9a115dd0234f607665..a8aaf71fffb469ffa6dfbae45b229220b1621f12 100644 (file)
@@ -31,5 +31,6 @@ eu.etaxonomy.taxeditor.webapp/lib/cdmlib-remote-webapp.war
 /eu.etaxonomy.taxeditor.webapp/.settings/org.eclipse.m2e.core.prefs
 /eu.etaxonomy.taxeditor.webapp/lib/
 
+/.ssh
 eu.etaxonomy.taxeditor.test/src/test/resources/eu/etaxonomy/cdm/database/schema/dataset.xsd
 eu.etaxonomy.taxeditor.test/src/test/resources/eu/etaxonomy/cdm/database/schema/PUBLIC.xsd
index 658cb9c72420f76de90f96432a3780cd76e9238c..8f6c238b5c847475d36edb9ef54a88aa71c0be34 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-oauth2-2.0.11.RELEASE.jar"/>
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
-       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-       <classpathentry kind="src" path="src/main/java"/>
-       <classpathentry kind="src" path="src/main/resources"/>
-       <classpathentry exported="true" kind="lib" path="lib/activation-1.1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/apache-log4j-extras-1.2.17.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/aspectjrt-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/avro-1.6.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-anim-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-awt-util-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-bridge-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-css-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-dom-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-ext-1.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-extension-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-gvt-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-js-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-parser-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-script-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-svg-dom-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-svggen-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-transcoder-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-util-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-xml-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.5.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-4.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-ext/4.3.0-SNAPSHOT/cdmlib-ext-4.5.0-SNAPSHOT-sources.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-io/4.3.0-SNAPSHOT/cdmlib-io-4.5.0-SNAPSHOT-sources.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-model/4.3.0-SNAPSHOT/cdmlib-model-4.5.0-SNAPSHOT-sources.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-4.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-4.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-4.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-services/4.3.0-SNAPSHOT/cdmlib-services-4.5.0-SNAPSHOT-sources.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-test-4.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cglib-3.2.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cglib-nodep-3.2.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/classmate-1.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/codemodel-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.aopalliance-1.0.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.apache.commons.logging-1.1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-codec-1.10.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-csv-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-lang-2.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.3.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.5.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/concurrent-1.3.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dbunit-2.4.9.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/doxia-core-1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/doxia-logging-api-1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/doxia-module-apt-1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/doxia-module-xhtml-1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/doxia-sink-api-1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dtd-parser-1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/easymock-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/easymockclassextension-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/ehcache-core-2.6.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/FastInfoset-1.2.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/fop-1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/guava-19.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/h2-1.4.190.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/h2mig_pagestore_addon.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hamcrest-core-1.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-c3p0-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-cglib-repack-2.1_3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-5.0.1.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-core-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-ehcache-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-entitymanager-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-envers-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-4.2.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-analyzers-4.2.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-engine-5.5.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-orm-5.5.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-5.2.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-cdi-5.2.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hsqldb-2.3.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpclient-4.5.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpclient-cache-4.2.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpcore-4.4.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpmime-4.5.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/icu4j-2.6.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/istack-commons-runtime-2.21.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/istack-commons-tools-2.21.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/itextpdf-5.5.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-annotations-2.6.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-core-2.6.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-core-asl-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-databind-2.6.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-mapper-asl-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jakarta-regexp-1.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jandex-2.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javassist-3.20.0-GA.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javax.el-2.2.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javax.el-api-2.2.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javax.servlet-api-3.1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.2.12.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-core-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-jxc-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-runtime-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-xjc-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb1-impl-2.2-EA.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jboss-logging-3.3.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jboss-transaction-api_1.1_spec-1.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jcl-over-slf4j-1.7.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jdbc4-2.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jdom-1.1.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jdom2-2.0.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-arq-2.13.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-core-2.13.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-iri-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-tdb-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/joda-time-2.9.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/json-20090211.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/json-lib-2.4-jdk15.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jsonld-java-0.5.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jta-1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jtds-1.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/junit-4.12.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/junit-benchmarks-0.7.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/libthrift-0.9.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lsid-client-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lsid-server-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-common-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-backward-codecs-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-core-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-facet-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-grouping-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-highlighter-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-join-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-memory-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-misc-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-queries-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-queryparser-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-sandbox-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-suggest-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/mapstruct-1.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/mchange-commons-java-0.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.38.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/objenesis-1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/odfdom-java-0.8.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/ognl-2.6.9.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/opencsv-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/org.osgi.core-1.0.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/osgi-3.6.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/paranamer-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/plexus-classworlds-1.2-alpha-9.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/plexus-component-annotations-1.5.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/plexus-container-default-1.0-alpha-30.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/plexus-utils-3.0.15.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/poi-3.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/postgresql-9.4-1206-jdbc4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/relaxngDatatype-20020414.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/rngom-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/Saxon-HE-9.7.0-2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.7.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-nop-1.7.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/snappy-java-1.0.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/solr-analysis-extras-3.6.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/solr-core-3.6.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/solr-solrj-3.6.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-aop-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-aspects-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-beans-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-context-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-context-support-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-core-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-expression-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-jdbc-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-orm-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-oxm-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-plugin-core-1.2.0.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-plugin-metadata-1.2.0.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-config-4.0.3.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-core-4.0.3.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-web-4.0.3.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-test-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-tx-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-web-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-webmvc-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-core-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-schema-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-spi-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-spring-web-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-swagger-common-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-swagger2-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/standard-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/stax-1.2.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/stax-api-1.0.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/stax-ex-1.7.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/swagger-annotations-1.5.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/swagger-models-1.5.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/tools.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/txw2-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-database-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-dbmaintainer-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-dbunit-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-easymock-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-inject-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-mock-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-orm-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-spring-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/usertype.jodatime-2.0.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/usertype.spi-2.0.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/validation-api-1.1.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xalan-2.7.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xercesImpl-2.11.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xml-apis-1.0.b2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xml-resolver-1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlbeans-2.6.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlgraphics-commons-1.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlpull-1.1.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlunit-1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xom-1.2.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xpp3-1.1.4c.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xsom-20140925.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xstream-1.4.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/yjp-controller-api-redist-9.0.8.jar"/>
-       <classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-security-oauth2-2.0.11.RELEASE.jar"/>\r
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>\r
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+       <classpathentry kind="src" path="src/main/java"/>\r
+       <classpathentry kind="src" path="src/main/resources"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/activation-1.1.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/apache-log4j-extras-1.2.17.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/aspectjrt-1.8.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.8.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/avro-1.6.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-anim-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-awt-util-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-bridge-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-css-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-dom-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-ext-1.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-extension-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-gvt-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-js-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-parser-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-script-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-svg-dom-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-svggen-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-transcoder-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-util-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/batik-xml-1.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.5.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-4.5.0-SNAPSHOT.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-ext/4.3.0-SNAPSHOT/cdmlib-ext-4.5.0-SNAPSHOT-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-io/4.3.0-SNAPSHOT/cdmlib-io-4.5.0-SNAPSHOT-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-model/4.3.0-SNAPSHOT/cdmlib-model-4.5.0-SNAPSHOT-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-4.5.0-SNAPSHOT.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-4.5.0-SNAPSHOT.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-4.5.0-SNAPSHOT.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-4.5.0-SNAPSHOT.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-services/4.3.0-SNAPSHOT/cdmlib-services-4.5.0-SNAPSHOT-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-test-4.5.0-SNAPSHOT.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cglib-3.2.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cglib-nodep-3.2.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/classmate-1.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/codemodel-2.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.aopalliance-1.0.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.apache.commons.logging-1.1.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-codec-1.10.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-csv-1.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-lang-2.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.3.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.5.4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/concurrent-1.3.4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/dbunit-2.4.9.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/doxia-core-1.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/doxia-logging-api-1.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/doxia-module-apt-1.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/doxia-module-xhtml-1.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/doxia-sink-api-1.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/dtd-parser-1.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/easymock-2.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/easymockclassextension-2.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/ehcache-core-2.6.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/FastInfoset-1.2.13.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/fop-1.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/guava-19.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/h2-1.4.190.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/h2mig_pagestore_addon.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hamcrest-core-1.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-c3p0-5.0.7.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-cglib-repack-2.1_3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-5.0.1.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-core-5.0.7.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-ehcache-5.0.7.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-entitymanager-5.0.7.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-envers-5.0.7.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-4.2.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-analyzers-4.2.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-engine-5.5.2.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-orm-5.5.2.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-5.2.2.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-cdi-5.2.2.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/hsqldb-2.3.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/httpclient-4.5.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/httpclient-cache-4.2.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/httpcore-4.4.4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/httpmime-4.5.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/icu4j-2.6.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/istack-commons-runtime-2.21.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/istack-commons-tools-2.21.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/itextpdf-5.5.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jackson-annotations-2.6.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jackson-core-2.6.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jackson-core-asl-1.8.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jackson-databind-2.6.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jackson-mapper-asl-1.8.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jakarta-regexp-1.4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jandex-2.0.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/javassist-3.20.0-GA.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/javax.el-2.2.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/javax.el-api-2.2.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/javax.servlet-api-3.1.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.2.12.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxb-core-2.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxb-jxc-2.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxb-runtime-2.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxb-xjc-2.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxb1-impl-2.2-EA.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jboss-logging-3.3.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jboss-transaction-api_1.1_spec-1.0.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jcl-over-slf4j-1.7.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jdbc4-2.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jdom-1.1.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jdom2-2.0.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jena-arq-2.13.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jena-core-2.13.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jena-iri-1.1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jena-tdb-1.1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/joda-time-2.9.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/json-20090211.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/json-lib-2.4-jdk15.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jsonld-java-0.5.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jta-1.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/jtds-1.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/junit-4.12.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/junit-benchmarks-0.7.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/libthrift-0.9.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lsid-client-1.1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lsid-server-1.1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-common-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-backward-codecs-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-core-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-facet-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-grouping-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-highlighter-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-join-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-memory-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-misc-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-queries-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-queryparser-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-sandbox-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/lucene-suggest-5.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/mapstruct-1.0.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/mchange-commons-java-0.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.38.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/objenesis-1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/odfdom-java-0.8.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/ognl-2.6.9.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/opencsv-2.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/org.osgi.core-1.0.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/osgi-3.6.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/paranamer-2.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/plexus-classworlds-1.2-alpha-9.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/plexus-component-annotations-1.5.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/plexus-container-default-1.0-alpha-30.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/plexus-utils-3.0.15.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/poi-3.13.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.13.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.13.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/postgresql-9.4-1206-jdbc4.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/relaxngDatatype-20020414.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/rngom-2.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/Saxon-HE-9.7.0-2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.13.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.7.13.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/slf4j-nop-1.7.13.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/snappy-java-1.0.4.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/solr-analysis-extras-3.6.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/solr-core-3.6.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/solr-solrj-3.6.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-aop-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-aspects-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-beans-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-context-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-context-support-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-core-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-expression-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-jdbc-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-orm-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-oxm-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-plugin-core-1.2.0.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-plugin-metadata-1.2.0.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-security-config-4.0.3.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-security-core-4.0.3.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-security-web-4.0.3.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-test-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-tx-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-web-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/spring-webmvc-4.2.4.RELEASE.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/springfox-core-2.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/springfox-schema-2.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/springfox-spi-2.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/springfox-spring-web-2.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/springfox-swagger-common-2.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/springfox-swagger2-2.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/standard-1.1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/stax-1.2.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/stax-api-1.0.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/stax-ex-1.7.7.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/swagger-annotations-1.5.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/swagger-models-1.5.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/tools.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/txw2-2.2.11.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-database-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-dbmaintainer-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-dbunit-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-easymock-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-inject-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-mock-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-orm-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/unitils-spring-3.4.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/usertype.jodatime-2.0.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/usertype.spi-2.0.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/validation-api-1.1.0.Final.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.3.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xalan-2.7.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xercesImpl-2.11.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xml-apis-1.0.b2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xml-resolver-1.2.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xmlbeans-2.6.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xmlgraphics-commons-1.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xmlpull-1.1.3.1.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xmlunit-1.6.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xom-1.2.5.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xpp3-1.1.4c.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xsom-20140925.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/xstream-1.4.8.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/yjp-controller-api-redist-9.0.8.jar"/>\r
+       <classpathentry kind="output" path="target/classes"/>\r
+</classpath>\r
index 5918c4c4dbec2d926510c448e8396a5d3dcba42c..6329dd124302f8093d2c8d380b61ee031a651ed6 100644 (file)
@@ -1,17 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-java-bio-2.0.0.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-java-core-2.2.0.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-java-swing-2.2.0.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-java-swt-2.0.0.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/jphyloio-core-0.3.0.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/libralign-biojava1-0.4.0-preview-2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/libralign-core-0.4.0-preview-2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/libralign-io-0.4.0-preview-2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/libralign-swt-0.4.0-preview-2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/tic-core-2.0.0-preview-2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/tic-swt-2.0.0-preview-2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.5.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
        <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-bio-2.0.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-core-2.0.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-swing-2.0.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-swt-2.0.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/core-1.9.2-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/libralign-biojava1-0.4.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/libralign-core-0.4.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/libralign-swt-0.4.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/sequencing-1.9.2-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/tic-core-2.0.0-preview-1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/tic-swt-2.0.0-preview-1.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/owlapi-xmlutils-4.1.4.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/commons-collections4-4.1.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/core-1.9.2.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/sequencing-1.9.2.jar"/>
        <classpathentry kind="output" path="target/classes"/>
 </classpath>
index 45f118a13f93c5f2b551a880f0e56c7f62ac179c..536b48b55d831664035282f21e129d6540dbc270 100644 (file)
                <nature>org.eclipse.pde.PluginNature</nature>
                <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>
+       <linkedResources>
+               <link>
+                       <name>lib/info.bioinfweb.commons.bio</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.commons.bio</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.commons.core</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.commons.core</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.commons.swing</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.commons.swing</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.commons.swt</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.commons.swt</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.jphyloio.core</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.jphyloio.core</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.libralign.biojava1</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.libralign.biojava1</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.libralign.core</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.libralign.core</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.libralign.io</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.libralign.io</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.libralign.swt</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.libralign.swt</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.tic.core</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.tic.core</locationURI>
+               </link>
+               <link>
+                       <name>lib/info.bioinfweb.tic.swt</name>
+                       <type>2</type>
+                       <locationURI>WORKSPACE_LOC/info.bioinfweb.tic.swt</locationURI>
+               </link>
+       </linkedResources>
 </projectDescription>
index 22f8923e10f835452c5cd5a7fbb5974b0397897f..543d4e02e72c20c6f91b49d60abebad35a6ff2f7 100644 (file)
@@ -4,17 +4,23 @@ Bundle-Name: eu.etaxonomy.taxeditor.molecular.lib
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.molecular.lib;singleton:=true
 Bundle-Version: 4.5.0.qualifier
 Bundle-ClassPath: .,
- lib/bioinfweb-commons-bio-2.0.0-preview-1.jar,
- lib/bioinfweb-commons-core-2.0.0-preview-1.jar,
- lib/bioinfweb-commons-swing-2.0.0-preview-1.jar,
- lib/bioinfweb-commons-swt-2.0.0-preview-1.jar,
- lib/core-1.9.2-SNAPSHOT.jar,
- lib/libralign-biojava1-0.4.0-preview-1.jar,
- lib/libralign-core-0.4.0-preview-1.jar,
- lib/libralign-swt-0.4.0-preview-1.jar,
- lib/sequencing-1.9.2-SNAPSHOT.jar,
- lib/tic-core-2.0.0-preview-1.jar,
- lib/tic-swt-2.0.0-preview-1.jar
+ lib/owlapi-xmlutils-4.1.4.jar,
+ lib/commons-collections4-4.1.jar,
+ lib/core-1.9.2.jar,
+ lib/sequencing-1.9.2.jar,
+ lib/commons-lang3-3.5.jar,
+ lib/commons-beanutils-1.9.2.jar,
+ lib/bioinfweb-commons-java-bio-2.0.0.jar,
+ lib/bioinfweb-commons-java-core-2.2.0.jar,
+ lib/bioinfweb-commons-java-swing-2.2.0.jar,
+ lib/bioinfweb-commons-java-swt-2.0.0.jar,
+ lib/jphyloio-core-0.3.0.jar,
+ lib/libralign-biojava1-0.4.0-preview-2.jar,
+ lib/libralign-core-0.4.0-preview-2.jar,
+ lib/libralign-io-0.4.0-preview-2.jar,
+ lib/libralign-swt-0.4.0-preview-2.jar,
+ lib/tic-core-2.0.0-preview-2.jar,
+ lib/tic-swt-2.0.0-preview-2.jar
 Export-Package: info.bioinfweb.commons,
  info.bioinfweb.commons.appversion,
  info.bioinfweb.commons.beans,
@@ -30,6 +36,40 @@ Export-Package: info.bioinfweb.commons,
  info.bioinfweb.commons.swing.scrollpaneselector,
  info.bioinfweb.commons.swt,
  info.bioinfweb.commons.text,
+ info.bioinfweb.jphyloio,
+ info.bioinfweb.jphyloio.dataadapters,
+ info.bioinfweb.jphyloio.dataadapters.implementations,
+ info.bioinfweb.jphyloio.dataadapters.implementations.receivers,
+ info.bioinfweb.jphyloio.dataadapters.implementations.store,
+ info.bioinfweb.jphyloio.events,
+ info.bioinfweb.jphyloio.events.meta,
+ info.bioinfweb.jphyloio.events.type,
+ info.bioinfweb.jphyloio.exception,
+ info.bioinfweb.jphyloio.factory,
+ info.bioinfweb.jphyloio.formatinfo,
+ info.bioinfweb.jphyloio.formats,
+ info.bioinfweb.jphyloio.formats.fasta,
+ info.bioinfweb.jphyloio.formats.mega,
+ info.bioinfweb.jphyloio.formats.newick,
+ info.bioinfweb.jphyloio.formats.nexml,
+ info.bioinfweb.jphyloio.formats.nexus,
+ info.bioinfweb.jphyloio.formats.nexus.blockhandlers,
+ info.bioinfweb.jphyloio.formats.nexus.commandreaders,
+ info.bioinfweb.jphyloio.formats.nexus.commandreaders.all,
+ info.bioinfweb.jphyloio.formats.nexus.commandreaders.characters,
+ info.bioinfweb.jphyloio.formats.nexus.commandreaders.sets,
+ info.bioinfweb.jphyloio.formats.nexus.commandreaders.taxa,
+ info.bioinfweb.jphyloio.formats.nexus.commandreaders.trees,
+ info.bioinfweb.jphyloio.formats.pde,
+ info.bioinfweb.jphyloio.formats.phylip,
+ info.bioinfweb.jphyloio.formats.phyloxml,
+ info.bioinfweb.jphyloio.formats.phyloxml.elementreader,
+ info.bioinfweb.jphyloio.formats.text,
+ info.bioinfweb.jphyloio.formats.xml,
+ info.bioinfweb.jphyloio.formats.xtg,
+ info.bioinfweb.jphyloio.objecttranslation,
+ info.bioinfweb.jphyloio.objecttranslation.implementations,
+ info.bioinfweb.jphyloio.utils,
  info.bioinfweb.libralign,
  info.bioinfweb.libralign.actions,
  info.bioinfweb.libralign.alignmentarea,
@@ -74,6 +114,41 @@ Export-Package: info.bioinfweb.commons,
  info.bioinfweb.tic.input,
  info.bioinfweb.tic.toolkit,
  info.bioinfweb.tic.toolkit.layoutdata,
+ org.apache.commons.beanutils,
+ org.apache.commons.beanutils.converters,
+ org.apache.commons.beanutils.expression,
+ org.apache.commons.beanutils.locale,
+ org.apache.commons.beanutils.locale.converters,
+ org.apache.commons.collections4,
+ org.apache.commons.collections4.bag,
+ org.apache.commons.collections4.bidimap,
+ org.apache.commons.collections4.collection,
+ org.apache.commons.collections4.comparators,
+ org.apache.commons.collections4.functors,
+ org.apache.commons.collections4.iterators,
+ org.apache.commons.collections4.keyvalue,
+ org.apache.commons.collections4.list,
+ org.apache.commons.collections4.map,
+ org.apache.commons.collections4.multimap,
+ org.apache.commons.collections4.multiset,
+ org.apache.commons.collections4.queue,
+ org.apache.commons.collections4.sequence,
+ org.apache.commons.collections4.set,
+ org.apache.commons.collections4.splitmap,
+ org.apache.commons.collections4.trie,
+ org.apache.commons.collections4.trie.analyzer,
+ org.apache.commons.lang3,
+ org.apache.commons.lang3.builder,
+ org.apache.commons.lang3.concurrent,
+ org.apache.commons.lang3.event,
+ org.apache.commons.lang3.exception,
+ org.apache.commons.lang3.math,
+ org.apache.commons.lang3.mutable,
+ org.apache.commons.lang3.reflect,
+ org.apache.commons.lang3.text,
+ org.apache.commons.lang3.text.translate,
+ org.apache.commons.lang3.time,
+ org.apache.commons.lang3.tuple,
  org.biojava.bibliography,
  org.biojava.bio,
  org.biojava.bio.alignment,
@@ -160,7 +235,8 @@ Export-Package: info.bioinfweb.commons,
  org.biojavax.ga.util,
  org.biojavax.ontology,
  org.biojavax.utils,
- org.jdesktop.swingx.scrollpaneselector
+ org.jdesktop.swingx.scrollpaneselector,
+ org.semanticweb.owlapi.io
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.swing
 Require-Bundle: org.eclipse.swt
index 6e6ff3a5a11a55365a4beb17e08abfdee150eaaa..22e3c265bb2d4601702dcc2c2f15fccf4b5985b2 100644 (file)
@@ -1,12 +1,20 @@
 bin.includes = META-INF/,\
-               lib/bioinfweb-commons-bio-2.0.0-preview-1.jar,\
-               lib/bioinfweb-commons-core-2.0.0-preview-1.jar,\
-               lib/bioinfweb-commons-swing-2.0.0-preview-1.jar,\
-               lib/bioinfweb-commons-swt-2.0.0-preview-1.jar,\
-               lib/core-1.9.2-SNAPSHOT.jar,\
-               lib/libralign-biojava1-0.4.0-preview-1.jar,\
-               lib/libralign-core-0.4.0-preview-1.jar,\
-               lib/libralign-swt-0.4.0-preview-1.jar,\
-               lib/sequencing-1.9.2-SNAPSHOT.jar,\
-               lib/tic-core-2.0.0-preview-1.jar,\
-               lib/tic-swt-2.0.0-preview-1.jar
+               lib/tic-swt-2.0.0-preview-1.jar,\
+               lib/commons-collections4-4.1.jar,\
+               lib/core-1.9.2.jar,\
+               lib/sequencing-1.9.2.jar,\
+               lib/commons-lang3-3.5.jar,\
+               lib/commons-beanutils-1.9.2.jar,\
+               lib/bioinfweb-commons-java-bio-2.0.0.jar,\
+               lib/bioinfweb-commons-java-core-2.2.0.jar,\
+               lib/bioinfweb-commons-java-swing-2.2.0.jar,\
+               lib/bioinfweb-commons-java-swt-2.0.0.jar,\
+               lib/jphyloio-core-0.3.0.jar,\
+               lib/libralign-biojava1-0.4.0-preview-2.jar,\
+               lib/libralign-core-0.4.0-preview-2.jar,\
+               lib/libralign-io-0.4.0-preview-2.jar,\
+               lib/libralign-swt-0.4.0-preview-2.jar,\
+               lib/tic-core-2.0.0-preview-2.jar,\
+               lib/tic-swt-2.0.0-preview-2.jar
+               lib/jphyloio-core-0-SNAPSHOT.jar,\
+               lib/owlapi-xmlutils-4.1.4.jar
diff --git a/eu.etaxonomy.taxeditor.molecular.lib/configAlternatives/dependenciesFromClassFolder/build.properties b/eu.etaxonomy.taxeditor.molecular.lib/configAlternatives/dependenciesFromClassFolder/build.properties
new file mode 100644 (file)
index 0000000..42c2407
--- /dev/null
@@ -0,0 +1,20 @@
+bin.includes = META-INF/,\
+               lib/tic-swt-2.0.0-preview-1.jar,\
+               lib/commons-collections4-4.1.jar,\
+               lib/core-1.9.2.jar,\
+               lib/sequencing-1.9.2.jar,\
+               lib/info.bioinfweb.commons.bio/bin/,\
+               lib/info.bioinfweb.commons.core/bin/,\
+               lib/info.bioinfweb.commons.swing/bin/,\
+               lib/info.bioinfweb.commons.swt/bin/,\
+               lib/info.bioinfweb.libralign.core/bin/,\
+               lib/info.bioinfweb.libralign.io/bin/,\
+               lib/info.bioinfweb.libralign.swt/bin/,\
+               lib/info.bioinfweb.tic.core/bin/,\
+               lib/info.bioinfweb.tic.swt/bin/,\
+               lib/info.bioinfweb.libralign.biojava1/bin/,\
+               lib/commons-lang3-3.5.jar,\
+               lib/info.bioinfweb.jphyloio.core/bin/,\
+               lib/commons-beanutils-1.9.2.jar
+               lib/jphyloio-core-0-SNAPSHOT.jar,\
+               lib/owlapi-xmlutils-4.1.4.jar
diff --git a/eu.etaxonomy.taxeditor.molecular.lib/configAlternatives/dependenciesFromJARs/build.properties b/eu.etaxonomy.taxeditor.molecular.lib/configAlternatives/dependenciesFromJARs/build.properties
new file mode 100644 (file)
index 0000000..22e3c26
--- /dev/null
@@ -0,0 +1,20 @@
+bin.includes = META-INF/,\
+               lib/tic-swt-2.0.0-preview-1.jar,\
+               lib/commons-collections4-4.1.jar,\
+               lib/core-1.9.2.jar,\
+               lib/sequencing-1.9.2.jar,\
+               lib/commons-lang3-3.5.jar,\
+               lib/commons-beanutils-1.9.2.jar,\
+               lib/bioinfweb-commons-java-bio-2.0.0.jar,\
+               lib/bioinfweb-commons-java-core-2.2.0.jar,\
+               lib/bioinfweb-commons-java-swing-2.2.0.jar,\
+               lib/bioinfweb-commons-java-swt-2.0.0.jar,\
+               lib/jphyloio-core-0.3.0.jar,\
+               lib/libralign-biojava1-0.4.0-preview-2.jar,\
+               lib/libralign-core-0.4.0-preview-2.jar,\
+               lib/libralign-io-0.4.0-preview-2.jar,\
+               lib/libralign-swt-0.4.0-preview-2.jar,\
+               lib/tic-core-2.0.0-preview-2.jar,\
+               lib/tic-swt-2.0.0-preview-2.jar
+               lib/jphyloio-core-0-SNAPSHOT.jar,\
+               lib/owlapi-xmlutils-4.1.4.jar
index e6e87af7b76ca974c5ffe4415f0b33f3d46b0478..af2a52b6a6f63332c553b064b2ff89003ebb1423 100644 (file)
               <goal>copy-dependencies</goal>
             </goals>
             <configuration>
-              <includeArtifactIds>libralign-swt, libralign-core,
-                bioinfweb-commons-swt, bioinfweb-commons-core,
-                bioinfweb-commons-bio, bioinfweb-commons-swing,
-                tic-core, libralign-biojava1, core, sequencing, tic-swt</includeArtifactIds>
+              <includeArtifactIds>libralign-core, libralign-swt, libralign-biojava1, libralign-io, 
+                bioinfweb-commons-java-swt, bioinfweb-commons-java-core,
+                bioinfweb-commons-java-bio, bioinfweb-commons-java-swing,
+                tic-core, core, sequencing, 
+                tic-swt, jphyloio-core, owlapi-xmlutils, 
+                commons-lang3, commons-collections4, commons-beanutils</includeArtifactIds>
               <outputDirectory>lib</outputDirectory>
               <overWriteReleases>true</overWriteReleases>
               <overWriteSnapshots>true</overWriteSnapshots>
@@ -72,6 +74,8 @@
               </target>
             </configuration>
           </execution>
+          
+          <!-- The following should not be necessary anymore. -->
           <execution>
             <id>update-snapshot-jar-names</id>
             <phase>validate</phase>
                 </move>
                 <move todir="./lib">
                   <fileset dir="./lib" />
-                  <mapper type="regexp" from="(^core\-[0-9]\.[0-9]\.[0-9])(\.jar)" to="\1-SNAPSHOT\2" />
-                </move>
-                <move todir="./lib">
-                  <fileset dir="./lib" />
-                  <mapper type="regexp" from="(^sequencing\-[0-9]\.[0-9]\.[0-9])(\.jar)" to="\1-SNAPSHOT\2" />
+                  <mapper type="regexp" from="(^jphyloio\-.*\-[0-9]-)[0-9.-]+(\.jar)" to="\1SNAPSHOT\2" />
                 </move>
               </target>
             </configuration>
   </build>
 
   <dependencies>
-    <!-- LibrAling -->
+    <!-- Apache commons -->
     <dependency>
-      <groupId>info.bioinfweb.libralign</groupId>
-      <artifactId>libralign-core</artifactId>
-      <version>0.4.0-preview-1</version>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-lang3</artifactId>
+        <version>3.5</version>
     </dependency>
     <dependency>
-      <groupId>info.bioinfweb.libralign</groupId>
-      <artifactId>libralign-swt</artifactId>
-      <version>0.4.0-preview-1</version>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-collections4</artifactId>
+      <version>4.1</version>
     </dependency>
     <dependency>
-      <groupId>info.bioinfweb.libralign</groupId>
-      <artifactId>libralign-biojava1</artifactId>
-      <version>0.4.0-preview-1</version>
+      <groupId>commons-beanutils</groupId>
+      <artifactId>commons-beanutils</artifactId>
+      <version>1.9.2</version>
     </dependency>
-    <!-- commons -->
+    
+    <!-- bioinfweb.commons -->
     <dependency>
       <groupId>info.bioinfweb.commons.java</groupId>
-      <artifactId>bioinfweb-commons-swt</artifactId>
-      <version>2.0.0-preview-1</version>
+      <artifactId>bioinfweb-commons-java-core</artifactId>
+      <version>2.2.0</version>
     </dependency>
     <dependency>
       <groupId>info.bioinfweb.commons.java</groupId>
-      <artifactId>bioinfweb-commons-core</artifactId>
-      <version>2.0.0-preview-1</version>
+      <artifactId>bioinfweb-commons-java-swt</artifactId>
+      <version>2.0.0</version>
     </dependency>
     <dependency>
       <groupId>info.bioinfweb.commons.java</groupId>
-      <artifactId>bioinfweb-commons-bio</artifactId>
-      <version>2.0.0-preview-1</version>
+      <artifactId>bioinfweb-commons-java-bio</artifactId>
+      <version>2.0.0</version>
     </dependency>
     <dependency>
       <groupId>info.bioinfweb.commons.java</groupId>
-      <artifactId>bioinfweb-commons-swing</artifactId>
-      <version>2.0.0-preview-1</version>
+      <artifactId>bioinfweb-commons-java-swing</artifactId>
+      <version>2.2.0</version>
     </dependency>
-    <!-- tic -->
+    
+    <!-- TIC -->
     <dependency>
       <groupId>info.bioinfweb.tic</groupId>
       <artifactId>tic-core</artifactId>
-      <version>2.0.0-preview-1</version>
+      <version>2.0.0-preview-2</version>
     </dependency>
     <dependency>
       <groupId>info.bioinfweb.tic</groupId>
       <artifactId>tic-swt</artifactId>
-      <version>2.0.0-preview-1</version>
+      <version>2.0.0-preview-2</version>
     </dependency>
-    <!-- biojava -->
+    
+    <!-- BioJava -->
     <dependency>
       <groupId>org.biojava</groupId>
       <artifactId>core</artifactId>
       <artifactId>sequencing</artifactId>
       <version>1.9.2</version>
     </dependency>
+    
+    <!-- LibrAlign -->
+    <dependency>
+      <groupId>info.bioinfweb.libralign</groupId>
+      <artifactId>libralign-core</artifactId>
+      <version>0.4.0-preview-2</version>
+    </dependency>
+    <dependency>
+      <groupId>info.bioinfweb.libralign</groupId>
+      <artifactId>libralign-swt</artifactId>
+      <version>0.4.0-preview-2</version>
+    </dependency>
+    <dependency>
+      <groupId>info.bioinfweb.libralign</groupId>
+      <artifactId>libralign-biojava1</artifactId>
+      <version>0.4.0-preview-2</version>
+    </dependency>
+    <dependency>
+      <groupId>info.bioinfweb.libralign</groupId>
+      <artifactId>libralign-io</artifactId>
+      <version>0.4.0-preview-2</version>
+    </dependency>
+    
+    <!-- JPhyloIO -->
+    <dependency>
+      <groupId>info.bioinfweb.jphyloio</groupId>
+      <artifactId>jphyloio-core</artifactId>
+      <version>0.3.0</version>
+    </dependency>
+    <dependency>
+      <groupId>info.bioinfweb.thirdparty.owlapi</groupId>
+      <artifactId>owlapi-xmlutils</artifactId>
+      <version>4.1.4</version>
+    </dependency>
   </dependencies>
 
   <repositories>
       <name>bioinfweb repository</name>
       <url>http://bioinfweb.info/MavenRepository/</url>
     </repository>
+    <!-- <repository>
+      <id>central-maven-repo</id>
+      <name>Maven Central</name>
+      <url>http://central.maven.org/maven2/</url>
+    </repository> -->
   </repositories>
-  
 </project> 
 
index 60dea2f68d1f381ff10da83942a19d76d08ab4e8..6bca977bed3b6d2bc7f202c8a811de4878f0c42b 100644 (file)
@@ -3,5 +3,6 @@
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
        <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
        <classpathentry including="**/*.java" kind="src" path="src/main/java"/>
+       <classpathentry kind="src" path="src/test/java"/>
        <classpathentry kind="output" path="target/classes"/>
 </classpath>
index e6066b230568e29e52c4935812bcdf841f8a311b..af75effc7a466ebd53bebd025e7ef9bd73b54454 100644 (file)
@@ -1,2 +1,56 @@
 /target
 .settings/
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/.project
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/integration-test.log
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/target
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/.directory
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/hibernate.log
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/.settings
+!src/test/java/eu/etaxonomy/taxeditor/molecular/io/.project
+!src/test/java/eu/etaxonomy/taxeditor/molecular/io/integration-test.log
+!src/test/java/eu/etaxonomy/taxeditor/molecular/io/target
+!src/test/java/eu/etaxonomy/taxeditor/molecular/io/.directory
+!src/test/java/eu/etaxonomy/taxeditor/molecular/io/hibernate.log
+!src/test/java/eu/etaxonomy/taxeditor/molecular/io/.settings
+!src/test/java/eu/etaxonomy/taxeditor/molecular/.project
+!src/test/java/eu/etaxonomy/taxeditor/molecular/integration-test.log
+!src/test/java/eu/etaxonomy/taxeditor/molecular/target
+!src/test/java/eu/etaxonomy/taxeditor/molecular/.directory
+!src/test/java/eu/etaxonomy/taxeditor/molecular/hibernate.log
+!src/test/java/eu/etaxonomy/taxeditor/molecular/.settings
+!src/test/java/eu/etaxonomy/taxeditor/.project
+!src/test/java/eu/etaxonomy/taxeditor/integration-test.log
+!src/test/java/eu/etaxonomy/taxeditor/target
+!src/test/java/eu/etaxonomy/taxeditor/.directory
+!src/test/java/eu/etaxonomy/taxeditor/hibernate.log
+!src/test/java/eu/etaxonomy/taxeditor/.settings
+!src/test/java/eu/etaxonomy/.project
+!src/test/java/eu/etaxonomy/integration-test.log
+!src/test/java/eu/etaxonomy/target
+!src/test/java/eu/etaxonomy/.directory
+!src/test/java/eu/etaxonomy/hibernate.log
+!src/test/java/eu/etaxonomy/.settings
+!src/test/java/eu/.project
+!src/test/java/eu/integration-test.log
+!src/test/java/eu/target
+!src/test/java/eu/.directory
+!src/test/java/eu/hibernate.log
+!src/test/java/eu/.settings
+!src/test/java/.project
+!src/test/java/integration-test.log
+!src/test/java/target
+!src/test/java/.directory
+!src/test/java/hibernate.log
+!src/test/java/.settings
+!src/test/.project
+!src/test/integration-test.log
+!src/test/target
+!src/test/.directory
+!src/test/hibernate.log
+!src/test/.settings
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/.project
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/integration-test.log
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/target
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/.directory
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/hibernate.log
+!src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/.settings
index e64c7d114b4a19171cdbdea7c2fec66e66d5260d..d55dc66e497097a42a5cf4b404c3eaf2ffb5dfc6 100644 (file)
@@ -12,10 +12,15 @@ Require-Bundle: org.eclipse.ui,
  eu.etaxonomy.taxeditor.cdmlib,
  eu.etaxonomy.taxeditor.editor,
  eu.etaxonomy.taxeditor.store,
- eu.etaxonomy.taxeditor.molecular.lib
+ eu.etaxonomy.taxeditor.molecular.lib,
+ org.eclipse.core.databinding.observable;bundle-version="1.4.0",
+ org.eclipse.core.databinding;bundle-version="1.4.0",
+ org.eclipse.jface.databinding;bundle-version="1.5.0",
+ org.eclipse.core.databinding.property;bundle-version="1.4.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.taxeditor.molecular,
  eu.etaxonomy.taxeditor.molecular.editor,
- eu.etaxonomy.taxeditor.molecular.handler
+ eu.etaxonomy.taxeditor.molecular.handler,
+ eu.etaxonomy.taxeditor.molecular.io
index 06f7cf3213dc21d85dd4dd75ff3464be06fb1563..685f5ce7b010fff78f2fb936418a41134de3dab8 100644 (file)
@@ -3,6 +3,7 @@ editor.ALIGNMENT_EDITOR = Alignment Editor
 view.PHEROGRAM_VIEW = Pherogram View
 command.EDIT_SEQUENCE = Edit Sequence
 command.name.SHOW_PHEROGRAM = Show Pherogram
+command.name.EXPORT_SEQUENCE_TO_FILE = Export to alignment file
 command.name.CUT_PHEROGRAM_LEFT = Cut pherogram left
 command.name.CUT_PHEROGRAM_RIGHT = Cut pherogram right
 command.name.REVERSE_COMPLEMENT_SELECTED_ROWS = Reverse complement selected rows
@@ -18,4 +19,5 @@ command.TOGGLE_INSERT_OVERWRITE = Toggle insert/overwrite
 menu.ALIGNMENT_EDITOR = Alignment Editor
 menu.label.PHEROGRAM_VIEW = Pherogram View
 command.label.EDIT_SEQUENCE = Edit Sequence
+command.label.EXPORT_SEQUENCE_TO_FILE = Export to alignment file
 command.label.SHOW_PHEROGRAM = Show Pherogram
\ No newline at end of file
index 59036928e0bf55b02f84a480b49a42a582881a3f..40518278c1e2377bcb726bf9c9f81cecfea8782e 100644 (file)
@@ -1,21 +1,23 @@
 #Properties file for eu.etaxonomy.taxeditor.molecular
 editor.ALIGNMENT_EDITOR = Alignment Editor
 view.PHEROGRAM_VIEW = PherogramView
-command.EDIT_SEQUENCE = Edit Sequence
+command.EDIT_SEQUENCE = Sequenz bearbeiten
 command.name.SHOW_PHEROGRAM = Show Pherogram
-command.name.CUT_PHEROGRAM_LEFT = Cut pherogram left
-command.name.CUT_PHEROGRAM_RIGHT = Cut pherogram right
-command.name.REVERSE_COMPLEMENT_SELECTED_ROWS = Reverse complement selected rows
-command.name.CREATE_CONSENUS_SEQUENCE = (Re)create consensus sequence
-command.name.UPDATE_CONSENSUS_SEQUENCE = Update consensus sequence
-command.name.TOGGLE_SHOW_PROBABILITY_VALUES = Toggle show probability values
-command.name.TOGGLE_SHOW_BASE_CALL_LINES = Toggle show base call lines
-command.name.CHANGE_QUALITY_OUTPUT = Change quality output
-command.name.LOAD_PHEROGRAM = Load Pherogram
-command.name.TOGGLE_INSERT_OVERWRITE = Toggle insert/overwrite
-command.name.TOGGLE_LEFT_RIGHT_INSERTION = Toggle left/right insertion in base call sequence
-command.TOGGLE_INSERT_OVERWRITE = Toggle insert/overwrite
+command.name.EXPORT_SEQUENCE_TO_FILE = Alignmentdatei exportieren
+command.name.CUT_PHEROGRAM_LEFT = Pherogramm links abschneiden
+command.name.CUT_PHEROGRAM_RIGHT = Pherogramm rechts abschneiden
+command.name.REVERSE_COMPLEMENT_SELECTED_ROWS = Ausgewählte Spalten reverse complementen
+command.name.CREATE_CONSENUS_SEQUENCE = Konsensussequenz (neu) erzeugen
+command.name.UPDATE_CONSENSUS_SEQUENCE = Konsensussequenz aktualisieren
+command.name.TOGGLE_SHOW_PROBABILITY_VALUES = Anzeige von Wahrscheinlichkeiten umschalten
+command.name.TOGGLE_SHOW_BASE_CALL_LINES = Base-Call-Linienanzeige umschalten
+command.name.CHANGE_QUALITY_OUTPUT = Qualitätsausgabe umschalten
+command.name.LOAD_PHEROGRAM = Pherogram laden
+command.name.TOGGLE_INSERT_OVERWRITE = Einfügen/Überschreiben umschalten
+command.name.TOGGLE_LEFT_RIGHT_INSERTION = Links/rechts Einfügen in Base-Call-Sequenz umschalten
+command.TOGGLE_INSERT_OVERWRITE = Einfügen/Überschreiben umschalten
 menu.ALIGNMENT_EDITOR = Alignment Editor
 menu.label.PHEROGRAM_VIEW = Pherogram View
-command.label.EDIT_SEQUENCE = Edit Sequence
-command.label.SHOW_PHEROGRAM = Show Pherogram
\ No newline at end of file
+command.label.EDIT_SEQUENCE = Sequenz bearbeiten
+command.label.EXPORT_SEQUENCE_TO_FILE = Alignmentdatei exportieren
+command.label.SHOW_PHEROGRAM = Pherogram anzeigen
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages.properties b/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages.properties
new file mode 100644 (file)
index 0000000..607567d
--- /dev/null
@@ -0,0 +1,28 @@
+exportSequenceToFileHandlerIOErrorMessage=An error occurred when trying to export a consensus sequence alignment to the file "%s".
+exportSequenceToFileHandlerIOErrorTitle=I/O error
+exportSequenceToFileHandlerOverwriteTitle=Overwrite file
+exportSequenceToFileHandlerOverwriteText=The file \"%s\" already exists.\n\nDo you want to overwrite it?
+wizardExportAlignmentAppendExtensionButton=Append default extension
+wizardExportAlignmentBrowseButton=Browse...
+wizardExportAlignmentDataLabel=Select the data to export:
+wizardExportAlignmentDescription=Define the output file and format.
+wizardExportAlignmentDestinationLabel=Select the export destination:
+wizardExportAlignmentErrorMissingFileName=The file name must not be empty.
+wizardExportAlignmentErrorMissingSeqLabel=The consensus sequence label must not be empty.
+wizardExportAlignmentErrorNothingToExport=Either single reads or the consensus sequence have to be selected for export.
+wizardExportAlignmentExportConsensusSeqLabel=Export consensus sequence
+wizardExportAlignmentExportFormatLabel=Select the export format:
+wizardExportAlignmentExportSingleReads=Export single reads
+wizardExportAlignmentFileDialogTitle=Export to
+wizardExportAlignmentFileLabel=Alignment file:
+wizardExportAlignmentTitle=Sequence export
+wizardExportAlignmentWarningFileNameStartsDot=File starting with '.' are not supported on all operating systems.
+wizardExportAlignmentwarningMissingExtension=The file name does have a valid extension for the selected format.
+wizardExportAlignmentWarningFileExists=The file already exists and will be overwritten.
+wizardExportAlignmentOptionsDescription=Specify additional export parameters.
+wizardExportAlignmentOptionsTitle=Export options
+wizardExportAlignmentExportedSeqHeading=Specify the sequences to be exported:
+wizardExportAlignmentAdditionalOptionsHeading=Specify additional export options:
+wizardExportAlignmentElongateSeqHeading=Elongate sequences to have equal length with:
+wizardExportAlignmentElongateSeqMissingData=Missing data ('?')"
+wizardExportAlignmentElongateSeqGap=Gap ('-')
diff --git a/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages_de.properties b/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages_de.properties
new file mode 100644 (file)
index 0000000..5eab686
--- /dev/null
@@ -0,0 +1,28 @@
+exportSequenceToFileHandlerIOErrorMessage=Beim Schreiben der Datei "%s" ist ein Fehler aufgetreten.
+exportSequenceToFileHandlerIOErrorTitle=E/A Fehler
+exportSequenceToFileHandlerOverwriteTitle=Datei überschreiben
+exportSequenceToFileHandlerOverwriteText=Die Datei \"%s\" existiert bereits.\n\nSoll sie überschrieben werden?
+wizardExportAlignmentAppendExtensionButton=Standarddateiendung anhängen
+wizardExportAlignmentBrowseButton=Durchsuchen...
+wizardExportAlignmentDataLabel=Zu exportierende Daten:
+wizardExportAlignmentDescription=Wählen Sie den Zielort und das Zielformat aus!
+wizardExportAlignmentDestinationLabel=Zieldatei:
+wizardExportAlignmentErrorMissingFileName=Der Dateiname darf nicht leer sein.
+wizardExportAlignmentErrorMissingSeqLabel=Der Name der Konsensussequenz darf nicht leer sein.
+wizardExportAlignmentErrorNothingToExport=Es müssen entweder die einzelnen Reads oder die Konsensussequenz zum Export ausgewählt werden.
+wizardExportAlignmentExportConsensusSeqLabel=Konsensussequenz exportieren
+wizardExportAlignmentExportFormatLabel=Zielformat:
+wizardExportAlignmentExportSingleReads=Einzelne Reads exportieren
+wizardExportAlignmentFileDialogTitle=Exportieren nach
+wizardExportAlignmentFileLabel=Alignment Datei:
+wizardExportAlignmentTitle=Sequenzexport
+wizardExportAlignmentWarningFileNameStartsDot=Dateinamen, die mit einem '.' beginnen, werden nicht auf allen Betriebssystemen unterstützt.
+wizardExportAlignmentwarningMissingExtension=Der momentane Dateiname hat keine zum aktuellen Format passende Endung.
+wizardExportAlignmentWarningFileExists=The existiert bereits und würde überschrieben.
+wizardExportAlignmentOptionsDescription=Geben Sie weitere Exportparameter an!
+wizardExportAlignmentOptionsTitle=Exportoptionen
+wizardExportAlignmentExportedSeqHeading=Zu exportierende Sequenzen:
+wizardExportAlignmentAdditionalOptionsHeading=Erweiterte Exportoptionen:
+wizardExportAlignmentElongateSeqHeading=Sequenzen auf einheitliche Länge bringen mit:
+wizardExportAlignmentElongateSeqMissingData=Fehlende Daten ('?')"
+wizardExportAlignmentElongateSeqGap=Lücke ('-')
index 78b734fd1ad72db0d93c26f003d3331af3159af4..7df2be1afbbc52fb9c3a097839186d5dbee532e1 100644 (file)
                id="eu.etaxonomy.taxeditor.molecular.AlignmentEditor.toggleLeftRightInsertion"
                name="%command.name.TOGGLE_LEFT_RIGHT_INSERTION">
          </command>
+         <command
+               defaultHandler="eu.etaxonomy.taxeditor.molecular.handler.ExportSequenceToFileHandler"
+               id="eu.etaxonomy.taxeditor.molecular.exportSequenceToFile"
+               name="%command.name.EXPORT_SEQUENCE_TO_FILE">
+         </command>
       </extension>
       <extension
             point="org.eclipse.ui.menus">
                   </reference>
                </visibleWhen>
             </command>
+            <command
+                  commandId="eu.etaxonomy.taxeditor.molecular.exportSequenceToFile"
+                  label="%command.label.EXPORT_SEQUENCE_TO_FILE"
+                  style="push">
+               <visibleWhen
+                     checkEnabled="true">
+                  <reference
+                        definitionId="isSequence">
+                  </reference>
+               </visibleWhen>
+            </command>
             <command
                   commandId="eu.etaxonomy.taxeditor.molecular.showPherogram"
                   label="%command.label.SHOW_PHEROGRAM"
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/Messages.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/Messages.java
new file mode 100644 (file)
index 0000000..3907483
--- /dev/null
@@ -0,0 +1,63 @@
+/**
+ * Copyright (C) 2016 EDIT
+ * 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.
+ */
+package eu.etaxonomy.taxeditor.molecular;
+
+
+import org.eclipse.osgi.util.NLS;
+
+
+
+/**
+ * Provides messages and texts for classes of the molecular plugin.
+ *
+ * @author Ben Stöver
+ * @date 17.11.2016
+ */
+public class Messages extends NLS {
+    private static final String BUNDLE_NAME = "OSGI-INF/l10n/messages"; //$NON-NLS-1$
+
+
+    public static String exportSequenceToFileHandlerIOErrorMessage;
+    public static String exportSequenceToFileHandlerIOErrorTitle;
+    public static String exportSequenceToFileHandlerOverwriteTitle;
+    public static String exportSequenceToFileHandlerOverwriteText;
+
+    public static String wizardExportAlignmentAppendExtensionButton;
+    public static String wizardExportAlignmentBrowseButton;
+    public static String wizardExportAlignmentDataLabel;
+    public static String wizardExportAlignmentDescription;
+    public static String wizardExportAlignmentDestinationLabel;
+    public static String wizardExportAlignmentErrorMissingFileName;
+    public static String wizardExportAlignmentErrorMissingSeqLabel;
+    public static String wizardExportAlignmentErrorNothingToExport;
+    public static String wizardExportAlignmentExportConsensusSeqLabel;
+    public static String wizardExportAlignmentExportFormatLabel;
+    public static String wizardExportAlignmentExportSingleReads;
+    public static String wizardExportAlignmentFileDialogTitle;
+    public static String wizardExportAlignmentFileLabel;
+    public static String wizardExportAlignmentOptionsDescription;
+    public static String wizardExportAlignmentOptionsTitle;
+    public static String wizardExportAlignmentTitle;
+    public static String wizardExportAlignmentWarningFileNameStartsDot;
+    public static String wizardExportAlignmentwarningMissingExtension;
+    public static String wizardExportAlignmentWarningFileExists;
+    public static String wizardExportAlignmentExportedSeqHeading;
+    public static String wizardExportAlignmentAdditionalOptionsHeading;
+    public static String wizardExportAlignmentElongateSeqHeading;
+    public static String wizardExportAlignmentElongateSeqMissingData;
+    public static String wizardExportAlignmentElongateSeqGap;
+
+
+    static {
+        // initialize resource bundle
+        NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+    }
+
+    private Messages() {}
+}
index c1023e1c6c3266f7786bf7e2b0f6292f11d1c009..41a6b82e139ab0fe2c06b9315a91c183520c8bcc 100644 (file)
@@ -72,7 +72,6 @@ import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.molecular.SequenceString;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
 import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment;
-import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment.Shift;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.molecular.TaxeditorMolecularPlugin;
 import eu.etaxonomy.taxeditor.molecular.handler.ToggleInsertOverwriteHandler;
@@ -133,11 +132,11 @@ public class AlignmentEditor extends EditorPart {
 
 
     private MultipleAlignmentsContainer alignmentsContainer = null;
-    private final Map<Integer, SingleReadAlignment> cdmMap = new TreeMap<Integer, SingleReadAlignment>();  //TODO Move this to ContigSequenceDataProvider
+    private final Map<String, SingleReadAlignment> cdmMap = new TreeMap<String, SingleReadAlignment>();  //TODO Move this to ContigSequenceDataProvider
     private boolean dirty = false;
 
-    public AlignmentEditor()
-    {
+
+    public AlignmentEditor() {
        super();
        conversationHolder = CdmStore.createConversation();
        //conversationHolder = null;
@@ -186,9 +185,9 @@ public class AlignmentEditor extends EditorPart {
                result.setAllowVerticalScrolling(allowVerticalScrolling);
 
                CharacterTokenSet tokenSet = CharacterTokenSet.newDNAInstance();  //TODO Should NUCLEOTIDE be used instead?
-               AlignmentModel<Character> provider = new PackedAlignmentModel<Character>(tokenSet);
-               result.setAlignmentModel(provider, false);
-               provider.getChangeListeners().add(DIRTY_LISTENER);
+               AlignmentModel<Character> model = new PackedAlignmentModel<Character>(tokenSet);
+               result.setAlignmentModel(model, false);
+               model.getChangeListeners().add(DIRTY_LISTENER);
                result.getPaintSettings().getTokenPainterList().set(0, new NucleotideTokenPainter());
 
                return result;
@@ -274,12 +273,12 @@ public class AlignmentEditor extends EditorPart {
     }
 
 
-    public boolean hasPherogram(int sequenceID) {
+    public boolean hasPherogram(String sequenceID) {
         return getReadsArea().getDataAreas().getSequenceAreas(sequenceID).size() > PHEROGRAM_AREA_INDEX;
     }
 
 
-    public PherogramArea getPherogramArea(int sequenceID) {
+    public PherogramArea getPherogramArea(String sequenceID) {
         if (hasPherogram(sequenceID)) {
             return (PherogramArea)getReadsArea().getDataAreas().getSequenceAreas(sequenceID).get(PHEROGRAM_AREA_INDEX);
         }
@@ -306,7 +305,7 @@ public class AlignmentEditor extends EditorPart {
 
                        // Add test consensus sequence:
                        AlignmentModel consensusModel = getEditableConsensusArea().getAlignmentModel();
-                       int id = consensusModel.addSequence(CONSENSUS_NAME);
+                       String id = consensusModel.addSequence(CONSENSUS_NAME);
                        Collection<Object> tokens = new ArrayList<Object>();  // First save tokens in a collection to avoid GUI updated for each token.
                        tokens.add(consensusModel.getTokenSet().tokenByRepresentation("A"));
                        tokens.add(consensusModel.getTokenSet().tokenByRepresentation("C"));
@@ -327,12 +326,8 @@ public class AlignmentEditor extends EditorPart {
                for (SingleReadAlignment singleReadAlignment : sequenceNode.getSingleReadAlignments()) {
                        try {
                                SingleRead pherogramInfo = singleReadAlignment.getSingleRead();
-                               URI uri = null;
-                               if (pherogramInfo.getPherogram() != null) {
-                                   uri = MediaUtils.getFirstMediaRepresentationPart(pherogramInfo.getPherogram()).getUri();
-                               }
-                               int id = addRead(DerivateLabelProvider.getDerivateText(pherogramInfo, conversationHolder),
-                                               uri,
+                               String id = addRead(DerivateLabelProvider.getDerivateText(pherogramInfo, conversationHolder),
+                                               getPherogramURI(pherogramInfo),
                                                singleReadAlignment.isReverseComplement(),
                                                singleReadAlignment.getEditedSequence(),
                                                singleReadAlignment.getFirstSeqPosition(),
@@ -348,10 +343,10 @@ public class AlignmentEditor extends EditorPart {
                }
 
                // Set consensus sequence:
-               AlignmentModel consensusProvider = getEditableConsensusArea().getAlignmentModel();
-               int id = consensusProvider.addSequence(CONSENSUS_NAME);
-               consensusProvider.insertTokensAt(id, 0, AlignmentModelUtils.charSequenceToTokenList(
-                               sequenceNode.getConsensusSequence().getString(), consensusProvider.getTokenSet()));
+               AlignmentModel consensusModel = getEditableConsensusArea().getAlignmentModel();
+               String id = consensusModel.addSequence(CONSENSUS_NAME);
+               consensusModel.insertTokensAt(id, 0, AlignmentModelUtils.charSequenceToTokenList(
+                               sequenceNode.getConsensusSequence().getString(), consensusModel.getTokenSet()));
                //TODO Can the consensus sequence also be null? / Should it be created here, if nothing is in the DB?
     }
 
@@ -398,25 +393,25 @@ public class AlignmentEditor extends EditorPart {
         bars.getStatusLineManager().setMessage("Edit mode: " +
                        (getReadsArea().getEditSettings().isInsert() ? "Insert" : "Overwrite") + "  " +
                        "Insertion in pherogram: " +
-                       (getReadsArea().getEditSettings().isInsertLeftInDataArea() ? "Left" : "Right"));
+                       (getReadsArea().getEditSettings().isInsertLeftInDataArea() ? "Left" : "Right"));  //TODO multi language
     }
 
 
     private SingleReadAlignment.Shift[] convertToCDMShifts(PherogramAreaModel model) {
        Iterator<ShiftChange> iterator = model.shiftChangeIterator();
-       List<Shift> shifts = new ArrayList<SingleReadAlignment.Shift>();
+       List<SingleReadAlignment.Shift> shifts = new ArrayList<SingleReadAlignment.Shift>();
        while (iterator.hasNext()) {
                ShiftChange shiftChange = iterator.next();
                shifts.add(new SingleReadAlignment.Shift(shiftChange.getBaseCallIndex(), shiftChange.getShiftChange()));
        }
-       return shifts.toArray(new Shift[]{});
+       return shifts.toArray(new SingleReadAlignment.Shift[shifts.size()]);
     }
 
 
     @Override
     public void doSave(IProgressMonitor monitor) {
        if (getEditorInput() instanceof AlignmentEditorInput) {
-               String taskName = "Saving alignment";
+               String taskName = "Saving alignment";  //TODO multi language
             monitor.beginTask(taskName, 3);
 
             //re-loading sequence to avoid session conflicts
@@ -438,12 +433,12 @@ public class AlignmentEditor extends EditorPart {
                // Write single reads:
                stringProvider.setUnderlyingModel(getReadsArea().getAlignmentModel());
                sequenceNode.getSingleReadAlignments().retainAll(cdmMap.values());  // Remove all reads that are not in the alignment anymore.
-               Iterator<Integer> iterator = getReadsArea().getAlignmentModel().sequenceIDIterator();
+               Iterator<String> iterator = getReadsArea().getAlignmentModel().sequenceIDIterator();
                while (iterator.hasNext()) {
-                       int id = iterator.next();
+                       String id = iterator.next();
                        SingleReadAlignment singleRead = cdmMap.get(id);
                        if (singleRead == null) {
-                           throw new InternalError("Creating new reads from AlignmentEditor not implemented.");
+                           throw new InternalError("Creating new reads from AlignmentEditor not implemented.");  //TODO multi language
                                //TODO Create new read object. => Shall it be allowed to add reads in the alignment editor which are not represented in the CDM tree before the alignment editor is saved?
                                //singleRead = SingleReadAlignment.NewInstance(consensusSequence, singleRead, shifts, editedSequence);
                        }
@@ -542,13 +537,13 @@ public class AlignmentEditor extends EditorPart {
     private String cutPherogram(boolean left) {
         SelectionModel selection = getReadsArea().getSelection();
         if (selection.getCursorHeight() != 1) {
-            return "Cutting pherograms is only possible if exactly one row is selected.";
+            return "Cutting pherograms is only possible if exactly one row is selected.";  //TODO multi language
         }
         else {
             PherogramArea pherogramArea =
                     getPherogramArea(getReadsArea().getSequenceOrder().idByIndex(selection.getCursorRow()));
             if (pherogramArea == null) {
-                return "There is no pherogram attached to the current sequence.";
+                return "There is no pherogram attached to the current sequence.";  //TODO multi language
             }
             else {
                 if (left) {
@@ -556,7 +551,7 @@ public class AlignmentEditor extends EditorPart {
                         return null;
                     }
                     else {
-                        return "The left end of the selection lies outside the pherogram attached to this sequence.";
+                        return "The left end of the selection lies outside the pherogram attached to this sequence.";  //TODO multi language
                     }
                 }
                 else {
@@ -564,7 +559,7 @@ public class AlignmentEditor extends EditorPart {
                         return null;
                     }
                     else {
-                        return "The right end of the selection lies outside the pherogram attached to this sequence.";
+                        return "The right end of the selection lies outside the pherogram attached to this sequence.";  //TODO multi language
                     }
                 }
             }
@@ -586,7 +581,7 @@ public class AlignmentEditor extends EditorPart {
        SelectionModel selection = getReadsArea().getSelection();
        AlignmentModel<?> model = getReadsArea().getAlignmentModel();
        for (int row = selection.getFirstRow(); row < selection.getFirstRow() + selection.getCursorHeight(); row++) {
-                       int sequenceID = getReadsArea().getSequenceOrder().idByIndex(row);
+               String sequenceID = getReadsArea().getSequenceOrder().idByIndex(row);
                        PherogramArea area = getPherogramArea(sequenceID);
                        PherogramAreaModel pherogramAlignmentModel = area.getModel();
                        AlignmentModelUtils.reverseComplement(model, sequenceID,
@@ -607,7 +602,7 @@ public class AlignmentEditor extends EditorPart {
     public <T> void createConsensusSequence() {
         ConsensusSequenceArea area = getConsensusHintDataArea();
         AlignmentModel<T> model = (AlignmentModel<T>)getEditableConsensusArea().getAlignmentModel();
-        int sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
+        String sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
         int length = getReadsArea().getAlignmentModel().getMaxSequenceLength();
 
         Collection<T> tokens = new ArrayList<T>(length);
@@ -629,7 +624,7 @@ public class AlignmentEditor extends EditorPart {
         ConsensusSequenceArea area = getConsensusHintDataArea();
         AlignmentModel<T> model = (AlignmentModel<T>)getEditableConsensusArea().getAlignmentModel();
         TokenSet<T> tokenSet = model.getTokenSet();
-        int sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
+        String sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
         int currentConsensusLength = model.getSequenceLength(sequenceID);
         int overallLength = getReadsArea().getAlignmentModel().getMaxSequenceLength();
 
@@ -669,9 +664,7 @@ public class AlignmentEditor extends EditorPart {
 
        private String newReadName() {
                int index = 1;
-               while (getReadsArea().getAlignmentModel().sequenceIDByName(DEFAULT_READ_NAME_PREFIX + index)
-                               != AlignmentModel.NO_SEQUENCE_FOUND) {
-
+               while (getReadsArea().getAlignmentModel().sequenceIDByName(DEFAULT_READ_NAME_PREFIX + index) != null) {
                        index++;
                }
                return DEFAULT_READ_NAME_PREFIX + index;
@@ -700,11 +693,11 @@ public class AlignmentEditor extends EditorPart {
      * @throws IOException if an error occurred when trying to read the pherogram file
      * @throws UnsupportedChromatogramFormatException if the format of the pherogram file is not supported
      */
-    public int addRead(String name, URI pherogramURI, boolean reverseComplemented, String editedSequence,
+    public String addRead(String name, URI pherogramURI, boolean reverseComplemented, String editedSequence,
             Integer firstSeqPos, Integer leftCutPos, Integer rightCutPos, SingleReadAlignment.Shift[] shifts)
             throws IOException, UnsupportedChromatogramFormatException {
 
-               AlignmentModel provider = getReadsArea().getAlignmentModel();
+               AlignmentModel model = getReadsArea().getAlignmentModel();
                PherogramProvider pherogramProvider = null;
                if (pherogramURI != null) {
                    pherogramProvider = readPherogram(pherogramURI);  // Must happen before a sequence is added, because it might throw an exception.
@@ -714,25 +707,25 @@ public class AlignmentEditor extends EditorPart {
                }
 
         // Create sequence:
-               provider.addSequence(name);
-               int id = provider.sequenceIDByName(name);
+               model.addSequence(name);
+               String id = model.sequenceIDByName(name);
 
                // Set edited sequence:
                Collection<Object> tokens = null;  // First save tokens in a collection to avoid GUI updated for each token.
                if (editedSequence != null) {
-                       tokens = AlignmentModelUtils.charSequenceToTokenList(editedSequence, provider.getTokenSet());
+                       tokens = AlignmentModelUtils.charSequenceToTokenList(editedSequence, model.getTokenSet());
                }
                else if (pherogramProvider != null) {  // Copy base call sequence into alignment:
                        tokens = new ArrayList<Object>();
                        for (int i = 0; i < pherogramProvider.getSequenceLength(); i++) {
-                               tokens.add(provider.getTokenSet().tokenByRepresentation(
+                               tokens.add(model.getTokenSet().tokenByRepresentation(
                                        Character.toString(pherogramProvider.getBaseCall(i))));
                        }
                        setDirty();
                }
 
                if (tokens != null) {  // If either an edited sequence or a pherogram URI was provided.
-                   provider.insertTokensAt(id, 0, tokens);
+                   model.insertTokensAt(id, 0, tokens);
 
                    if (pherogramProvider != null) {
                        // Create pherogram area:
@@ -740,16 +733,16 @@ public class AlignmentEditor extends EditorPart {
                                new PherogramAreaModel(pherogramProvider));
 
                        // Set position properties and shifts:
-                       PherogramAreaModel model = pherogramArea.getModel();
+                       PherogramAreaModel phergramModel = pherogramArea.getModel();
                        if ((firstSeqPos != null) && (leftCutPos != null)) {
-                           model.setFirstSeqLeftCutPos(firstSeqPos, leftCutPos);
+                           phergramModel.setFirstSeqLeftCutPos(firstSeqPos, leftCutPos);
                        }
                        if (rightCutPos != null) {
-                           model.setRightCutPosition(rightCutPos);
+                           phergramModel.setRightCutPosition(rightCutPos);
                        }
                        if ((shifts != null) && (shifts.length > 0)) {
                            for (int i = 0; i < shifts.length; i++) {
-                               model.addShiftChange(shifts[i].position, shifts[i].shift);
+                               phergramModel.addShiftChange(shifts[i].position, shifts[i].shift);
                            }
                            setDirty();
                        }
@@ -761,4 +754,14 @@ public class AlignmentEditor extends EditorPart {
                }
                return id;
        }
+
+
+    public static URI getPherogramURI(SingleRead pherogramInfo) {
+        if (pherogramInfo.getPherogram() != null) {
+            return MediaUtils.getFirstMediaRepresentationPart(pherogramInfo.getPherogram()).getUri();
+        }
+        else {
+            return null;
+        }
+    }
 }
index 5b88def3fc5f0abf37bc9ae429ac840ae2bef5d6..e7151aa45a49f82d3a6c5a017c5ca48989de7f21 100644 (file)
@@ -40,7 +40,7 @@ public abstract class AbstractPherogramComponentHandler extends AbstractHandler
 
         if (activePart instanceof AlignmentEditor) {
             AlignmentEditor editor = (AlignmentEditor)activePart;
-            Iterator<Integer> idIterator = editor.getReadsArea().getAlignmentModel().sequenceIDIterator();
+            Iterator<String> idIterator = editor.getReadsArea().getAlignmentModel().sequenceIDIterator();
             while (idIterator.hasNext()) {
                 PherogramArea area = editor.getPherogramArea(idIterator.next());
                 if (area != null) {
index 590aab56cda513d4684b25da531f4949cf16aea3..98205803035aa38a307005ee86efc049a0a21c9d 100644 (file)
@@ -30,10 +30,11 @@ import eu.etaxonomy.taxeditor.molecular.editor.AlignmentEditor;
  * @date 26.08.2015\r
  */\r
 public class AlignmentEditorPasteHandler extends AbstractFocusedAlignmentAreaHandler implements IElementUpdater {\r
-       private void pasteString(AlignmentArea area, int sequenceID, String content) {\r
+       private void pasteString(AlignmentArea area, String sequenceID, String content) {\r
                area.getActionProvider().deleteSelection();  // Overwrite selected tokens.\r
                area.getActionProvider().elongateSequence(sequenceID, area.getSelection().getCursorColumn());\r
 \r
+               @SuppressWarnings("unchecked")\r
                AlignmentModel<Object> alignmentModel = (AlignmentModel<Object>)area.getAlignmentModel();\r
                alignmentModel.insertTokensAt(sequenceID, area.getSelection().getCursorColumn(),\r
                                AlignmentModelUtils.charSequenceToTokenList(content, alignmentModel.getTokenSet(),\r
@@ -62,7 +63,7 @@ public class AlignmentEditorPasteHandler extends AbstractFocusedAlignmentAreaHan
 \r
                        if (!lines.isEmpty()) { //TODO Can lines be empty? (Can an empty string "" be copied to the clipboard?)\r
                                if (selection.getCursorHeight() == 1) {  // If the consensus sequence is focused, this is the only possible case.\r
-                                       int sequenceID = focusedArea.getSequenceOrder().idByIndex(selection.getCursorRow());\r
+                                       String sequenceID = focusedArea.getSequenceOrder().idByIndex(selection.getCursorRow());\r
                                        if (lines.size() == 1) {\r
                                                pasteString(focusedArea, sequenceID, lines.get(0));\r
                                        }\r
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java
new file mode 100644 (file)
index 0000000..928cf8e
--- /dev/null
@@ -0,0 +1,105 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2016 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.molecular.handler;\r
+\r
+\r
+import info.bioinfweb.jphyloio.JPhyloIOEventWriter;\r
+import info.bioinfweb.jphyloio.ReadWriteParameterMap;\r
+import info.bioinfweb.jphyloio.ReadWriteParameterNames;\r
+import info.bioinfweb.jphyloio.dataadapters.implementations.ListBasedDocumentDataAdapter;\r
+import info.bioinfweb.jphyloio.factory.JPhyloIOReaderWriterFactory;\r
+import info.bioinfweb.jphyloio.objecttranslation.ObjectTranslatorFactory;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.jface.viewers.TreeNode;\r
+import org.eclipse.jface.wizard.WizardDialog;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.model.molecular.Sequence;\r
+import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
+import eu.etaxonomy.taxeditor.molecular.Messages;\r
+import eu.etaxonomy.taxeditor.molecular.TaxeditorMolecularPlugin;\r
+import eu.etaxonomy.taxeditor.molecular.io.CDMPherogramAlignmentObjectTranslator;\r
+import eu.etaxonomy.taxeditor.molecular.io.CDMSequenceMatrixAdapter;\r
+import eu.etaxonomy.taxeditor.molecular.io.SingleReadAlignmentRDFXMLConstants;\r
+import eu.etaxonomy.taxeditor.molecular.io.wizard.ExportSingleReadAlignmentWizard;\r
+import eu.etaxonomy.taxeditor.util.ApplicationUtil;\r
+\r
+\r
+\r
+/**\r
+ * Allows to export a single read alignment to various alignment formats using\r
+ * <a href="http://bioinfweb.info/JPhyloIO/"><i>JPhyloIO</i></a>.\r
+ *\r
+ * @author Ben Stöver\r
+ * @date 24.04.2016\r
+ */\r
+public class ExportSequenceToFileHandler extends AbstractHandler {\r
+    private static final JPhyloIOReaderWriterFactory factory = new JPhyloIOReaderWriterFactory();\r
+\r
+\r
+    @Override\r
+    public Object execute(ExecutionEvent event) throws ExecutionException {\r
+        ISelection currentSelection = HandlerUtil.getCurrentSelection(event);\r
+        TreeNode treeNodeOfSelection = EditorUtil.getTreeNodeOfSelection(currentSelection);\r
+        if (treeNodeOfSelection != null && treeNodeOfSelection.getValue() instanceof Sequence) {\r
+            Sequence sequence = (Sequence)treeNodeOfSelection.getValue();\r
+\r
+            final ExportSingleReadAlignmentWizard wizard = new ExportSingleReadAlignmentWizard();\r
+            final WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard);\r
+            if (dialog.open() == IStatus.OK) {\r
+                // Prepare writer parameters:\r
+                ReadWriteParameterMap parameters = new ReadWriteParameterMap();\r
+                parameters.put(ReadWriteParameterNames.KEY_APPLICATION_NAME, ApplicationUtil.getTitle());\r
+                //parameters.put(ReadWriteParameterNames.KEY_APPLICATION_VERSION, ApplicationUtil.getVersion());  // Setting the version unnecessary, since its already contained in the title.\r
+                parameters.put(ReadWriteParameterNames.KEY_APPLICATION_URL, "http://cybertaxonomy.eu/taxeditor/");  //TODO Specify URL obtained from a central class?\r
+                parameters.put(ReadWriteParameterNames.KEY_SEQUENCE_EXTENSION_TOKEN, wizard.getModel().getElongationToken());\r
+\r
+                // Create and register object translator for writing pherogram alignment shifts:\r
+                ObjectTranslatorFactory translatorFactory = new ObjectTranslatorFactory();\r
+                translatorFactory.addXSDTranslators(true);\r
+                translatorFactory.addTranslator(new CDMPherogramAlignmentObjectTranslator(), true, SingleReadAlignmentRDFXMLConstants.DATA_TYPE_PHERORAGM_ALIGNMENT);\r
+                parameters.put(ReadWriteParameterNames.KEY_OBJECT_TRANSLATOR_FACTORY, translatorFactory);\r
+\r
+                // Create writer and document adapters:\r
+                JPhyloIOEventWriter writer = factory.getWriter(wizard.getModel().getFormatInfo().getFormatID());\r
+                ListBasedDocumentDataAdapter document = new ListBasedDocumentDataAdapter();\r
+                document.getMatrices().add(new CDMSequenceMatrixAdapter(sequence, wizard.getModel().getConsensusSequenceLabel(),\r
+                        wizard.getModel().isExportConsensusSequence(), wizard.getModel().isExportSingleReads()));\r
+\r
+                // Write document:\r
+                File file = new File(wizard.getModel().getFileName());\r
+                if (!file.exists() || MessagingUtils.confirmDialog(Messages.exportSequenceToFileHandlerOverwriteTitle, String.format(\r
+                        Messages.exportSequenceToFileHandlerOverwriteText, file.getAbsolutePath()))) {\r
+\r
+                    try {\r
+                        writer.writeDocument(document, file, parameters);\r
+                    }\r
+                    catch (IOException e) {\r
+                        e.printStackTrace();\r
+                        MessagingUtils.errorDialog(Messages.exportSequenceToFileHandlerIOErrorTitle, this,\r
+                                String.format(Messages.exportSequenceToFileHandlerIOErrorMessage,\r
+                                        file.getAbsolutePath()), TaxeditorMolecularPlugin.PLUGIN_ID, e, false);\r
+                    }\r
+                }\r
+\r
+            }\r
+        }\r
+        return null;\r
+    }\r
+}\r
index f4c658084b6e9f38b80ac456b5a5565bfa3e4036..c4eb1c33c2f578d55eb063bee13e1080a465ce62 100644 (file)
@@ -27,7 +27,6 @@ import eu.etaxonomy.taxeditor.molecular.editor.PherogramViewPart;
  * Displays an undistorted pherogram with {@link PherogramViewPart}.
  *
  * @author Ben Stöver
- *
  */
 public class ShowPherogramHandler extends AbstractHandler {
        public static void showPherogram(PherogramComponentModel model) throws PartInitException {
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/CDMPherogramAlignmentObjectTranslator.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/CDMPherogramAlignmentObjectTranslator.java
new file mode 100644 (file)
index 0000000..31457fc
--- /dev/null
@@ -0,0 +1,68 @@
+// $Id$
+/**
+* Copyright (C) 2016 EDIT
+* 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.
+*/
+package eu.etaxonomy.taxeditor.molecular.io;
+
+
+import info.bioinfweb.commons.io.XMLUtils;
+import info.bioinfweb.jphyloio.ReaderStreamDataProvider;
+import info.bioinfweb.jphyloio.WriterStreamDataProvider;
+import info.bioinfweb.jphyloio.objecttranslation.InvalidObjectSourceDataException;
+import info.bioinfweb.jphyloio.objecttranslation.implementations.AbstractXMLObjectTranslator;
+
+import java.io.IOException;
+
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment;
+
+
+
+/**
+ * <i>JPhyloIO</i> object translator to read and write a shift list of a {@link SingleReadAlignment} object from and
+ * to <i>XML</i>.
+ *
+ * @author Ben Stöver
+ * @date 28.10.2016
+ */
+public class CDMPherogramAlignmentObjectTranslator extends AbstractXMLObjectTranslator<SingleReadAlignment.Shift[]>
+        implements SingleReadAlignmentRDFXMLConstants {
+
+    @Override
+    public Class<SingleReadAlignment.Shift[]> getObjectClass() {
+        return SingleReadAlignment.Shift[].class;
+    }
+
+
+    @Override
+    public SingleReadAlignment.Shift[] readXMLRepresentation(XMLEventReader reader, ReaderStreamDataProvider<?> streamDataProvider)
+            throws IOException, XMLStreamException, InvalidObjectSourceDataException {
+
+        // TODO implement
+        throw new InternalError("Not implemented.");
+    }
+
+
+    @Override
+    public void writeXMLRepresentation(XMLStreamWriter writer, Object object, WriterStreamDataProvider<?> streamDataProvider)
+            throws IOException, XMLStreamException, ClassCastException {
+
+        SingleReadAlignment.Shift[] shifts = (SingleReadAlignment.Shift[])object;
+        XMLUtils.writeStartElement(writer, TAG_SHIFTS);
+        for (SingleReadAlignment.Shift shift : shifts) {
+            XMLUtils.writeStartElement(writer, TAG_SHIFT);
+            XMLUtils.writeAttribute(writer, ATTR_POSITION, Integer.toString(shift.position));
+            XMLUtils.writeAttribute(writer, ATTR_SHIFT, Integer.toString(shift.shift));
+            writer.writeEndElement();
+        }
+        writer.writeEndElement();
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/CDMSequenceMatrixAdapter.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/CDMSequenceMatrixAdapter.java
new file mode 100644 (file)
index 0000000..68d6ac1
--- /dev/null
@@ -0,0 +1,271 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2016 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.molecular.io;\r
+\r
+\r
+import info.bioinfweb.commons.bio.CharacterStateSetType;\r
+import info.bioinfweb.commons.io.W3CXSConstants;\r
+import info.bioinfweb.commons.text.StringUtils;\r
+import info.bioinfweb.jphyloio.ReadWriteConstants;\r
+import info.bioinfweb.jphyloio.ReadWriteParameterMap;\r
+import info.bioinfweb.jphyloio.dataadapters.JPhyloIOEventReceiver;\r
+import info.bioinfweb.jphyloio.dataadapters.MatrixDataAdapter;\r
+import info.bioinfweb.jphyloio.dataadapters.ObjectListDataAdapter;\r
+import info.bioinfweb.jphyloio.dataadapters.implementations.NoCharDefsNoSetsMatrixDataAdapter;\r
+import info.bioinfweb.jphyloio.dataadapters.implementations.store.StoreObjectListDataAdapter;\r
+import info.bioinfweb.jphyloio.events.CharacterSetIntervalEvent;\r
+import info.bioinfweb.jphyloio.events.LinkedLabeledIDEvent;\r
+import info.bioinfweb.jphyloio.events.SequenceTokensEvent;\r
+import info.bioinfweb.jphyloio.events.TokenSetDefinitionEvent;\r
+import info.bioinfweb.jphyloio.events.type.EventContentType;\r
+import info.bioinfweb.jphyloio.utils.JPhyloIOWritingUtils;\r
+\r
+import java.io.IOException;\r
+import java.net.URI;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import javax.xml.namespace.QName;\r
+\r
+import eu.etaxonomy.cdm.model.molecular.Sequence;\r
+import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment;\r
+import eu.etaxonomy.taxeditor.molecular.editor.AlignmentEditor;\r
+\r
+\r
+\r
+/**\r
+ * In implementation of {@link MatrixDataAdapter} that delegates to a {@link Sequence} object.\r
+ * <p>\r
+ * Note that this adapter stores information on the {@link Sequence} in creation. Modifying the sequence or linked\r
+ * objects will require to create a new instance of this class. Otherwise unexpected behavior may be the consequence.\r
+ *\r
+ * @author Ben Stöver\r
+ * @date 29.04.2016\r
+ */\r
+public class CDMSequenceMatrixAdapter extends NoCharDefsNoSetsMatrixDataAdapter implements ReadWriteConstants, SingleReadAlignmentRDFXMLConstants {\r
+    public static final String MATRIX_ID = DEFAULT_MATRIX_ID_PREFIX + "ContigAlignment";\r
+    public static final String SINGLE_READ_SEQUENCE_ID_PREFIX = DEFAULT_SEQUENCE_ID_PREFIX + "SingleRead";\r
+    public static final String CONSENSUS_SEQUENCE_ID= DEFAULT_SEQUENCE_ID_PREFIX + "Consensus";\r
+\r
+\r
+    private Sequence sequence;\r
+    private boolean exportConsensus;\r
+    private List<SingleReadAlignment> singleReadList;\r
+    private String consensusSequenceLabel;\r
+    private ObjectListDataAdapter<TokenSetDefinitionEvent> tokenSetList;\r
+    //TODO Also allow specifying single read labels?\r
+\r
+\r
+    /**\r
+     * Creates a new instance of this class.\r
+     *\r
+     * @param sequence the <i>CDM</i> sequence object containing the data to be exported\r
+     * @param consensusSequenceLabel the label to be used for the consensus sequence (Maybe {@code null}.)\r
+     * @param exportConsensus Specify {@code true} here, if the consensus sequence shall be included in the export or {@code false}\r
+     *        otherwise.\r
+     * @param exportSingleReads Specify {@code true} here, if the single reads shall be included in the export or {@code false}\r
+     *        otherwise.\r
+     * @throws IllegalArgumentException if both {@code exportConsensus} and {@code exportSingleReads} are {@code false}\r
+     */\r
+    public CDMSequenceMatrixAdapter(Sequence sequence, String consensusSequenceLabel, boolean exportConsensus, boolean exportSingleReads) {\r
+        super();\r
+        if (!exportConsensus && !exportSingleReads) {\r
+            throw new IllegalArgumentException("Either exportConsensus or exportSingleReads must be true. "\r
+                    + "Otherwise no sequences would be contained in this matrix.");\r
+        }\r
+        else {\r
+            this.sequence = sequence;\r
+            this.exportConsensus = exportConsensus;\r
+            this.consensusSequenceLabel = consensusSequenceLabel;\r
+            tokenSetList = createTokenSetList();\r
+            if (exportSingleReads) {\r
+                singleReadList = new ArrayList<SingleReadAlignment>(sequence.getSingleReadAlignments());  // Store references of single reads in defined order to allow random access.\r
+                        //TODO Omit single reads that do not have an edited sequence yet?\r
+            }\r
+            else {\r
+                singleReadList = Collections.emptyList();\r
+            }\r
+        }\r
+    }\r
+\r
+\r
+    private ObjectListDataAdapter<TokenSetDefinitionEvent> createTokenSetList() {\r
+        StoreObjectListDataAdapter<TokenSetDefinitionEvent> result = new StoreObjectListDataAdapter<TokenSetDefinitionEvent>();\r
+        final String id = ReadWriteConstants.DEFAULT_TOKEN_SET_ID_PREFIX;\r
+        result.setObjectStartEvent(new TokenSetDefinitionEvent(CharacterStateSetType.DNA, id, null));\r
+        long length = getColumnCount(null);  //TODO Change this expression, if column count should return -1 in the future.\r
+        if (length > 0) {  // Empty character set interval events are not allowed.  //TODO Handle -1 separately\r
+            result.getObjectContent(id).add(new CharacterSetIntervalEvent(0, length));\r
+        }\r
+        return result;\r
+    }\r
+\r
+\r
+    /**\r
+     * @return the sequence\r
+     */\r
+    public Sequence getCDMSequence() {\r
+        return sequence;\r
+    }\r
+\r
+\r
+    private int extractSingleReadIndexFromID(String sequenceID) {\r
+        if (sequenceID.startsWith(SINGLE_READ_SEQUENCE_ID_PREFIX)) {\r
+            try {\r
+                return Integer.parseInt(sequenceID.substring(SINGLE_READ_SEQUENCE_ID_PREFIX.length()));\r
+            }\r
+            catch (NumberFormatException e) {}  // fall through\r
+        }\r
+        return -1;\r
+    }\r
+\r
+\r
+    @Override\r
+    public LinkedLabeledIDEvent getStartEvent(ReadWriteParameterMap parameters) {\r
+        return new LinkedLabeledIDEvent(EventContentType.ALIGNMENT, MATRIX_ID, "Contig alignment", null);\r
+                //TODO Use label according to derivate and markers.\r
+    }\r
+\r
+\r
+    @Override\r
+    public boolean containsLongTokens(ReadWriteParameterMap parameters) {\r
+        return false;\r
+    }\r
+\r
+\r
+    @Override\r
+    public long getColumnCount(ReadWriteParameterMap parameters) {\r
+        return -1;  // Indicates that sequences may have different lengths. (Otherwise writing files without sequence elongation would not be possible.)\r
+    }\r
+\r
+\r
+    @Override\r
+    public long getSequenceCount(ReadWriteParameterMap parameters) {\r
+        int addend = 1;\r
+        if (!exportConsensus) {\r
+            addend = 0;\r
+        }\r
+        return singleReadList.size() + addend;\r
+    }\r
+\r
+\r
+    @Override\r
+    public Iterator<String> getSequenceIDIterator(ReadWriteParameterMap parameters) {\r
+        return new SequenceIDIterator(singleReadList.size(), exportConsensus);\r
+    }\r
+\r
+\r
+    @Override\r
+    public long getSequenceLength(ReadWriteParameterMap parameters, String sequenceID) throws IllegalArgumentException {\r
+        int singleReadIndex = extractSingleReadIndexFromID(sequenceID);\r
+        if (singleReadIndex >= 0) {\r
+            String sequence = singleReadList.get(singleReadIndex).getEditedSequence();\r
+            if (sequence != null) {\r
+                return sequence.length();\r
+            }\r
+            else {  // This would happen e.g. if not edited sequence was copied from pherogram yet.\r
+                return 0;\r
+            }\r
+        }\r
+        else if (exportConsensus && CONSENSUS_SEQUENCE_ID.equals(sequenceID)) {\r
+            return getCDMSequence().getSequenceString().length();\r
+        }\r
+        else {\r
+            throw new IllegalArgumentException("No sequence with the ID \"" + sequenceID + "\" could be found.");\r
+        }\r
+    }\r
+\r
+\r
+    @Override\r
+    public LinkedLabeledIDEvent getSequenceStartEvent(ReadWriteParameterMap parameters, String sequenceID) {\r
+        int singleReadIndex = extractSingleReadIndexFromID(sequenceID);\r
+        if (singleReadIndex >= 0) {\r
+            return new LinkedLabeledIDEvent(EventContentType.SEQUENCE, sequenceID, "Single read " + singleReadIndex, null);\r
+                    //TODO Use name displayed in derivate hierarchy or specified name as label instead?\r
+        }\r
+        else if (exportConsensus && CONSENSUS_SEQUENCE_ID.equals(sequenceID)) {\r
+            return new LinkedLabeledIDEvent(EventContentType.SEQUENCE, sequenceID, consensusSequenceLabel, null);\r
+        }\r
+        else {\r
+            throw new IllegalArgumentException("No sequence with the ID \"" + sequenceID + "\" could be found.");\r
+        }\r
+    }\r
+\r
+\r
+    private void writeStringPart(JPhyloIOEventReceiver receiver, String string, long startColumn, long endColumn) throws IOException {\r
+        if (string != null) {\r
+            receiver.add(new SequenceTokensEvent(StringUtils.charSequenceToStringList(\r
+                    string.substring((int)startColumn, (int)endColumn))));\r
+        }\r
+    }\r
+\r
+\r
+    private String createMetadataID(String sequenceID, QName predicate) {\r
+        return sequenceID + "META" + predicate.getLocalPart();\r
+    }\r
+\r
+\r
+    private void writeMetadataEvents(JPhyloIOEventReceiver receiver, String sequenceID, QName predicate, QName dataType, Object objectValue)\r
+            throws IOException {\r
+\r
+        if (objectValue != null) {\r
+            JPhyloIOWritingUtils.writeSimpleLiteralMetadata(receiver, createMetadataID(sequenceID, predicate), null,\r
+                    predicate, dataType, objectValue, null);\r
+        }\r
+    }\r
+\r
+\r
+    @Override\r
+    public void writeSequencePartContentData(ReadWriteParameterMap parameters, JPhyloIOEventReceiver receiver, String sequenceID,\r
+            long startColumn, long endColumn) throws IOException, IllegalArgumentException {\r
+\r
+        int singleReadIndex = extractSingleReadIndexFromID(sequenceID);\r
+        if (singleReadIndex >= 0) {\r
+            SingleReadAlignment singleRead = singleReadList.get(singleReadIndex);\r
+            if (startColumn == 0) {\r
+                writeMetadataEvents(receiver, sequenceID, PREDICATE_IS_SINGLE_READ, W3CXSConstants.DATA_TYPE_BOOLEAN, new Boolean(true));\r
+                writeMetadataEvents(receiver, sequenceID, PREDICATE_IS_REVERSE_COMPLEMENTED, W3CXSConstants.DATA_TYPE_BOOLEAN, new Boolean(singleRead.isReverseComplement()));\r
+                writeMetadataEvents(receiver, sequenceID, PREDICATE_HAS_LEFT_CUT_POSITION, W3CXSConstants.DATA_TYPE_INT, singleRead.getLeftCutPosition());\r
+                writeMetadataEvents(receiver, sequenceID, PREDICATE_HAS_RIGHT_CUT_POSITION, W3CXSConstants.DATA_TYPE_INT, singleRead.getRightCutPosition());\r
+\r
+                URI pherogramURI = AlignmentEditor.getPherogramURI(singleRead.getSingleRead());\r
+                if (pherogramURI != null) {\r
+                    JPhyloIOWritingUtils.writeTerminalResourceMetadata(receiver, createMetadataID(sequenceID, PREDICATE_HAS_PHEROGRAM),\r
+                            null, PREDICATE_HAS_PHEROGRAM, pherogramURI);\r
+                }\r
+\r
+                writeMetadataEvents(receiver, sequenceID, PREDICATE_HAS_PHEROGRAM_ALIGNMENT, DATA_TYPE_PHERORAGM_ALIGNMENT, singleRead.getShifts());\r
+                        //TODO This needs to be written with sequence type XML!\r
+            }\r
+            writeStringPart(receiver, singleRead.getEditedSequence(), startColumn, endColumn);\r
+        }\r
+        else if (exportConsensus && CONSENSUS_SEQUENCE_ID.equals(sequenceID)) {\r
+            if (startColumn == 0) {\r
+                writeMetadataEvents(receiver, sequenceID, PREDICATE_IS_CONSENSUS_SEQUENCE, W3CXSConstants.DATA_TYPE_BOOLEAN, new Boolean(true));\r
+                //TODO Possibly export additional properties of sequence (e.g. isBarcode(), getDdbjId(), ...) as metadata?\r
+            }\r
+            writeStringPart(receiver, getCDMSequence().getSequenceString(), startColumn, endColumn);\r
+        }\r
+        else {\r
+            throw new IllegalArgumentException("No sequence with the ID \"" + sequenceID + "\" could be found.");\r
+        }\r
+    }\r
+\r
+\r
+    /* (non-Javadoc)\r
+     * @see info.bioinfweb.jphyloio.dataadapters.implementations.NoSetsMatrixDataAdapter#getTokenSets()\r
+     */\r
+    @Override\r
+    public ObjectListDataAdapter<TokenSetDefinitionEvent> getTokenSets(ReadWriteParameterMap parameters) {\r
+        return tokenSetList;\r
+    }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIterator.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIterator.java
new file mode 100644 (file)
index 0000000..4f573f4
--- /dev/null
@@ -0,0 +1,67 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2016 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.molecular.io;\r
+\r
+import java.util.Iterator;\r
+import java.util.NoSuchElementException;\r
+\r
+\r
+\r
+/**\r
+ * Iterator implementation used internally be {@link CDMSequenceMatrixAdapter}.\r
+ *\r
+ * @author Ben Stöver\r
+ * @date 29.04.2016\r
+ */\r
+class SequenceIDIterator implements Iterator<String> {\r
+    private boolean containsConsensus;\r
+    private int singleReadPos;\r
+    private int singleReadCount;\r
+\r
+\r
+    /**\r
+     * Creates a new instance of this class.\r
+     *\r
+     * @param singleReadCount the number of single read IDs to be returned by this iterator before the consensus sequence\r
+     */\r
+    public SequenceIDIterator(int singleReadCount, boolean containsConsensus) {\r
+        super();\r
+        this.containsConsensus = containsConsensus;\r
+        this.singleReadCount = singleReadCount;\r
+        this.singleReadPos = 0;\r
+    }\r
+\r
+\r
+    @Override\r
+    public boolean hasNext() {\r
+        return (singleReadPos < singleReadCount) || (containsConsensus && (singleReadPos <= singleReadCount));\r
+    }\r
+\r
+\r
+    @Override\r
+    public String next() {\r
+        if (singleReadPos < singleReadCount) {\r
+            return CDMSequenceMatrixAdapter.SINGLE_READ_SEQUENCE_ID_PREFIX + (singleReadPos++);\r
+        }\r
+        else if (containsConsensus && (singleReadPos == singleReadCount)) {\r
+            singleReadPos++;\r
+            return CDMSequenceMatrixAdapter.CONSENSUS_SEQUENCE_ID;\r
+        }\r
+        else {\r
+            throw new NoSuchElementException("There are no more sequence IDs availble from this iterator.");\r
+        }\r
+    }\r
+\r
+\r
+    @Override\r
+    public void remove() {\r
+        throw new UnsupportedOperationException("This iterator does not support removing elements.");\r
+    }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/SingleReadAlignmentRDFXMLConstants.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/SingleReadAlignmentRDFXMLConstants.java
new file mode 100644 (file)
index 0000000..2eaa3de
--- /dev/null
@@ -0,0 +1,46 @@
+// $Id$
+/**
+* Copyright (C) 2016 EDIT
+* 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.
+*/
+package eu.etaxonomy.taxeditor.molecular.io;
+
+
+import javax.xml.namespace.QName;
+
+
+
+/**
+ * Contains constants for <i>RDF</i> predicates used in the I/O of single read alignments e.g. from and to the <i>NeXML</i> format.
+ *
+ * @author Ben Stöver
+ * @date 27.10.2016
+ */
+public interface SingleReadAlignmentRDFXMLConstants {
+    public static final String NAMESPACE_URI_PREFIX = "http://bioinfweb.info/xmlns/PhyDE/ReadAlignment/";  //TODO Possibly change this namespace, when according decision is made.
+    public static final String PREDICATE_NAMESPACE_URI = NAMESPACE_URI_PREFIX + "Predicates/";
+    public static final String PREDICATE_NAMESPACE_PREFIX = "ra";
+    public static final String DATA_TYPE_NAMESPACE_URI = NAMESPACE_URI_PREFIX + "DataTypes/";
+    public static final String DATA_TYPE_NAMESPACE_PREFIX = "radt";
+    public static final String PHEROGRAM_ALIGNMENT_NAMESPACE_URI = NAMESPACE_URI_PREFIX + "PherogramAlignment/";
+    public static final String PHEROGRAM_ALIGNMENT_NAMESPACE_PREFIX = "pha";
+
+    public static final QName PREDICATE_IS_SINGLE_READ = new QName(PREDICATE_NAMESPACE_URI, "isSingleRead", PREDICATE_NAMESPACE_PREFIX);
+    public static final QName PREDICATE_IS_CONSENSUS_SEQUENCE = new QName(PREDICATE_NAMESPACE_URI, "isConsensus", PREDICATE_NAMESPACE_PREFIX);
+    public static final QName PREDICATE_IS_REVERSE_COMPLEMENTED = new QName(PREDICATE_NAMESPACE_URI, "isRCed", PREDICATE_NAMESPACE_PREFIX);
+    public static final QName PREDICATE_HAS_PHEROGRAM = new QName(PREDICATE_NAMESPACE_URI, "hasPherogram", PREDICATE_NAMESPACE_PREFIX);
+    public static final QName PREDICATE_HAS_PHEROGRAM_ALIGNMENT = new QName(PREDICATE_NAMESPACE_URI, "hasPherogramAlignment", PREDICATE_NAMESPACE_PREFIX);
+    public static final QName PREDICATE_HAS_LEFT_CUT_POSITION = new QName(PREDICATE_NAMESPACE_URI, "hasLeftCutPosition", PREDICATE_NAMESPACE_PREFIX);
+    public static final QName PREDICATE_HAS_RIGHT_CUT_POSITION = new QName(PREDICATE_NAMESPACE_URI, "hasRightCutPosition", PREDICATE_NAMESPACE_PREFIX);
+
+    public static final QName DATA_TYPE_PHERORAGM_ALIGNMENT = new QName(DATA_TYPE_NAMESPACE_URI, "pherogramAlignment", DATA_TYPE_NAMESPACE_PREFIX);
+
+    public static final QName TAG_SHIFTS = new QName(PHEROGRAM_ALIGNMENT_NAMESPACE_URI, "shifts", PHEROGRAM_ALIGNMENT_NAMESPACE_PREFIX);
+    public static final QName TAG_SHIFT = new QName(PHEROGRAM_ALIGNMENT_NAMESPACE_URI, "shift", PHEROGRAM_ALIGNMENT_NAMESPACE_PREFIX);
+    public static final QName ATTR_POSITION = new QName(PHEROGRAM_ALIGNMENT_NAMESPACE_URI, "pos", PHEROGRAM_ALIGNMENT_NAMESPACE_PREFIX);
+    public static final QName ATTR_SHIFT = new QName(PHEROGRAM_ALIGNMENT_NAMESPACE_URI, "shift", PHEROGRAM_ALIGNMENT_NAMESPACE_PREFIX);
+}
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/AbstractExportSingleReadAlignmentWizardPage.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/AbstractExportSingleReadAlignmentWizardPage.java
new file mode 100644 (file)
index 0000000..c1f5622
--- /dev/null
@@ -0,0 +1,40 @@
+/**
+* Copyright (C) 2016 EDIT
+* 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.
+*/
+package eu.etaxonomy.taxeditor.molecular.io.wizard;
+
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+
+
+
+/**
+ * @author bstoe_01
+ * @date 18.11.2016
+ *
+ */
+public abstract class AbstractExportSingleReadAlignmentWizardPage extends WizardPage {
+    public AbstractExportSingleReadAlignmentWizardPage(String pageName, String title, ImageDescriptor titleImage) {
+        super(pageName, title, titleImage);
+    }
+
+
+    public AbstractExportSingleReadAlignmentWizardPage(String pageName) {
+        super(pageName);
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ExportSingleReadAlignmentWizard getWizard() {
+        return (ExportSingleReadAlignmentWizard)super.getWizard();  // Would throw an exception, if this page is used within another wizard.
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentFileFormatPage.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentFileFormatPage.java
new file mode 100644 (file)
index 0000000..ce55ed2
--- /dev/null
@@ -0,0 +1,195 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2016 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.molecular.io.wizard;\r
+\r
+\r
+import info.bioinfweb.commons.io.ContentExtensionFileFilter;\r
+import info.bioinfweb.commons.io.ContentExtensionFileFilter.TestStrategy;\r
+import info.bioinfweb.commons.io.ExtensionFileFilter;\r
+import info.bioinfweb.jphyloio.formatinfo.JPhyloIOFormatInfo;\r
+\r
+import java.io.File;\r
+\r
+import org.eclipse.core.databinding.DataBindingContext;\r
+import org.eclipse.core.databinding.validation.MultiValidator;\r
+import org.eclipse.core.databinding.validation.ValidationStatus;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.jface.databinding.swt.ISWTObservableValue;\r
+import org.eclipse.jface.databinding.swt.SWTObservables;\r
+import org.eclipse.jface.databinding.wizard.WizardPageSupport;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.FormAttachment;\r
+import org.eclipse.swt.layout.FormData;\r
+import org.eclipse.swt.layout.FormLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Combo;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.FileDialog;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Text;\r
+\r
+import eu.etaxonomy.taxeditor.molecular.Messages;\r
+\r
+\r
+\r
+/**\r
+ * Wizard page that allows to specify which parts of a single read alignment shall be exported to an alignment file.\r
+ *\r
+ * @author Ben St&ouml;ver\r
+ * @date 18.04.2016\r
+ */\r
+public class ExportSingleReadAlignmentFileFormatPage extends AbstractExportSingleReadAlignmentWizardPage {\r
+    private Text fileTextField;\r
+    private Combo formatComboBox;\r
+\r
+\r
+    /**\r
+     * Create the wizard.\r
+     */\r
+    public ExportSingleReadAlignmentFileFormatPage() {\r
+        super("ExportSingleReadAlignmentFileFormat");  //TODO Which pageName should be used here? Any conventions? //$NON-NLS-1$\r
+        setTitle(Messages.wizardExportAlignmentTitle);\r
+        setDescription(Messages.wizardExportAlignmentDescription);\r
+    }\r
+\r
+\r
+    /**\r
+     * Create contents of the wizard.\r
+     *\r
+     * @param parent the parent component\r
+     */\r
+    @Override\r
+    public void createControl(Composite parent) {\r
+        DataBindingContext dbc = new DataBindingContext();\r
+        WizardPageSupport.create(this, dbc);\r
+\r
+        Composite container = new Composite(parent, SWT.NULL);\r
+\r
+        setControl(container);\r
+        container.setLayout(new FormLayout());\r
+\r
+        Label lblFormat = new Label(container, SWT.NONE);\r
+        FormData fd_lblFormat = new FormData();\r
+        fd_lblFormat.right = new FormAttachment(100, -10);\r
+        fd_lblFormat.top = new FormAttachment(0, 10);\r
+        fd_lblFormat.left = new FormAttachment(0, 10);\r
+        lblFormat.setLayoutData(fd_lblFormat);\r
+        lblFormat.setText(Messages.wizardExportAlignmentExportFormatLabel);\r
+\r
+        Label lblSelectTheExport = new Label(container, SWT.NONE);\r
+        FormData fd_lblSelectTheExport = new FormData();\r
+        fd_lblSelectTheExport.right = new FormAttachment(100, -10);\r
+        fd_lblSelectTheExport.left = new FormAttachment(0, 10);\r
+        lblSelectTheExport.setLayoutData(fd_lblSelectTheExport);\r
+        lblSelectTheExport.setText(Messages.wizardExportAlignmentDestinationLabel);\r
+\r
+        Label lblAlignmentFile = new Label(container, SWT.NONE);\r
+        FormData fd_lblAlignmentFile = new FormData();\r
+        fd_lblAlignmentFile.top = new FormAttachment(lblSelectTheExport, 9);\r
+        fd_lblAlignmentFile.right = new FormAttachment(0, 128);\r
+        fd_lblAlignmentFile.left = new FormAttachment(0, 10);\r
+        lblAlignmentFile.setLayoutData(fd_lblAlignmentFile);\r
+        lblAlignmentFile.setText(Messages.wizardExportAlignmentFileLabel);\r
+\r
+        fileTextField = new Text(container, SWT.BORDER);\r
+        FormData fd_text = new FormData();\r
+        fd_text.left = new FormAttachment(lblAlignmentFile, 6);\r
+        fd_text.right = new FormAttachment(100, -10);\r
+        fd_text.top = new FormAttachment(lblSelectTheExport, 6);\r
+        fileTextField.setLayoutData(fd_text);\r
+        final ISWTObservableValue fileNameObservable = SWTObservables.observeText(fileTextField, SWT.Modify);\r
+        dbc.bindValue(fileNameObservable, getWizard().getModel().getFileNameObservable());\r
+\r
+        Button btnBrowse = new Button(container, SWT.NONE);\r
+        btnBrowse.addSelectionListener(new SelectionAdapter() {\r
+            @Override\r
+            public void widgetSelected(SelectionEvent e) {\r
+                FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);\r
+                dialog.setText(Messages.wizardExportAlignmentFileDialogTitle);\r
+                ContentExtensionFileFilter filter = getSelectedFormat().createFileFilter(TestStrategy.EXTENSION);\r
+                dialog.setFilterExtensions(new String[]{filter.getExtensionsAsString()});\r
+                dialog.setFilterNames(new String[]{filter.getDescription()});\r
+                String selectedFile = dialog.open();\r
+                if (selectedFile != null) {  // Otherwise selecting was canceled.\r
+                    fileTextField.setText(selectedFile);\r
+                }\r
+            }\r
+        });\r
+        FormData fd_btnBrowse = new FormData();\r
+        fd_btnBrowse.bottom = new FormAttachment(fileTextField, 43, SWT.BOTTOM);\r
+        fd_btnBrowse.top = new FormAttachment(fileTextField, 13);\r
+        fd_btnBrowse.left = new FormAttachment(100, -128);\r
+        fd_btnBrowse.right = new FormAttachment(100, -10);\r
+        btnBrowse.setLayoutData(fd_btnBrowse);\r
+        btnBrowse.setText(Messages.wizardExportAlignmentBrowseButton);\r
+\r
+        formatComboBox = new Combo(container, SWT.READ_ONLY);\r
+        fd_lblSelectTheExport.top = new FormAttachment(formatComboBox, 23);\r
+        for (JPhyloIOFormatInfo formatInfo : ExportSingleReadAlignmentWizardModel.FORMATS) {\r
+            formatComboBox.add(formatInfo.getFormatName());\r
+        }\r
+        FormData fd_formatComboBox = new FormData();\r
+        fd_formatComboBox.top = new FormAttachment(lblFormat, 6);\r
+        fd_formatComboBox.left = new FormAttachment(0, 10);\r
+        fd_formatComboBox.right = new FormAttachment(100, -10);\r
+        formatComboBox.setLayoutData(fd_formatComboBox);\r
+        final ISWTObservableValue formatObservable = SWTObservables.observeSingleSelectionIndex(formatComboBox);  // ViewerProperties.singleSelection().observe(formatComboBox); falls ein ComboViewer verwendet wird. (Dann kann direkt FormatInfo verwendet werden.)\r
+        dbc.bindValue(formatObservable, getWizard().getModel().getFormatInfoObservable());\r
+        formatComboBox.select(0);  // Must happen after the component has been bound to the model.\r
+\r
+        Button appendExtensionButton = new Button(container, SWT.NONE);\r
+        appendExtensionButton.addSelectionListener(new SelectionAdapter() {\r
+            @Override\r
+            public void widgetSelected(SelectionEvent e) {\r
+                fileTextField.setText(fileTextField.getText() + ExtensionFileFilter.EXTENSION_SEPARATOR +\r
+                        getSelectedFormat().createFileFilter(TestStrategy.EXTENSION).getDefaultExtension());\r
+            }\r
+        });\r
+        FormData fd_btnNewButton = new FormData();\r
+        fd_btnNewButton.left = new FormAttachment(btnBrowse, -264, SWT.LEFT);\r
+        fd_btnNewButton.bottom = new FormAttachment(fileTextField, 43, SWT.BOTTOM);\r
+        fd_btnNewButton.right = new FormAttachment(btnBrowse, -6);\r
+        fd_btnNewButton.top = new FormAttachment(fileTextField, 13);\r
+        appendExtensionButton.setLayoutData(fd_btnNewButton);\r
+        appendExtensionButton.setText(Messages.wizardExportAlignmentAppendExtensionButton);\r
+\r
+        dbc.addValidationStatusProvider(new MultiValidator() {\r
+            @Override\r
+            protected IStatus validate() {\r
+                String fileName = (String)fileNameObservable.getValue();\r
+                Integer index = (Integer)formatObservable.getValue();  // If formatObservable.getValue() is not called from within this method, it is not called on modifications of the according combo anymore. (Would be interesting to know why.)\r
+                if ((fileName == null) || fileName.isEmpty()) {\r
+                    return ValidationStatus.error(Messages.wizardExportAlignmentErrorMissingFileName);\r
+                }\r
+                else if (!ExportSingleReadAlignmentWizardModel.FORMATS.get(index).createFileFilter(TestStrategy.EXTENSION).accept(\r
+                        new File(fileName))) {\r
+\r
+                    return ValidationStatus.warning(Messages.wizardExportAlignmentwarningMissingExtension);\r
+                }\r
+                else if (fileName.charAt(0) == ExtensionFileFilter.EXTENSION_SEPARATOR) {\r
+                    return ValidationStatus.warning(Messages.wizardExportAlignmentWarningFileNameStartsDot);\r
+                }\r
+                else if (new File(fileName).exists()) {\r
+                    return ValidationStatus.warning(Messages.wizardExportAlignmentWarningFileExists);\r
+                }\r
+                else {\r
+                    return ValidationStatus.ok();\r
+                }\r
+            }\r
+        });\r
+    }\r
+\r
+\r
+    private JPhyloIOFormatInfo getSelectedFormat() {\r
+        return ExportSingleReadAlignmentWizardModel.FORMATS.get(formatComboBox.getSelectionIndex());\r
+    }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentOptionsPage.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentOptionsPage.java
new file mode 100644 (file)
index 0000000..704ac9c
--- /dev/null
@@ -0,0 +1,183 @@
+// $Id$
+/**
+* Copyright (C) 2016 EDIT
+* 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.
+*/
+package eu.etaxonomy.taxeditor.molecular.io.wizard;
+
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.validation.MultiValidator;
+import org.eclipse.core.databinding.validation.ValidationStatus;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.databinding.swt.ISWTObservableValue;
+import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.databinding.wizard.WizardPageSupport;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.taxeditor.molecular.Messages;
+
+
+
+/**
+ * Wizard page that allows to specify which parts of a single read alignment shall be exported to an alignment file.
+ *
+ * @author Ben St&ouml;ver
+ * @date 18.04.2016
+ */
+public class ExportSingleReadAlignmentOptionsPage extends AbstractExportSingleReadAlignmentWizardPage {
+    private Text consensusSequenceLabelTextField;
+    private Button exportConsensusSequenceCB;
+    private Button exportSingleReadsCB;
+    private Button gapRadioButton;
+    private Button missingDataRadioButton;
+    private Button elongateSequecesCheckBox;
+
+
+    /**
+     * Create the wizard.
+     */
+    public ExportSingleReadAlignmentOptionsPage() {
+        super("ExportSingleReadAlignmentOptions");  //TODO Which pageName should be used here? Any conventions? //$NON-NLS-1$
+        setTitle(Messages.wizardExportAlignmentOptionsTitle);
+        setDescription(Messages.wizardExportAlignmentOptionsDescription);
+    }
+
+
+    /**
+     * Create contents of the wizard.
+     *
+     * @param parent the parent component
+     */
+    @Override
+    public void createControl(Composite parent) {
+        DataBindingContext dbc = new DataBindingContext();
+        WizardPageSupport.create(this, dbc);
+
+        Composite container = new Composite(parent, SWT.NULL);
+
+        setControl(container);
+        container.setLayout(new FormLayout());
+
+        exportSingleReadsCB = new Button(container, SWT.CHECK);
+        FormData fd_exportSingleReadsCB = new FormData();
+        fd_exportSingleReadsCB.top = new FormAttachment(0, 40);
+        fd_exportSingleReadsCB.left = new FormAttachment(0, 10);
+        exportSingleReadsCB.setLayoutData(fd_exportSingleReadsCB);
+        exportSingleReadsCB.setText(Messages.wizardExportAlignmentExportSingleReads);
+        final ISWTObservableValue exportSingleReadsObservable = SWTObservables.observeSelection(exportSingleReadsCB);
+        dbc.bindValue(exportSingleReadsObservable, getWizard().getModel().getExportSingleReadsObservable());
+        exportSingleReadsCB.setSelection(false);
+        exportSingleReadsCB.setSelection(true);  // Must happen after the component has been bound to the model.
+
+
+        exportConsensusSequenceCB = new Button(container, SWT.CHECK);
+        exportConsensusSequenceCB.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                consensusSequenceLabelTextField.setEnabled(exportConsensusSequenceCB.getSelection());
+            }
+        });
+        FormData fd_exportConsensusSequenceCB = new FormData();
+        fd_exportConsensusSequenceCB.top = new FormAttachment(exportSingleReadsCB, 6);
+        fd_exportConsensusSequenceCB.left = new FormAttachment(0, 10);
+        exportConsensusSequenceCB.setLayoutData(fd_exportConsensusSequenceCB);
+        exportConsensusSequenceCB.setText(Messages.wizardExportAlignmentExportConsensusSeqLabel);
+        final ISWTObservableValue exportConsensusSequenceObservable = SWTObservables.observeSelection(exportConsensusSequenceCB);
+        dbc.bindValue(exportConsensusSequenceObservable, getWizard().getModel().getExportConsensusSequenceObservable());
+        exportConsensusSequenceCB.setSelection(false);
+        exportConsensusSequenceCB.setSelection(true);  // Must happen after the component has been bound to the model.
+
+        consensusSequenceLabelTextField = new Text(container, SWT.BORDER);
+        FormData fd_consensusSequenceNameTextField = new FormData();
+        fd_consensusSequenceNameTextField.bottom = new FormAttachment(exportConsensusSequenceCB, 32, SWT.BOTTOM);
+        fd_consensusSequenceNameTextField.top = new FormAttachment(exportConsensusSequenceCB, 6);
+        fd_consensusSequenceNameTextField.right = new FormAttachment(100, -10);
+        fd_consensusSequenceNameTextField.left = new FormAttachment(0, 32);
+        consensusSequenceLabelTextField.setLayoutData(fd_consensusSequenceNameTextField);
+        final ISWTObservableValue consensusSequenceLabelObservable = SWTObservables.observeText(consensusSequenceLabelTextField, SWT.Modify);
+        dbc.bindValue(consensusSequenceLabelObservable, getWizard().getModel().getConsensusSequenceLabelObservable());
+        consensusSequenceLabelTextField.setText("Consensus"); //$NON-NLS-1$
+
+        Label lblSpecifyTheSequences = new Label(container, SWT.NONE);
+        FormData fd_lblSpecifyTheSequences = new FormData();
+        fd_lblSpecifyTheSequences.top = new FormAttachment(0, 10);
+        fd_lblSpecifyTheSequences.left = new FormAttachment(0, 10);
+        lblSpecifyTheSequences.setLayoutData(fd_lblSpecifyTheSequences);
+        lblSpecifyTheSequences.setText(Messages.wizardExportAlignmentExportedSeqHeading);
+
+        Label lblSpecifyAdditionalExport = new Label(container, SWT.NONE);
+        FormData fd_lblSpecifyAdditionalExport = new FormData();
+        fd_lblSpecifyAdditionalExport.top = new FormAttachment(consensusSequenceLabelTextField, 24);
+        fd_lblSpecifyAdditionalExport.left = new FormAttachment(exportSingleReadsCB, 0, SWT.LEFT);
+        lblSpecifyAdditionalExport.setLayoutData(fd_lblSpecifyAdditionalExport);
+        lblSpecifyAdditionalExport.setText(Messages.wizardExportAlignmentAdditionalOptionsHeading);
+
+        elongateSequecesCheckBox = new Button(container, SWT.CHECK);
+        elongateSequecesCheckBox.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                missingDataRadioButton.setEnabled(elongateSequecesCheckBox.getSelection());
+                gapRadioButton.setEnabled(elongateSequecesCheckBox.getSelection());
+            }
+        });
+        FormData fd_btnElongateSequecesTo = new FormData();
+        fd_btnElongateSequecesTo.left = new FormAttachment(exportSingleReadsCB, 0, SWT.LEFT);
+        fd_btnElongateSequecesTo.top = new FormAttachment(lblSpecifyAdditionalExport, 12);
+        elongateSequecesCheckBox.setLayoutData(fd_btnElongateSequecesTo);
+        elongateSequecesCheckBox.setText(Messages.wizardExportAlignmentElongateSeqHeading);
+        dbc.bindValue(SWTObservables.observeSelection(elongateSequecesCheckBox), getWizard().getModel().getElongateSequencesObservable());
+
+        missingDataRadioButton = new Button(container, SWT.RADIO);
+        FormData fd_missingDataRadioButton = new FormData();
+        fd_missingDataRadioButton.top = new FormAttachment(elongateSequecesCheckBox, 6);
+        missingDataRadioButton.setLayoutData(fd_missingDataRadioButton);
+        missingDataRadioButton.setEnabled(false);
+        missingDataRadioButton.setText(Messages.wizardExportAlignmentElongateSeqMissingData);
+
+        gapRadioButton = new Button(container, SWT.RADIO);
+        fd_missingDataRadioButton.left = new FormAttachment(gapRadioButton, 80);
+        FormData fd_gapRadioButton = new FormData();
+        fd_gapRadioButton.top = new FormAttachment(elongateSequecesCheckBox, 6);
+        fd_gapRadioButton.left = new FormAttachment(consensusSequenceLabelTextField, 0, SWT.LEFT);
+        gapRadioButton.setLayoutData(fd_gapRadioButton);
+        gapRadioButton.setEnabled(false);
+        gapRadioButton.setSelection(true);
+        gapRadioButton.setText(Messages.wizardExportAlignmentElongateSeqGap);
+        dbc.bindValue(SWTObservables.observeSelection(gapRadioButton), getWizard().getModel().getUseGapTokenObservable());
+
+        setPageComplete(true);  // Allow to finish the wizard in the previous page.
+
+        dbc.addValidationStatusProvider(new MultiValidator() {
+            @Override
+            protected IStatus validate() {
+                String label = (String)consensusSequenceLabelObservable.getValue();
+                boolean exportConsensus = (Boolean)exportConsensusSequenceObservable.getValue();
+                boolean exportReads = (Boolean)exportSingleReadsObservable.getValue();
+
+                if (!exportConsensus && !exportReads) {
+                    return ValidationStatus.error(Messages.wizardExportAlignmentErrorNothingToExport);
+                }
+                else if (exportConsensus && ((label == null) || label.isEmpty())) {
+                    return ValidationStatus.error(Messages.wizardExportAlignmentErrorMissingSeqLabel);
+                }
+                else {
+                    return ValidationStatus.ok();
+                }
+            }
+        });
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizard.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizard.java
new file mode 100644 (file)
index 0000000..4c8667a
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2016 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.molecular.io.wizard;\r
+\r
+\r
+import org.eclipse.jface.wizard.Wizard;\r
+\r
+\r
+\r
+/**\r
+ * A wizard to export a single read alignment from <i>CDM</i> using <i>JPhyloIO</i>.\r
+ *\r
+ * @author Ben Stöver\r
+ * @date 23.06.2016\r
+ */\r
+public class ExportSingleReadAlignmentWizard extends Wizard {\r
+    private ExportSingleReadAlignmentWizardModel model = new ExportSingleReadAlignmentWizardModel();\r
+\r
+    private ExportSingleReadAlignmentFileFormatPage fileFormatPage;\r
+    private ExportSingleReadAlignmentOptionsPage optionsPage;\r
+\r
+\r
+    public ExportSingleReadAlignmentWizard() {\r
+        setWindowTitle("Export single read alignment");  //TODO Use multi language message\r
+    }\r
+\r
+\r
+    public ExportSingleReadAlignmentWizardModel getModel() {\r
+        return model;\r
+    }\r
+\r
+\r
+    @Override\r
+    public void addPages() {\r
+        fileFormatPage = new ExportSingleReadAlignmentFileFormatPage();\r
+        optionsPage = new ExportSingleReadAlignmentOptionsPage();\r
+\r
+        addPage(fileFormatPage);\r
+        addPage(optionsPage);\r
+    }\r
+\r
+\r
+    @Override\r
+    public boolean performFinish() {\r
+        return true;\r
+        //TODO Add default extension to file, if necessary?\r
+    }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardModel.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardModel.java
new file mode 100644 (file)
index 0000000..21f5b48
--- /dev/null
@@ -0,0 +1,136 @@
+/**
+* Copyright (C) 2016 EDIT
+* 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.
+*/
+package eu.etaxonomy.taxeditor.molecular.io.wizard;
+
+
+import info.bioinfweb.commons.bio.SequenceUtils;
+import info.bioinfweb.jphyloio.events.type.EventContentType;
+import info.bioinfweb.jphyloio.factory.JPhyloIOReaderWriterFactory;
+import info.bioinfweb.jphyloio.formatinfo.JPhyloIOFormatInfo;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+
+
+
+/**
+ * The data model for a wizard to export single read alignments to different file formats using <i>JPhyloIO</i>.
+ *
+ * @author Ben Stöver
+ * @date 16.11.2016
+ */
+public class ExportSingleReadAlignmentWizardModel {
+    protected static final JPhyloIOReaderWriterFactory READER_WRITER_FACTORY = new JPhyloIOReaderWriterFactory();
+    protected static final List<JPhyloIOFormatInfo> FORMATS = createFormatInfoList();
+
+
+    private IObservableValue formatInfo = new WritableValue(0, Integer.class);
+    private IObservableValue fileName = new WritableValue(null, String.class);
+    private IObservableValue exportSingleReads = new WritableValue(true, Boolean.class);
+    private IObservableValue exportConsensusSequence = new WritableValue(true, Boolean.class);
+    private IObservableValue consensusSequenceLabel = new WritableValue("Consensus", String.class);
+    private IObservableValue elongateSequences = new WritableValue(false, Boolean.class);
+    private IObservableValue useGapToken = new WritableValue(true, Boolean.class);
+
+
+    private static List<JPhyloIOFormatInfo> createFormatInfoList() {
+        List<JPhyloIOFormatInfo> result = new ArrayList<JPhyloIOFormatInfo>();
+        for (String formatID : READER_WRITER_FACTORY.getFormatIDsSet()) {
+            JPhyloIOFormatInfo info = READER_WRITER_FACTORY.getFormatInfo(formatID);
+            if (info.isElementModeled(EventContentType.ALIGNMENT, false)) {  // Check if the current format allows to write alignments.
+                result.add(info);
+            }
+        }
+        return Collections.unmodifiableList(result);
+    }
+
+
+    protected IObservableValue getFormatInfoObservable() {
+        return formatInfo;
+    }
+
+
+    /**
+     * Returns the <i>JPhyloIO</i> format info object to be used for exporting.
+     *
+     * @return the format info
+     */
+    public JPhyloIOFormatInfo getFormatInfo() {
+        return FORMATS.get((Integer)formatInfo.getValue());
+    }
+
+
+    public String getFileName() {
+        return (String)fileName.getValue();
+    }
+
+
+    protected IObservableValue getFileNameObservable() {
+        return fileName;
+    }
+
+
+    public boolean isExportSingleReads() {
+        return (Boolean)exportSingleReads.getValue();
+    }
+
+
+    protected IObservableValue getExportSingleReadsObservable() {
+        return exportSingleReads;
+    }
+
+
+    public boolean isExportConsensusSequence() {
+        return (Boolean)exportConsensusSequence.getValue();
+    }
+
+
+    protected IObservableValue getExportConsensusSequenceObservable() {
+        return exportConsensusSequence;
+    }
+
+
+    public String getConsensusSequenceLabel() {
+        return (String)consensusSequenceLabel.getValue();
+    }
+
+
+    protected IObservableValue getConsensusSequenceLabelObservable() {
+        return consensusSequenceLabel;
+    }
+
+
+    public String getElongationToken() {
+        if ((Boolean)elongateSequences.getValue()) {
+            if ((Boolean)useGapToken.getValue()) {
+                return Character.toString(SequenceUtils.GAP_CHAR);
+            }
+            else {
+                return Character.toString(SequenceUtils.MISSING_DATA_CHAR);
+            }
+        }
+        else {
+            return null;
+        }
+    }
+
+
+    protected IObservableValue getElongateSequencesObservable() {
+        return elongateSequences;
+    }
+
+
+    protected IObservableValue getUseGapTokenObservable() {
+        return useGapToken;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.molecular/src/test/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIteratorTest.java b/eu.etaxonomy.taxeditor.molecular/src/test/java/eu/etaxonomy/taxeditor/molecular/io/SequenceIDIteratorTest.java
new file mode 100644 (file)
index 0000000..93d8b3f
--- /dev/null
@@ -0,0 +1,50 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2016 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.molecular.io;\r
+\r
+\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertFalse;\r
+import static org.junit.Assert.assertTrue;\r
+\r
+import org.junit.Test;\r
+\r
+\r
+\r
+/**\r
+ * @author Ben Stöver\r
+ * @date 29.04.2016\r
+ */\r
+public class SequenceIDIteratorTest {\r
+    @Test\r
+    public void test_next() {\r
+        SequenceIDIterator iterator = new SequenceIDIterator(3, true);\r
+\r
+        for (int i = 0; i < 3; i++) {\r
+            assertTrue(iterator.hasNext());\r
+            assertEquals("seqSingleRead" + i, iterator.next());\r
+        }\r
+        assertTrue(iterator.hasNext());\r
+        assertEquals("seqConsensus", iterator.next());\r
+        assertFalse(iterator.hasNext());\r
+    }\r
+\r
+\r
+    @Test\r
+    public void test_next_woConsensus() {\r
+        SequenceIDIterator iterator = new SequenceIDIterator(3, false);\r
+\r
+        for (int i = 0; i < 3; i++) {\r
+            assertTrue(iterator.hasNext());\r
+            assertEquals("seqSingleRead" + i, iterator.next());\r
+        }\r
+        assertFalse(iterator.hasNext());\r
+    }\r
+}\r
index e193176ecdb9e444097ede362d44bbc4341aa80f..fd6c1f29cdeb60e923c58b85946a0e3faad698f9 100644 (file)
@@ -1,39 +1,39 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="4.5.0.qualifier">
-  <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" startupForegroundColor="000000" startupMessageRect="7,432,360,20" startupProgressRect="5,447,366,15"/>
-  <launcher name="TaxonomicEditor">
-    <solaris/>
-    <win useIco="false">
-      <bmp/>
-    </win>
-  </launcher>
-  <vm></vm>
-  <plugins></plugins>
-  <features>
-    <feature id="eu.etaxonomy.taxeditor.feature"/>
-  </features>
-  <configurations>
-    <plugin autoStart="true" id="eu.etaxonomy.taxeditor.application" startLevel="5"/>
-    <plugin autoStart="true" id="org.eclipse.core.runtime" startLevel="4"/>
-    <plugin autoStart="true" id="org.eclipse.equinox.common" startLevel="2"/>
-    <plugin autoStart="true" id="org.eclipse.equinox.ds" startLevel="2"/>
-    <plugin autoStart="true" id="org.eclipse.equinox.p2.transport.ecf" startLevel="4"/>
-    <plugin autoStart="true" id="org.eclipse.equinox.simpleconfigurator" startLevel="1"/>
-  </configurations>
-</product>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="4.5.0.qualifier">\r
+  <aboutInfo>\r
+    <image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>\r
+    <text>\r
+         %productBlurb\r
+      </text>\r
+  </aboutInfo>\r
+  <configIni use="default"></configIni>\r
+  <launcherArgs>\r
+    <programArgs>-data @user.home/.cdmLibrary -Dserver_port=58080\r
+      </programArgs>\r
+    <vmArgs>-Xmx512M -XX:MaxPermSize=256M -Dorg.eclipse.update.reconcile=false -Declipse.p2.unsignedPolicy=allow\r
+      </vmArgs>\r
+    <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts\r
+      </vmArgsMac>\r
+  </launcherArgs>\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
+  <splash location="eu.etaxonomy.taxeditor.application" startupForegroundColor="000000" startupMessageRect="7,432,360,20" startupProgressRect="5,447,366,15"/>\r
+  <launcher name="TaxonomicEditor">\r
+    <solaris/>\r
+    <win useIco="false">\r
+      <bmp/>\r
+    </win>\r
+  </launcher>\r
+  <vm></vm>\r
+  <plugins></plugins>\r
+  <features>\r
+    <feature id="eu.etaxonomy.taxeditor.feature"/>\r
+  </features>\r
+  <configurations>\r
+    <plugin autoStart="true" id="eu.etaxonomy.taxeditor.application" startLevel="5"/>\r
+    <plugin autoStart="true" id="org.eclipse.core.runtime" startLevel="4"/>\r
+    <plugin autoStart="true" id="org.eclipse.equinox.common" startLevel="2"/>\r
+    <plugin autoStart="true" id="org.eclipse.equinox.ds" startLevel="2"/>\r
+    <plugin autoStart="true" id="org.eclipse.equinox.p2.transport.ecf" startLevel="4"/>\r
+    <plugin autoStart="true" id="org.eclipse.equinox.simpleconfigurator" startLevel="1"/>\r
+  </configurations>\r
+</product>\r
index ac61176b388b77193e8559732983acaf9be366a7..870c330f0ba596072af4ed4437fd08ed081b027b 100644 (file)
@@ -1,31 +1,31 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="Eclipse Indigo Target" sequenceNumber="7">
-<locations>
-<location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.swtbot.eclipse.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>
-<unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>
-<unit id="org.eclipse.swtbot.ide.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>
-<unit id="org.eclipse.swtbot.eclipse.test.junit4.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>
-<repository location="http://download.eclipse.org/technology/swtbot/helios/dev-build/update-site"/>
-</location>
-<location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.jdt.feature.group" version="3.7.2.v20120120-1414-7z8gFcuFMP7BW5XTz0jLTnz0l9B1"/>
-<unit id="org.eclipse.pde.source.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>
-<unit id="org.eclipse.platform.feature.group" version="3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q"/>
-<unit id="org.eclipse.equinox.executable.feature.group" version="3.5.1.v20111216-1653-7P7NFUIFIbaUcU77s0KQWHw5HZTZ"/>
-<unit id="org.eclipse.platform.source.feature.group" version="3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q"/>
-<unit id="org.eclipse.platform.sdk" version="3.7.2.M20120208-0800"/>
-<unit id="org.eclipse.rcp.feature.group" version="3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/>
-<unit id="org.eclipse.rcp.source.feature.group" version="3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/>
-<unit id="org.eclipse.rcp.sdk.id" version="3.7.2.M20120208-0800"/>
-<unit id="org.eclipse.equinox.sdk.feature.group" version="3.7.1.R37x_v20110907-7M7W8i8eNV4WsRkue-4Vq4J6pCyW"/>
-<unit id="org.eclipse.zest.sdk.feature.group" version="1.3.0.v20110425-2050-67C18COMPIAKSVKGQaRTQTiSN8WP"/>
-<unit id="org.eclipse.pde.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<?pde version="3.8"?><target name="Eclipse Indigo Target" sequenceNumber="8">\r
+<locations>\r
+<location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">\r
+<unit id="org.eclipse.swtbot.eclipse.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>\r
+<unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>\r
+<unit id="org.eclipse.swtbot.ide.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>\r
+<unit id="org.eclipse.swtbot.eclipse.test.junit4.feature.group" version="2.0.5.20111003_1754-3676ac8-dev-e36"/>\r
+<repository location="http://download.eclipse.org/technology/swtbot/helios/dev-build/update-site"/>\r
+</location>\r
+<location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">\r
+<unit id="org.eclipse.jdt.feature.group" version="3.7.2.v20120120-1414-7z8gFcuFMP7BW5XTz0jLTnz0l9B1"/>\r
+<unit id="org.eclipse.pde.source.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>\r
+<unit id="org.eclipse.platform.feature.group" version="3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q"/>\r
+<unit id="org.eclipse.equinox.executable.feature.group" version="3.5.1.v20111216-1653-7P7NFUIFIbaUcU77s0KQWHw5HZTZ"/>\r
+<unit id="org.eclipse.platform.source.feature.group" version="3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q"/>\r
+<unit id="org.eclipse.platform.sdk" version="3.7.2.M20120208-0800"/>\r
+<unit id="org.eclipse.rcp.feature.group" version="3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/>\r
+<unit id="org.eclipse.rcp.source.feature.group" version="3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/>\r
+<unit id="org.eclipse.rcp.sdk.id" version="3.7.2.M20120208-0800"/>\r
+<unit id="org.eclipse.equinox.sdk.feature.group" version="3.7.1.R37x_v20110907-7M7W8i8eNV4WsRkue-4Vq4J6pCyW"/>\r
+<unit id="org.eclipse.zest.sdk.feature.group" version="1.3.0.v20110425-2050-67C18COMPIAKSVKGQaRTQTiSN8WP"/>\r
+<unit id="org.eclipse.pde.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>\r
 <repository location="http://download.eclipse.org/releases/indigo/"/>
-</location>
-<location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.nebula.widgets.compositetable.feature.feature.group" version="1.0.0.201409040043"/>
-<repository location="http://archive.eclipse.org/nebula/Q32014/release/"/>
-</location>
-</locations>
-</target>
+</location>\r
+<location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">\r
+<unit id="org.eclipse.nebula.widgets.compositetable.feature.feature.group" version="1.0.0.201409040043"/>\r
+<repository location="http://archive.eclipse.org/nebula/Q32014/release/"/>\r
+</location>\r
+</locations>\r
+</target>\r