taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/type/wizard/NameSearchDialog.java -text
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeDesignationWizard.java -text
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeListWizard.java -text
+taxeditor-editor/src/main/resources/TaonDescriptionEditor.screen -text
taxeditor-editor/src/main/resources/log4j.properties -text
taxeditor-editor/src/test/java/eu/etaxonomy/taxeditor/editor/Application.java -text
taxeditor-editor/src/test/java/eu/etaxonomy/taxeditor/editor/ApplicationActionBarAdvisor.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/SelectionDialogSelectionLabelProvider.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/UriDialog.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/handler/ShowDataSourceViewHandler.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/handler/ShowUserManagerViewHandler.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractExcelExportWizard.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractExcelImportWizard.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractExportWizard.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/TcsImportWizard.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractDataChangeBehaviour.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/CommonHelper.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DataChangeBridge.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionUtil.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IDataChangeBehavior.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImagesUtil.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IterableSynonymyList.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameUtil.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImagesHelper.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameHelper.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/SynonymUtil.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/SynonymHelper.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TaxeditorLoginModule.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonHelper.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonTransfer.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonUtil.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TimeUtil.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TimeHelper.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AbstractPersistentPostOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AbstractPostOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeConceptRelationshipTypeOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteSynonymOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteTaxonNodeOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteTaxonomicTreeOperation.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteUserOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/IPostOperationEnabled.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveTaxonOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/RemoveHomotypicalGroupBasionymOperation.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/StoreUtil.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java -text
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/internal/TaxeditorStorePlugin.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/AuthenticatedUserBar.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/handler/CreateUserHandler.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/handler/DeleteUserHandler.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/handler/EditUserHandler.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerContentProvider.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerLabelProvider.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerView.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/wizard/UserWizard.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/wizard/UserWizardPage.java -text
taxeditor-store/src/main/resources/eu/etaxonomy/cdm/defaultApplicationContext.xml -text
taxeditor-store/src/main/resources/log4j.properties -text
taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/CdmStoreTest.java -text
Bundle-ManifestVersion: 2\r
Bundle-Name: EDIT Taxonomic Editor\r
Bundle-SymbolicName: eu.etaxonomy.taxeditor.application;singleton:=true\r
-Bundle-Version: 2.0.0.v20090624-1625\r
+Bundle-Version: 2.0.0.v20090630-1147\r
Bundle-Activator: eu.etaxonomy.taxeditor.TaxonomicEditorPlugin\r
Bundle-Vendor: EDIT\r
Export-Package: eu.etaxonomy.taxeditor\r
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.4"?>
-<product name="%productName" id="eu.etaxonomy.taxeditor.application.TaxonomicEditor" application="eu.etaxonomy.taxeditor.application.application" version="2.0.0.v20090624-1625" useFeatures="true">
+<product name="%productName" id="eu.etaxonomy.taxeditor.application.TaxonomicEditor" application="eu.etaxonomy.taxeditor.application.application" version="2.0.0.v20090630-1147" useFeatures="true">
<aboutInfo>
<text>
</plugins>
<features>
- <feature id="eu.etaxonomy.taxeditor" version="2.0.0.v20090624-1625"/>
+ <feature id="eu.etaxonomy.taxeditor" version="2.0.0.v20090630-1147"/>
</features>
</product>
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
* An action bar advisor is responsible for creating, adding, and disposing of
}
protected void makeActions(final IWorkbenchWindow window) {
- NavigationUtil.setStatusLineManager(getActionBarConfigurer().getStatusLineManager());
- EditorUtil.setStatusLineManager(getActionBarConfigurer().getStatusLineManager());
+ StoreUtil.setStatusLineManager(getActionBarConfigurer().getStatusLineManager());
}
protected void fillMenuBar(IMenuManager menuBar) {
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.window.Window;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+import org.springframework.security.BadCredentialsException;
+import org.springframework.security.userdetails.UsernameNotFoundException;
import eu.etaxonomy.taxeditor.dialogs.LoginDialog;
import eu.etaxonomy.taxeditor.preference.InitNomenclaturalCodePrefDialog;
}
public void postWindowOpen() {
-
- // authentication; activate when needed
-// if(authenticate() != Window.OK){
-// PlatformUI.getWorkbench().close();
-// }
+ try{
+ authenticate();
+ }catch(BadCredentialsException e){
+ logger.error("Bad credentials", e);
+ }
checkNomenclaturalCode();
}
-#Thu Jun 25 13:48:31 CEST 2009\r
-eclipse.preferences.version=1\r
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
-org.eclipse.jdt.core.compiler.compliance=1.5\r
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
-org.eclipse.jdt.core.compiler.source=1.5\r
+#Thu Jun 25 20:09:50 CEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
Bundle-ManifestVersion: 2
Bundle-Name: EDIT Taxonomic Editor - Bulk Editor Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
-Bundle-Version: 1.0.0
+Bundle-Version: 2.0.0.v20090630-1147
Bundle-ClassPath: .
Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.jface.text;bundle-version="3.4.2",
- org.eclipse.ui.editors,
- org.eclipse.ui.ide,
- org.eclipse.core.resources;bundle-version="3.4.2",
- eu.etaxonomy.cdmLibrary;bundle-version="2.1.0"
-Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,org.eclipse.jface.text;bundle-version="3.4.2",org.eclipse.ui.editors,org.eclipse.ui.ide,org.eclipse.core.resources;bundle-version="3.4.2",eu.etaxonomy.cdmLibrary;bundle-version="2.1.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Export-Package: eu.etaxonomy.taxeditor.bulkeditor,
+ eu.etaxonomy.taxeditor.bulkeditor.handler,
+ eu.etaxonomy.taxeditor.bulkeditor.internal
+Bundle-Vendor: EDIT
this.selectedObject = selectedObject;\r
\r
// set background on selection TODO wanted to move this to setFocus() on the selectedObject but that doesn't work (infinite loop)\r
- ((GroupedComposite) selectedObject).setBackground(Resources.getColor(Resources.COLOR_COMPOSITE_SELECTED));\r
+// ((GroupedComposite) selectedObject).setBackground(Resources.getColor(Resources.COLOR_COMPOSITE_SELECTED));\r
\r
\r
if (selectedObject instanceof Composite) {\r
+ ((GroupedComposite) selectedObject).setBackground(Resources.getColor(Resources.COLOR_COMPOSITE_SELECTED));\r
this.selectedData = ((Composite) selectedObject).getData();\r
}\r
\r
import java.util.Set;\r
import java.util.UUID;\r
\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.core.commands.ExecutionException;\r
import org.eclipse.core.commands.operations.IOperationHistory;\r
import org.eclipse.core.commands.operations.IUndoContext;\r
-import org.eclipse.core.commands.operations.IUndoableOperation;\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.jface.action.IStatusLineManager;\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.IEditorPart;\r
import org.eclipse.ui.IEditorReference;\r
import org.eclipse.ui.IPageLayout;\r
import org.eclipse.ui.IViewPart;\r
import org.eclipse.ui.PartInitException;\r
-import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;\r
\r
-import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;\r
import eu.etaxonomy.taxeditor.model.AbstractUtility;\r
\r
/**\r
* @version 1.0\r
*/\r
public class EditorUtil extends AbstractUtility{\r
- private static final Logger logger = Logger.getLogger(EditorUtil.class);\r
\r
private static boolean isSaving = false;\r
\r
- private static IStatusLineManager statusLineManager;\r
-\r
private static IViewPart view;\r
\r
public static boolean closeAll() {\r
\r
return editor.getPage(page);\r
}\r
- \r
- public static IOperationHistory getOperationHistory() {\r
- return TaxeditorEditorPlugin.getDefault().getWorkbench().\r
- getOperationSupport().getOperationHistory();\r
- }\r
- \r
- public static IStatus executeOperation(IUndoableOperation operation){\r
- try {\r
- IStatus status = getOperationHistory().execute(operation, getMonitor(),\r
- WorkspaceUndoUtil.getUIInfoAdapter(getShell()));\r
- String statusString = status.equals(Status.OK_STATUS) ? "completed" : "cancelled";\r
- setStatusLine(operation.getLabel() + " " + statusString + ".");\r
- return status;\r
- } catch (ExecutionException e) {\r
- logger.error("Error executing operation: " + operation.getLabel(), e);\r
- }\r
- return null;\r
- }\r
\r
public static IUndoContext getUndoContext(MultiPageTaxonEditor editor){\r
return editor.getUndoContext();\r
return IOperationHistory.GLOBAL_UNDO_CONTEXT;\r
}\r
\r
- private static IProgressMonitor getMonitor() {\r
- statusLineManager.setCancelEnabled(false);\r
- return statusLineManager.getProgressMonitor();\r
- }\r
- \r
- public static void setStatusLineManager(IStatusLineManager manager) {\r
- statusLineManager = manager;\r
- }\r
-\r
- public static void setStatusLine(String message) {\r
- statusLineManager.setMessage(message);\r
- }\r
-\r
public static void showPropertySheet() {\r
if (getActivePage() == null) {\r
return;\r
public void focusGained(FocusEvent e) {\r
setFocus();\r
}\r
+ \r
};\r
\r
textViewer.getTextWidget().addFocusListener(focusListener);\r
}\r
};\r
textViewer.getTextWidget().addModifyListener(parseListener);\r
+ \r
} else {\r
logger.warn("Can't create parser because textViewer has not been initalized.");\r
}\r
addPage(Page.IMAGE.getIndex(), new TaxonImageEditor(this), getEditorInput());\r
setPageText(Page.IMAGE.getIndex(), Page.IMAGE.getTitle());\r
\r
-// EditorUtil.showPropertySheet();\r
+ EditorUtil.showPropertySheet();\r
\r
} catch (PartInitException e) {\r
logger.error("Could not create MultiPageTaxonEditor.", e);\r
\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
-import eu.etaxonomy.taxeditor.model.DescriptionUtil;\r
+import eu.etaxonomy.taxeditor.model.DescriptionHelper;\r
import eu.etaxonomy.taxeditor.model.ImageResources;\r
import eu.etaxonomy.taxeditor.model.Resources;\r
import eu.etaxonomy.taxeditor.propertysheet.description.DescriptionElementPropertySource;\r
\r
String text = null;\r
\r
- text = DescriptionUtil.getCache(element);\r
+ text = DescriptionHelper.getCache(element);\r
\r
if (text.length() == 0) {\r
initEmptyText();\r
\r
protected void parse(String text) {\r
\r
- DescriptionUtil.setCache(getElement(), text);\r
+ DescriptionHelper.setCache(getElement(), text);\r
\r
// Manually refresh the property sheet to reflect changes\r
setSelection();\r
createBorderSupport();\r
createLineWrapSupport();\r
\r
- createParser();\r
+// createParser();\r
createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
\r
setIsDraggable(false);\r
import eu.etaxonomy.taxeditor.editor.GroupComposite;\r
import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;\r
-import eu.etaxonomy.taxeditor.model.ImagesUtil;\r
+import eu.etaxonomy.taxeditor.model.ImagesHelper;\r
\r
/**\r
* @author p.ciardelli\r
firstGroupedComposite = (GroupedComposite) labelComposite;\r
}\r
\r
- Set<ImageFile> imageFiles = ImagesUtil.getImages((TaxonDescription) description);\r
+ Set<ImageFile> imageFiles = ImagesHelper.getImages((TaxonDescription) description);\r
\r
for(ImageFile imageFile : imageFiles){\r
FreeTextElementFactory.getDefault().createImageElement(this, imageFile);\r
import org.eclipse.ui.views.properties.IPropertySource;\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.editor.AbstractTaxonEditor;\r
import eu.etaxonomy.taxeditor.propertysheet.name.AcceptedTaxonPropertySource;\r
\r
* @created 13.01.2009\r
* @version 1.0\r
*/\r
-public class AcceptedNameComposite extends NameComposite {\r
+public class AcceptedNameComposite extends NameComposite<Taxon> {\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger\r
.getLogger(AcceptedNameComposite.class);\r
\r
public AcceptedNameComposite(AbstractTaxonEditor editor, Composite groupComposite) {\r
- super(editor, groupComposite, NameComposite.ACCEPTED_TAXON, editor.getTaxon());\r
- \r
+ super(editor, groupComposite, editor.getTaxon());\r
+ }\r
+ \r
+ public void initializeComposite(){\r
// setIsDraggable(false);\r
setIcon(ACCEPTED_ICON);\r
setFont(getViewerFont());\r
}\r
\r
@Override\r
- protected TaxonNameBase<?, ?> getName() {\r
+ protected TaxonNameBase getName() {\r
return taxon.getName();\r
}\r
\r
import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
import eu.etaxonomy.taxeditor.operations.ChangeConceptRelationshipTypeOperation;\r
import eu.etaxonomy.taxeditor.operations.ChangeConceptToSynonymOperation;\r
-import eu.etaxonomy.taxeditor.operations.ChangeHomotypicGroupOperation;\r
-import eu.etaxonomy.taxeditor.operations.ChangeSynonymToMisapplicationOperation;\r
import eu.etaxonomy.taxeditor.propertysheet.name.ConceptPropertySource;\r
\r
/**\r
* @created 26.01.2009\r
* @version 1.0\r
*/\r
-public class ConceptComposite extends NameComposite {\r
+public class ConceptComposite extends NameComposite<Taxon> {\r
\r
private Taxon relatedTaxon;\r
private TaxonRelationshipType relationshipType;\r
private ConceptComposite(TaxonNameEditor editor, Composite parent,\r
Taxon relatedTaxon, TaxonRelationshipType relationshipType, \r
boolean acceptedTaxonIsFromTaxon) {\r
- super(editor, parent, NameComposite.CONCEPTRELATION, relatedTaxon);\r
- \r
- this.taxon = editor.getTaxon();\r
+ super(editor, parent, relatedTaxon);\r
+\r
this.relatedTaxon = relatedTaxon;\r
this.relationshipType = relationshipType;\r
this.setAcceptedTaxonIsFromTaxon(acceptedTaxonIsFromTaxon);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.editor.name.NameComposite#initializeComposite()\r
+ */\r
+ @Override\r
+ protected void initializeComposite() {\r
\r
setIsDraggable(true);\r
setIcon(CONCEPT_ICON);\r
* @created 13.01.2009\r
* @version 1.0\r
*/\r
-public class MisappliedNameComposite extends NameComposite {\r
- \r
- private Taxon misappliedName;\r
+public class MisappliedNameComposite extends NameComposite<Taxon> {\r
\r
public MisappliedNameComposite(TaxonNameEditor editor, Composite parent, Taxon misappliedName) {\r
- super(editor, parent, NameComposite.MISAPPLIED_NAME, misappliedName);\r
- \r
- this.taxon = editor.getTaxon();\r
- this.misappliedName = misappliedName;\r
- \r
+ super(editor, parent, misappliedName);\r
+\r
+ }\r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.editor.name.NameComposite#initializeComposite()\r
+ */\r
+ @Override\r
+ protected void initializeComposite() {\r
setIsDraggable(true);\r
setIcon(MISAPPLIEDNAME_ICON);\r
setFont(getViewerFont());\r
\r
showSec(); \r
\r
- initTextViewer(misappliedName);\r
+ initTextViewer(getMisappliedName());\r
}\r
\r
private void showSec() {\r
- if (misappliedName == null) {\r
+ if (getMisappliedName() == null) {\r
return;\r
}\r
\r
- if (misappliedName.getSec() == null) {\r
+ if (getMisappliedName().getSec() == null) {\r
setNonEditableInfo("sec. ???");\r
} else {\r
- setNonEditableInfo("sec. " + misappliedName.getSec().getTitleCache());\r
+ setNonEditableInfo("sec. " + getMisappliedName().getSec().getTitleCache());\r
}\r
}\r
\r
public Taxon getMisappliedName() {\r
- return misappliedName;\r
+ return getTaxonBase();\r
}\r
\r
public boolean setParent(Composite parent) {\r
((HomotypicalGroupComposite)parent).getGroup();\r
\r
IUndoableOperation operation = new ChangeConceptToSynonymOperation\r
- ("change misapplication to synonym", editor.getUndoContext(), taxon, misappliedName, homotypicalGroup, editor);\r
+ ("change misapplication to synonym", editor.getUndoContext(), taxon, getMisappliedName(), homotypicalGroup, editor);\r
EditorUtil.executeOperation(operation);\r
\r
doSetParent = true;\r
}\r
\r
public IPropertySource getPropertySource() {\r
- return new MisapplicationPropertySource(misappliedName);\r
+ return new MisapplicationPropertySource(getMisappliedName());\r
}\r
\r
@Override\r
protected void calculateErrors() {\r
super.calculateErrors();\r
\r
- textViewer.setShowSecError(misappliedName);\r
+ textViewer.setShowSecError(getMisappliedName());\r
}\r
\r
@Override\r
protected TaxonNameBase<?, ?> getName() {\r
- return misappliedName.getName();\r
+ return getMisappliedName().getName();\r
}\r
\r
public Object getData () {\r
return getMisappliedName();\r
}\r
+\r
}
\ No newline at end of file
import eu.etaxonomy.taxeditor.editor.labels.ILabelImageStrategy;\r
import eu.etaxonomy.taxeditor.editor.labels.LabelImageProvider;\r
import eu.etaxonomy.taxeditor.model.ImageResources;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
import eu.etaxonomy.taxeditor.model.Resources;\r
import eu.etaxonomy.taxeditor.operations.CreateSynonymInNewGroupOperation;\r
import eu.etaxonomy.taxeditor.propertysheet.name.BotanicalNamePropertySource;\r
* @created 02.06.2008\r
* @version 1.0\r
*/\r
-public abstract class NameComposite extends GroupedComposite{\r
+public abstract class NameComposite<T extends TaxonBase> extends GroupedComposite{\r
\r
/**\r
* ************ COMPOSITE TYPES ************\r
private boolean isUseParser = false;\r
\r
protected boolean isParsing;\r
+ private T taxonBase;\r
\r
/**\r
* The constructor for a DescriptionElementComposite. Takes a parent Composite on which to\r
* @param parent\r
* @param managedForm\r
*/\r
- public NameComposite(AbstractTaxonEditor editor, Composite parent, \r
- String compositeType, TaxonBase<?> taxonBase) {\r
+ public NameComposite(AbstractTaxonEditor editor, Composite parent, T taxonBase) {\r
super(editor, parent);\r
\r
+ this.taxonBase = taxonBase;\r
+ \r
createTextViewer();\r
createBorderSupport();\r
createLineWrapSupport();\r
\r
setDraggableControl(textViewer.getRulerControl());\r
\r
- createParser();\r
createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
+ \r
+ initializeComposite();\r
+ createParser();\r
}\r
\r
+ /**\r
+ * Initialize the composite specific code\r
+ * \r
+ */\r
+ protected abstract void initializeComposite();\r
+ \r
protected String getEmptyTextPrompt() {\r
return EMPTY_NAME_PROMPT;\r
}\r
relatedName = nameRelation.getFromName();\r
}\r
\r
- setNonEditableInfo(typeLabel + " " + NameUtil.getDisplayName(relatedName));\r
+ setNonEditableInfo(typeLabel + " " + NameHelper.getDisplayName(relatedName));\r
}\r
}\r
\r
\r
showNameRelations();\r
\r
- String text = NameUtil.getDisplayNameWithRef(taxonBase);\r
+ String text = NameHelper.getDisplayNameWithRef(taxonBase);\r
\r
if (text.length() == 0) {\r
initEmptyText();\r
\r
showNameRelations();\r
\r
- String text = NameUtil.getDisplayNameWithRef((TaxonBase) getData());\r
+ String text = NameHelper.getDisplayNameWithRef((TaxonBase) getData());\r
\r
if (text.length() == 0) {\r
initEmptyText();\r
\r
return false;\r
}\r
+\r
+ /**\r
+ * @return the taxonBase\r
+ */\r
+ public T getTaxonBase() {\r
+ return taxonBase;\r
+ }\r
}
\ No newline at end of file
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
import eu.etaxonomy.taxeditor.operations.ChangeHomotypicGroupOperation;\r
import eu.etaxonomy.taxeditor.operations.ChangeSynonymToMisapplicationOperation;\r
import eu.etaxonomy.taxeditor.propertysheet.name.SynonymPropertySource;\r
* @created 13.01.2009\r
* @version 1.0\r
*/\r
-public class SynonymComposite extends NameComposite {\r
+public class SynonymComposite extends NameComposite<Synonym> {\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger\r
.getLogger(SynonymComposite.class);\r
\r
- private Synonym synonym;\r
- \r
public SynonymComposite(TaxonNameEditor editor, Composite parent, Synonym synonym) {\r
- super(editor, parent, null, synonym);\r
- \r
- this.taxon = editor.getTaxon();\r
- this.synonym = synonym;\r
- \r
+ super(editor, parent, synonym);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.editor.name.NameComposite#initializeComposite()\r
+ */\r
+ @Override\r
+ protected void initializeComposite() {\r
setIsDraggable(true);\r
setFont(getViewerFont());\r
setIndent(SYNONYM_INDENT);\r
\r
if (isHomotypic()) {\r
- if (NameUtil.isNameGroupBasionym(synonym.getName())) {\r
+ if (NameHelper.isNameGroupBasionym(getSynonym().getName())) {\r
setIcon(HOMOTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON);\r
} else {\r
setIcon(HOMOTYPIC_SYNONYM_ICON);\r
} \r
} else {\r
- if (NameUtil.isNameGroupBasionym(synonym.getName())) {\r
+ if (NameHelper.isNameGroupBasionym(getSynonym().getName())) {\r
setIcon(HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON);\r
} else {\r
setIcon(HETEROTYPIC_SYNONYM_ICON);\r
}\r
}\r
\r
- initTextViewer(synonym);\r
+ initTextViewer(getSynonym());\r
}\r
\r
private boolean isHomotypic() {\r
- HomotypicalGroup group = synonym.getHomotypicGroup();\r
+ HomotypicalGroup group = getSynonym().getHomotypicGroup();\r
return group.equals(taxon.getHomotypicGroup()); \r
}\r
\r
public Synonym getSynonym() {\r
- return synonym;\r
+ return getTaxonBase();\r
}\r
\r
public boolean setParent(Composite parent) {\r
// Has this been moved to the misapplied names group?\r
if (parent instanceof MisappliedGroupComposite) {\r
IUndoableOperation operation = new ChangeSynonymToMisapplicationOperation\r
- ("change to misapplication", editor.getUndoContext(), taxon, synonym, editor); //$NON-NLS-1$\r
+ ("change to misapplication", editor.getUndoContext(), taxon, getSynonym(), editor); //$NON-NLS-1$\r
EditorUtil.executeOperation(operation);\r
\r
doSetParent = true;\r
((HomotypicalGroupComposite)parent).getGroup();\r
\r
// Make sure we are not dropping synonym on its own group\r
- if (!homotypicalGroup.equals(synonym.getHomotypicGroup())) {\r
+ if (!homotypicalGroup.equals(getSynonym().getHomotypicGroup())) {\r
IUndoableOperation operation = new ChangeHomotypicGroupOperation\r
- ("change type", editor.getUndoContext(), taxon, synonym, homotypicalGroup, editor); //$NON-NLS-1$\r
+ ("change type", editor.getUndoContext(), taxon, getSynonym(), homotypicalGroup, editor); //$NON-NLS-1$\r
EditorUtil.executeOperation(operation);\r
\r
doSetParent = true;\r
}\r
\r
public IPropertySource getPropertySource() {\r
- if (NameUtil.isNameGroupBasionym(synonym.getName())) {\r
- return new BasionymSynonymPropertySource(synonym);\r
+ if (NameHelper.isNameGroupBasionym(getSynonym().getName())) {\r
+ return new BasionymSynonymPropertySource(getSynonym());\r
} else {\r
- return new SynonymPropertySource(synonym);\r
+ return new SynonymPropertySource(getSynonym());\r
}\r
}\r
\r
\r
@Override\r
protected TaxonNameBase<?, ?> getName() {\r
- return synonym.getName();\r
+ return getSynonym().getName();\r
}\r
\r
public Object getData () {\r
\r
import java.beans.PropertyChangeEvent;\r
import java.beans.PropertyChangeListener;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
import java.util.Set;\r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.core.runtime.Assert;\r
import org.eclipse.core.runtime.IProgressMonitor;\r
import org.eclipse.swt.dnd.DND;\r
import org.eclipse.swt.dnd.DropTarget;\r
import org.eclipse.swt.dnd.DropTargetEvent;\r
import org.eclipse.swt.dnd.Transfer;\r
import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
import org.eclipse.swt.widgets.Event;\r
import org.eclipse.swt.widgets.Listener;\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.IEditorSite;\r
import org.eclipse.ui.PartInitException;\r
+import org.eclipse.ui.forms.widgets.FormToolkit;\r
\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
import eu.etaxonomy.taxeditor.editor.AbstractTaxonEditor;\r
+import eu.etaxonomy.taxeditor.editor.CompositeBorderDecorator;\r
import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
-import eu.etaxonomy.taxeditor.editor.FreeTextElementFactory;\r
+import eu.etaxonomy.taxeditor.editor.GroupComposite;\r
import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;\r
import eu.etaxonomy.taxeditor.editor.WidgetTransfer;\r
private static final Logger logger = Logger.getLogger(TaxonNameEditor.class);\r
\r
private static final String ID = "eu.etaxonomy.taxeditor.taxonNameEditor";\r
+\r
\r
public TaxonNameEditor(MultiPageTaxonEditor editor){\r
super(editor);\r
}\r
}\r
};\r
+\r
+ private Map<HomotypicalGroup, HomotypicalGroupComposite> homotypicGroupComposites;\r
+\r
+ private MisappliedGroupComposite misappliedGroupComposite;\r
+\r
+ private ConceptGroupComposite conceptGroupComposite;\r
\r
@Override\r
public void doSave(IProgressMonitor monitor) {}\r
\r
Taxon taxon = getTaxon();\r
\r
- firstGroupedComposite = (NameComposite) FreeTextElementFactory.getDefault().\r
- createAcceptedTaxon(this);\r
+ firstGroupedComposite = createAcceptedTaxon();\r
\r
- // Draw synonym and misapplied name elements\r
- for (TaxonBase<?> taxonBase : new IterableSynonymyList(taxon)) {\r
- if (taxonBase instanceof Synonym) {\r
- FreeTextElementFactory.getDefault().createSynonym(this, (Synonym) taxonBase); \r
- } else {\r
- FreeTextElementFactory.getDefault().createMisappliedName(this, (Taxon) taxonBase);\r
+ // Draw homotypic group synonyms\r
+ HomotypicalGroup homotypicGroup = taxon.getHomotypicGroup();\r
+ \r
+ if (homotypicGroup != null) {\r
+ List<Synonym> homotypicSynonyms = homotypicGroup.getSynonymsInGroup(taxon.getSec());\r
+ for (Synonym synonym : homotypicSynonyms) {\r
+\r
+ // Make sure synonym belongs to the taxon\r
+ if (synonym.getAcceptedTaxa().contains(taxon)) {\r
+ createSynonym(synonym);\r
+ }\r
+ }\r
+ }\r
+ \r
+ // Draw heterotypic synonym groups\r
+ List<HomotypicalGroup> heterotypicGroups = taxon.getHeterotypicSynonymyGroups();\r
+ for (HomotypicalGroup heterotypicGroup : heterotypicGroups) {\r
+ \r
+ // Make sure this is not the taxon's homotypic group\r
+ if (!heterotypicGroup.equals(homotypicGroup)) {\r
+ \r
+ List<Synonym> heterotypicSynonyms = heterotypicGroup.\r
+ getSynonymsInGroup(taxon.getSec());\r
+ for (Synonym synonym : heterotypicSynonyms) {\r
+\r
+ // Make sure synonym belongs to the taxon\r
+ if (synonym.getAcceptedTaxa().contains(taxon)) {\r
+ createSynonym(synonym);\r
+ }\r
+ }\r
}\r
}\r
+ \r
+ // Draw misapplied name elements\r
+ for(Taxon misappliedName : taxon.getMisappliedNames()){\r
+ createMisappliedName(misappliedName);\r
+ } \r
\r
// Draw concept relation elements\r
Set<TaxonRelationship> taxonRelations = taxon.getTaxonRelations();\r
continue;\r
}\r
\r
- FreeTextElementFactory.getDefault().createConcept(this, relationship);\r
+ createConcept(relationship);\r
} \r
\r
+ createDragSupport();\r
+ \r
+ setFocus();\r
+\r
+ // Redraw composite\r
+ composite.layout();\r
+ }\r
+ \r
+ \r
+ /**\r
+ * \r
+ */\r
+ private void createDragSupport() {\r
// Listen for names being dragged outside of existing homotypic groups -\r
// user wants to create a new group\r
Transfer[] types = new Transfer[] {WidgetTransfer.getInstance()};\r
\r
\r
} \r
- }); \r
- setFocus();\r
-\r
- // Redraw composite\r
- composite.layout();\r
+ }); \r
}\r
- \r
- \r
+\r
public Composite getAcceptedName() {\r
- for(Composite c : getGroupedComposites()){\r
- if(c instanceof AcceptedNameComposite){\r
- return c;\r
- }\r
+ // accepted name should always reside in firstGroupComposite\r
+ if(firstGroupedComposite instanceof AcceptedNameComposite){\r
+ return firstGroupedComposite;\r
}\r
+ \r
+// for(Composite c : getGroupedComposites()){\r
+// if(c instanceof AcceptedNameComposite){\r
+// return c;\r
+// }\r
+// }\r
return null;\r
}\r
\r
- \r
- public Composite getHomotypicGroup(HomotypicalGroup group) {\r
- for(Composite c : getGroupComposites()){\r
- if(c instanceof HomotypicalGroupComposite){\r
- if (group.equals(\r
- ((HomotypicalGroupComposite) c).getGroup())) {\r
- return c;\r
- }\r
- }\r
+ /**\r
+ * @return\r
+ */\r
+ private Map<HomotypicalGroup, HomotypicalGroupComposite> getHomotypicGroups() {\r
+ if(homotypicGroupComposites == null){\r
+ homotypicGroupComposites = new HashMap<HomotypicalGroup, HomotypicalGroupComposite>();\r
}\r
- return null;\r
+ return homotypicGroupComposites;\r
+ }\r
+ \r
+ public HomotypicalGroupComposite getHomotypicGroup(HomotypicalGroup group) {\r
+ return getHomotypicGroups().get(group);\r
}\r
\r
\r
public Composite getMisappliedGroup() {\r
- for(Composite c : getGroupComposites()){\r
- if(c instanceof MisappliedGroupComposite){\r
- return c;\r
- }\r
- }\r
- return null;\r
+ return misappliedGroupComposite;\r
}\r
\r
\r
public Composite getMisappliedName(Taxon misappliedName) {\r
- for(Composite c : getGroupedComposites()){\r
- if(c instanceof MisappliedNameComposite){\r
- if (misappliedName.equals(\r
- ((MisappliedNameComposite) c).getMisappliedName())) {\r
- return c;\r
- }\r
+ for(Control child : getMisappliedGroup().getChildren()){\r
+ if(child instanceof MisappliedNameComposite){\r
+ return (MisappliedNameComposite) child;\r
}\r
}\r
return null;\r
\r
\r
public Composite getSynonym(Synonym synonym) {\r
- for(Composite c : getGroupedComposites()){\r
- if(c instanceof SynonymComposite){\r
- if (synonym.equals \r
- (((SynonymComposite) c).getSynonym())) {\r
- return c;\r
- }\r
+ \r
+ GroupComposite groupComposite = getHomotypicGroup(synonym.getHomotypicGroup());\r
+ \r
+ for (Control child : groupComposite.getChildren()){\r
+ if(child instanceof SynonymComposite \r
+ && synonym.equals(((SynonymComposite) child).getSynonym())){\r
+ return (SynonymComposite) child;\r
}\r
}\r
+ \r
return null;\r
}\r
\r
\r
public Composite getConceptGroup() {\r
- for(Composite c : getGroupComposites()){\r
- if(c instanceof ConceptGroupComposite){\r
- return c;\r
- }\r
- }\r
- return null;\r
+ return conceptGroupComposite;\r
}\r
\r
\r
public Composite getConcept(Taxon relatedConcept) {\r
- for(Composite c : getGroupedComposites()){\r
- if(c instanceof ConceptComposite){\r
- if (relatedConcept.equals \r
- (((ConceptComposite) c).getRelatedTaxon())) {\r
- return c;\r
- }\r
+ for (Control child : getConceptGroup().getChildren()){\r
+ if(child instanceof ConceptComposite \r
+ && relatedConcept.equals \r
+ (((ConceptComposite) child).getRelatedTaxon())){\r
+ return (ConceptComposite) child;\r
}\r
}\r
+\r
return null;\r
}\r
\r
}\r
\r
\r
+ /***********************************************************************/\r
+ \r
+ private GroupedComposite createAcceptedTaxon() {\r
+ // Create a homotypic group composite for the accepted taxon\r
+ HomotypicalGroup group = getTaxon().getHomotypicGroup();\r
+ Assert.isNotNull(group, "Taxon does not have a homotypic group");\r
+ \r
+ createHomotypicalGroup(group);\r
+ \r
+ // Create a name composite for the accepted taxon\r
+ return new AcceptedNameComposite(this, getHomotypicGroup(group));\r
+ }\r
+ \r
+ private HomotypicalGroupComposite createHomotypicalGroup(HomotypicalGroup group) {\r
+\r
+ // Create the group composite\r
+ HomotypicalGroupComposite groupComposite = new HomotypicalGroupComposite(this, getTopLevelComposite(), group);\r
+\r
+ \r
+ //groupComposite.addFocusListener(new CompositeBorderDecorator(groupComposite, editor.getManagedForm())); \r
+ \r
+ groupComposite.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);\r
+ getManagedForm().getToolkit().paintBordersFor(groupComposite.getParent());\r
+ \r
+ getHomotypicGroups().put(group, groupComposite);\r
+ \r
+ return groupComposite;\r
+ }\r
+\r
+\r
+ private Composite createSynonym(Synonym synonym) { \r
+ // Get the synonym's homotypic group\r
+ HomotypicalGroup group = synonym.getHomotypicGroup();\r
+ Assert.isNotNull(group, "Synonym does not have a homotypic group");\r
+ \r
+ // If the group doesn't yet have a composite, create one and add it to the repository\r
+ HomotypicalGroupComposite groupComposite = getHomotypicGroup(group);\r
+ if (groupComposite == null) {\r
+ groupComposite = createHomotypicalGroup(group);\r
+ }\r
+ \r
+ // Create a synonym composite in the homotypical group\r
+ Composite synonymComposite = new SynonymComposite(this, groupComposite, synonym);\r
+ \r
+ return synonymComposite;\r
+ }\r
+ \r
+ public Composite createMisappliedName(Taxon misappliedName) {\r
+ \r
+ // If there is no composite for misapplied names, \r
+ // create one and add it to the repository\r
+ Composite groupComposite = getMisappliedGroup();\r
+ if (groupComposite == null) {\r
+ groupComposite = createMisappliedGroup();\r
+ }\r
+ \r
+ // Create the name's composite\r
+ Composite composite = new MisappliedNameComposite(this, groupComposite, misappliedName);\r
+ \r
+ return composite;\r
+ }\r
+ \r
+ \r
+ public MisappliedGroupComposite createMisappliedGroup() {\r
+ // Create the group composite\r
+ misappliedGroupComposite = new MisappliedGroupComposite(this, this.getTopLevelComposite());\r
+ misappliedGroupComposite.addFocusListener(new CompositeBorderDecorator(misappliedGroupComposite, this.getManagedForm()));\r
+ \r
+ // Put the group composite before concept group composite, if any\r
+ Composite conceptGroupComposite = this.getConceptGroup();\r
+ if (conceptGroupComposite != null) {\r
+ misappliedGroupComposite.moveAbove(conceptGroupComposite);\r
+ }\r
+ \r
+ return misappliedGroupComposite;\r
+ }\r
+ \r
+ \r
+ public Composite createConcept(TaxonRelationship relationship) { \r
+ // If there is no composite for misapplied names, \r
+ // create one and add it to the repository\r
+ Composite groupComposite = this.getConceptGroup();\r
+ if (groupComposite == null) {\r
+ groupComposite = createConceptGroup();\r
+ }\r
+ \r
+ // Create the name's composite\r
+ Composite composite = ConceptComposite.getNewInstance(this, groupComposite, relationship);\r
+ \r
+ return composite;\r
+ }\r
+\r
+ \r
+ public Composite createConceptGroup() {\r
+ // Create the group composite\r
+ conceptGroupComposite = new ConceptGroupComposite(this, this.getTopLevelComposite());\r
+ conceptGroupComposite.addFocusListener(new CompositeBorderDecorator(conceptGroupComposite, this.getManagedForm()));\r
+ \r
+ // Put the group composite after misapplied group composite, if any\r
+ Composite misappliedGroupComposite = this.getMisappliedGroup();\r
+ if (misappliedGroupComposite != null) {\r
+ conceptGroupComposite.moveBelow(misappliedGroupComposite);\r
+ }\r
+ \r
+ return conceptGroupComposite;\r
+\r
+ }\r
}
\ No newline at end of file
\r
import org.eclipse.jface.viewers.ICellEditorValidator;\r
\r
-import eu.etaxonomy.taxeditor.model.TimeUtil;\r
+import eu.etaxonomy.taxeditor.model.TimeHelper;\r
\r
/**\r
* @author p.ciardelli\r
return null;\r
}\r
try {\r
- TimeUtil.convertTimePeriod(year);\r
+ TimeHelper.convertTimePeriod(year);\r
} catch (NumberFormatException e) {\r
return "Year must be between 1750 and 2030. Two years can also be given in the format 'xxxx-xxxx'.";\r
}\r
import eu.etaxonomy.cdm.model.description.TaxonInteraction;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.taxeditor.model.DescriptionUtil;\r
+import eu.etaxonomy.taxeditor.model.DescriptionHelper;\r
import eu.etaxonomy.taxeditor.propertysheet.ICdmBasePropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
\r
}\r
\r
if (id.equals(P_ID_ELEMENT_TEXT)) {\r
- return DescriptionUtil.getCache(descriptionElement); \r
+ return DescriptionHelper.getCache(descriptionElement); \r
}\r
\r
if (id.equals(P_ID_MICROREF)) {\r
}\r
\r
if (id.equals(P_ID_ELEMENT_TEXT)) {\r
- DescriptionUtil.setCache(descriptionElement, (String) value);\r
+ DescriptionHelper.setCache(descriptionElement, (String) value);\r
}\r
\r
if (id.equals(P_ID_MICROREF)) {\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
\r
/**\r
* @author p.ciardelli\r
*/\r
private void setIsBasionym() {\r
TaxonNameBase name = getTaxonBase().getName();\r
- isBasionym = NameUtil.isNameGroupBasionym(name);\r
+ isBasionym = NameHelper.isNameGroupBasionym(name);\r
}\r
}\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
import eu.etaxonomy.taxeditor.propertysheet.ICdmBasePropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
this.P_TAXONNAME = nameTitle;\r
\r
if (taxon != null && taxon.getName() != null && \r
- !NameUtil.isNameSupraSpecific(taxon.getName())) {\r
+ !NameHelper.isNameSupraSpecific(taxon.getName())) {\r
P_TYPES = "Specimen Types";\r
}\r
\r
// TODO return NameTypeDesignations\r
TaxonNameBase<?, ?> name = taxonBase.getName();\r
Set<?> typeDesignations = null;\r
- if (NameUtil.isNameSupraSpecific(name)) {\r
+ if (NameHelper.isNameSupraSpecific(name)) {\r
typeDesignations = name.getNameTypeDesignations();\r
} else {\r
typeDesignations = name.getSpecimenTypeDesignations();\r
import eu.etaxonomy.taxeditor.editor.labels.LabelImageProvider;\r
import eu.etaxonomy.taxeditor.editor.name.NameSelectComposite;\r
import eu.etaxonomy.taxeditor.editor.reference.ReferenceSelectComposite;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
\r
\r
setTitle("Create name relationship."); \r
setDescription("Create a relationship for \""\r
- + NameUtil.getDisplayName(baseName) + "\".");\r
+ + NameHelper.getDisplayName(baseName) + "\".");\r
}\r
\r
public void createControl(Composite parent) {\r
}\r
\r
private void setDirectionLabels() {\r
- String strDirection1 = "\"" + NameUtil.getDisplayName(relatedName) + "\" "\r
+ String strDirection1 = "\"" + NameHelper.getDisplayName(relatedName) + "\" "\r
+ "is " + typeCombo.getText() + " " + "\""\r
- + NameUtil.getDisplayName(baseName) + "\"";\r
- String strDirection2 = "\"" + NameUtil.getDisplayName(baseName) + "\" "\r
+ + NameHelper.getDisplayName(baseName) + "\"";\r
+ String strDirection2 = "\"" + NameHelper.getDisplayName(baseName) + "\" "\r
+ "is " + typeCombo.getText() + " " + "\""\r
- + NameUtil.getDisplayName(relatedName) + "\"";\r
+ + NameHelper.getDisplayName(relatedName) + "\"";\r
\r
btnFromRelatedToBase.setText(strDirection1);\r
btnFromBaseToRelated.setText(strDirection2); \r
import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
import eu.etaxonomy.taxeditor.editor.labels.ILabelImageStrategy;\r
import eu.etaxonomy.taxeditor.editor.labels.LabelImageProvider;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
\r
/**\r
* @author p.ciardelli\r
this.labelProvider = new LabelImageProvider(strategy);\r
\r
setTitle("Nomenclatural relations for \""\r
- + NameUtil.getDisplayName(name) + "\".");\r
+ + NameHelper.getDisplayName(name) + "\".");\r
setDescription("Select a relation and click \"Edit ...\" or \"Remove\", or click \"Add ...\" to create a new relation.");\r
}\r
\r
if (nameRelationship.getFromName() == null) {\r
fromName = "";\r
} else {\r
- fromName = NameUtil.getDisplayName(nameRelationship.getFromName());\r
+ fromName = NameHelper.getDisplayName(nameRelationship.getFromName());\r
}\r
if (nameRelationship.getType() == null) {\r
type = "";\r
if (nameRelationship.getToName() == null) {\r
toName = "";\r
} else {\r
- toName = NameUtil.getDisplayName(nameRelationship.getToName());\r
+ toName = NameHelper.getDisplayName(nameRelationship.getToName());\r
}\r
return "\"" + fromName + "\" is \"" + type + "\" of \"" + toName + "\"";\r
}\r
import eu.etaxonomy.cdm.model.reference.Thesis;\r
import eu.etaxonomy.cdm.model.reference.WebPage;\r
import eu.etaxonomy.taxeditor.model.Resources;\r
-import eu.etaxonomy.taxeditor.model.TimeUtil;\r
+import eu.etaxonomy.taxeditor.model.TimeHelper;\r
import eu.etaxonomy.taxeditor.propertysheet.ICdmBasePropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.TimePeriodPropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.YearValidator;\r
if (!year.equals("")) {\r
\r
// Convert to a TimePeriod\r
- yearsPublished = TimeUtil.convertTimePeriod(year);\r
+ yearsPublished = TimeHelper.convertTimePeriod(year);\r
\r
// Update reference's dataPublished field\r
TimePeriod datePublished = ((StrictReferenceBase<?>) reference).getDatePublished();\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
import eu.etaxonomy.taxeditor.propertysheet.type.wizard.TypeListWizard;\r
\r
/**\r
int returnCode = dialog.open();\r
\r
if (returnCode == Window.OK) {\r
- if (NameUtil.isNameSupraSpecific(name)) {\r
+ if (NameHelper.isNameSupraSpecific(name)) {\r
return new TypeCollectionPropertySource(name, name.getNameTypeDesignations());\r
} else {\r
return new TypeCollectionPropertySource(name, name.getSpecimenTypeDesignations());\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
\r
/**\r
* @author p.ciardelli\r
this.typeDesignationsList = typeDesignationsList;\r
\r
setTitle("Type designations for \""\r
- + NameUtil.getDisplayName(name) + "\".");\r
+ + NameHelper.getDisplayName(name) + "\".");\r
setDescription("Select a type designation and click \"Edit ...\" or \"Remove\", or click \"Add ...\" to create a new designation.");\r
}\r
\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
\r
\r
/**\r
* @see org.eclipse.jface.wizard.Wizard#addPages()\r
*/\r
public void addPages() {\r
- if (NameUtil.isNameSupraSpecific(name)) {\r
+ if (NameHelper.isNameSupraSpecific(name)) {\r
chooseTypePage = new ChooseNameTypeWizardPage(typeDesignation, name, typeDesignationsList);\r
} else {\r
chooseTypePage = new ChooseSpecimenTypeWizardPage(typeDesignation, name, typeDesignationsList);\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
\r
/**\r
* @author p.ciardelli\r
this.name = name;\r
this.typeDesignationsList = new WritableList();\r
if (name != null) {\r
- if (NameUtil.isNameSupraSpecific(name)) {\r
+ if (NameHelper.isNameSupraSpecific(name)) {\r
this.typeDesignationsList.addAll(name.getNameTypeDesignations());\r
} else {\r
this.typeDesignationsList.addAll(name.getSpecimenTypeDesignations()); \r
\r
if (name != null) {\r
\r
- if (NameUtil.isNameSupraSpecific(name)) {\r
+ if (NameHelper.isNameSupraSpecific(name)) {\r
\r
// Remove all designations\r
for (Object typeDesignation : name.getNameTypeDesignations()) {\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<model:Screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:model="http://wireframesketcher.com/1.0/model.ecore">
+ <widgets xsi:type="model:Panel" x="104" y="80" width="849" height="529"/>
+ <widgets xsi:type="model:Panel" x="144" y="112" width="377" height="465"/>
+ <widgets xsi:type="model:VScrollbar" x="520" y="113" height="464"/>
+ <widgets xsi:type="model:Button" x="552" y="113" width="41" text="Add"/>
+ <widgets xsi:type="model:Button" x="552" y="152" width="41" text="Remove"/>
+ <widgets xsi:type="model:Label" x="265" y="132">
+ <font size="32"/>
+ </widgets>
+ <hRuler/>
+ <vRuler/>
+ <font/>
+</model:Screen>
<feature
id="eu.etaxonomy.taxeditor"
label="Taxeditor Feature"
- version="2.0.0.v20090624-1625"
+ version="2.0.0.v20090630-1147"
provider-name="EDIT">
<description url="http://www.example.com/description">
id="eu.etaxonomy.taxeditor.application"
download-size="0"
install-size="0"
- version="2.0.0.v20090624-1625"
+ version="2.0.0.v20090630-1147"
unpack="false"/>
<plugin
id="eu.etaxonomy.taxeditor.editor"
download-size="0"
install-size="0"
- version="2.0.0.v20090624-1625"
+ version="2.0.0.v20090630-1147"
unpack="false"/>
<plugin
id="eu.etaxonomy.taxeditor.navigation"
download-size="0"
install-size="0"
- version="2.0.0.v20090624-1625"
+ version="2.0.0.v20090630-1147"
unpack="false"/>
<plugin
id="eu.etaxonomy.taxeditor.store"
download-size="0"
install-size="0"
- version="2.0.0.v20090624-1625"
+ version="2.0.0.v20090630-1147"
+ unpack="false"/>
+
+ <plugin
+ id="eu.etaxonomy.taxeditor.bulkeditor"
+ download-size="0"
+ install-size="0"
+ version="2.0.0.v20090630-1147"
unpack="false"/>
</feature>
Bundle-ManifestVersion: 2
Bundle-Name: EDIT Taxonomic Editor - Navigation Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.navigation;singleton:=true
-Bundle-Version: 2.0.0.v20090624-1625
+Bundle-Version: 2.0.0.v20090630-1147
Bundle-Activator: eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin
Bundle-Vendor: EDIT
Export-Package: eu.etaxonomy.taxeditor.navigation,
import org.apache.log4j.Logger;
import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.IOperationHistory;
import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.commands.operations.IUndoableOperation;
import org.eclipse.core.commands.operations.UndoContext;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
import org.eclipse.ui.navigator.CommonViewer;
import eu.etaxonomy.cdm.model.common.CdmBase;
*/
public class NavigationUtil extends AbstractUtility{
private static final Logger logger = Logger.getLogger(NavigationUtil.class);
- private static IStatusLineManager statusLineManager;
private static IUndoContext defaultUndoContext;
/**
}
}
- public static IOperationHistory getWorkbenchOperationHistory() {
- return TaxeditorEditorPlugin.getDefault().getWorkbench().
- getOperationSupport().getOperationHistory();
- }
-
public static IUndoContext getWorkbenchUndoContext() {
return TaxeditorEditorPlugin.getDefault().getWorkbench().
getOperationSupport().getUndoContext();
}
-
- public static void executeOperation(IUndoableOperation operation){
- try {
- IStatus status = getWorkbenchOperationHistory().execute(operation, getMonitor(),
- WorkspaceUndoUtil.getUIInfoAdapter(getShell()));
- String statusString = status.equals(Status.OK_STATUS) ? "completed" : "cancelled";
- setStatusLine(operation.getLabel() + " " + statusString + ".");
- } catch (ExecutionException e) {
- logger.error("Error executing operation: " + operation.getLabel(), e);
- }
- }
-
- private static IProgressMonitor getMonitor() {
- statusLineManager.setCancelEnabled(false);
- return statusLineManager.getProgressMonitor();
- }
-
- public static void setStatusLineManager(IStatusLineManager manager) {
- statusLineManager = manager;
- }
-
- public static void setStatusLine(String message) {
- statusLineManager.setMessage(message);
- }
-
/**
* Returns the selected taxon for referencing in context menus
\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.taxeditor.model.NameUtil;\r
+import eu.etaxonomy.taxeditor.model.NameHelper;\r
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;\r
import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;\r
import eu.etaxonomy.taxeditor.operations.MoveTaxonOperation;\r
if (childTaxonNode.getParent().equals(newParentTaxonNode)){\r
\r
MessageDialog.openError(NavigationUtil.getShell(), "Can't move taxon.",\r
- "'" + NameUtil.getDisplayName(childTaxonNode.getTaxon()) + "' sits above " +\r
- "'" + NameUtil.getDisplayName(newParentTaxonNode.getTaxon()) + "' " +\r
+ "'" + NameHelper.getDisplayName(childTaxonNode.getTaxon()) + "' sits above " +\r
+ "'" + NameHelper.getDisplayName(newParentTaxonNode.getTaxon()) + "' " +\r
"in the taxonomic hierarchy.");\r
\r
return Status.CANCEL_STATUS;\r
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
+import eu.etaxonomy.taxeditor.model.ImageResources;
import eu.etaxonomy.taxeditor.model.Resources;
import eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin;
*/
public class SearchBar extends WorkbenchWindowControlContribution{
private static final Logger logger = Logger.getLogger(SearchBar.class);
- private Composite searchComposite;
- private Text searchText;
- private Button searchButton;
+ private Text text_search;
+ private Button button_search;
private String srv;
private String defaultText = "Use \"*\" for wildcard searching";
+ private Button button_configure;
@Override
protected Control createControl(Composite parent) {
//parent.setLayout(new FillLayout());
- searchComposite = new Composite(parent, SWT.NONE);
+ Composite composite = new Composite(parent, SWT.NONE);
final GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 2;
+ gridLayout.numColumns = 3;
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.verticalSpacing = 0;
gridLayout.horizontalSpacing = 0;
- searchComposite.setLayout(gridLayout);
+ composite.setLayout(gridLayout);
// FIXME we have this here for debugging purposes, remove color once the layout of the search bar is correct
- searchComposite.setBackground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
+ composite.setBackground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
- searchText = new Text(searchComposite, SWT.SEARCH);
+ text_search = new Text(composite, SWT.SEARCH);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
- searchText.setLayoutData(gridData);
- searchText.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
- searchText.setText(defaultText);
+ text_search.setLayoutData(gridData);
+ text_search.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
+ text_search.setText(defaultText);
- searchText.addFocusListener(new FocusListener() {
+ text_search.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
- searchText.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOCUS));
- searchText.setText("");
+ text_search.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOCUS));
+ text_search.setText("");
}
public void focusLost(FocusEvent e) {
- if (searchText.getText() == "") {
- searchText.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
- searchText.setText(defaultText);
+ if (text_search.getText() == "") {
+ text_search.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
+ text_search.setText(defaultText);
}
}
});
- searchText.addKeyListener(new KeyAdapter() {
+ text_search.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
int key = e.keyCode;
if (key == SWT.CR) {
- openSearchResultsView(searchText);
+ openSearchResultsView(text_search);
} else {
setSearchButtonEnabled();
}
}
});
- searchButton = new Button(searchComposite, SWT.NONE);
- searchButton.setText("Search");
- searchButton.setEnabled(false);
- searchButton.addMouseListener(new MouseAdapter() {
+ button_configure = new Button(composite, SWT.DROP_DOWN);
+ button_configure.setImage(ImageResources.getImage(ImageResources.MOVE_ICON));
+
+ button_search = new Button(composite, SWT.PUSH);
+ button_search.setText("Search");
+ button_search.setEnabled(false);
+ button_search.addMouseListener(new MouseAdapter() {
// Populate search results resultsTable after clicking button
public void mouseUp(MouseEvent e) {
- openSearchResultsView(searchText);
+ openSearchResultsView(text_search);
}
});
- return searchComposite;
+ return composite;
}
protected void setSearchButtonEnabled() {
- if (searchText.getText().length() == 0) {
- searchButton.setEnabled(false);
+ if (text_search.getText().length() == 0) {
+ button_search.setEnabled(false);
} else {
- searchButton.setEnabled(true);
+ button_search.setEnabled(true);
}
}
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.editor.name.IterableSynonymyList;
-import eu.etaxonomy.taxeditor.model.NameUtil;
+import eu.etaxonomy.taxeditor.model.NameHelper;
/**
*
private String getSynonymyListDisplay(Taxon taxon) {
IterableSynonymyList synonymyList = new IterableSynonymyList(
taxon);
- String synonymyListDisplay = NameUtil
+ String synonymyListDisplay = NameHelper
.getDisplayName(taxon);
for (TaxonBase<?> synonymOrMisName : synonymyList) {
TaxonNameBase<?, ?> name = synonymOrMisName.getName();
if (name != null) {
synonymyListDisplay += "\n "
- + NameUtil.getDisplayName(name);
+ + NameHelper.getDisplayName(name);
}
}
return synonymyListDisplay;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
/**
* An action bar advisor is responsible for creating, adding, and disposing of
* the actions added to a workbench window. Each window will be populated with
// Registering also provides automatic disposal of the actions when
// the window is closed.
- NavigationUtil.setStatusLineManager(getActionBarConfigurer().getStatusLineManager());
+ StoreUtil.setStatusLineManager(getActionBarConfigurer().getStatusLineManager());
exitAction = ActionFactory.QUIT.create(window);
register(exitAction);
name="Datasource"
restorable="true">
</view>
+ <view
+ class="eu.etaxonomy.taxeditor.user.view.UserManagerView"
+ id="eu.etaxonomy.taxeditor.store.userManagerView"
+ name="User Manager"
+ restorable="true">
+ </view>
</extension>
<extension
point="org.eclipse.ui.menus">
label="Datasource"
style="push">
</command>
+ <command
+ commandId="eu.etaxonomy.taxeditor.store.operations.showUserManagerView"
+ label="User Manager"
+ style="push">
+ </command>
</menu>
</menu>
</menuContribution>
style="push">
</command>
</menuContribution>
+ <menuContribution
+ locationURI="DISABLEDtoolbar:org.eclipse.ui.main.toolbar">
+ <toolbar
+ id="eu.etaxonomy.taxeditor.store.authentication.toolbar">
+ <control
+ class="eu.etaxonomy.taxeditor.user.AuthenticatedUserBar">
+ </control>
+ </toolbar>
+ </menuContribution>
+ <menuContribution
+ locationURI="popup:eu.etaxonomy.taxeditor.store.userManagerView">
+ <command
+ commandId="eu.etaxonomy.taxeditor.store.createUser"
+ label="New"
+ style="push">
+ </command>
+ <command
+ commandId="eu.etaxonomy.taxeditor.store.editUser"
+ label="Edit"
+ style="push">
+ </command>
+ <separator
+ name="eu.etaxonomy.taxeditor.store.userManager.separator"
+ visible="true">
+ </separator>
+ <command
+ commandId="eu.etaxonomy.taxeditor.store.deleteUser"
+ label="Delete"
+ style="push">
+ </command>
+ </menuContribution>
</extension>
<extension
name="Window Menu Commands"
id="eu.etaxonomy.taxeditor.store.operations.showDatasourceView"
name="Show Datasource View">
</command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.handler.ShowUserManagerViewHandler"
+ id="eu.etaxonomy.taxeditor.store.operations.showUserManagerView"
+ name="Show User Manager View">
+ </command>
</extension>
<extension
name="Popup Menu Commands"
name="Delete Datasource">
</command>
</extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.user.handler.CreateUserHandler"
+ id="eu.etaxonomy.taxeditor.store.createUser"
+ name="Create User">
+ </command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.user.handler.EditUserHandler"
+ id="eu.etaxonomy.taxeditor.store.editUser"
+ name="Edit User">
+ </command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.user.handler.DeleteUserHandler"
+ id="eu.etaxonomy.taxeditor.store.deleteUser"
+ name="Delete User">
+ </command>
+ </extension>
<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension
import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
+ * TODO wrap in a LoginModule
+ * see: http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/spi/LoginModule.html
+ *
* @author n.hoffmann
* @created 16.06.2009
* @version 1.0
private static final Logger logger = Logger.getLogger(LoginDialog.class);
- private static Text passwordText;
- private static Text usernameText;
+ private static Text text_password;
+ private static Text text_username;
/**
* @param parentShell
userNameLabel.setText("Username");
// Textfield for the username
- usernameText = new Text(composite, SWT.BORDER);
- usernameText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text_username = new Text(composite, SWT.BORDER);
+ text_username.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
// Label for the password
final CLabel passwordLabel = new CLabel(composite, SWT.NONE);
passwordLabel.setText("Password");
// Textfield for the password
- passwordText = new Text(composite, SWT.BORDER);
- passwordText.setEchoChar('*');
- passwordText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text_password = new Text(composite, SWT.BORDER);
+ text_password.setEchoChar('*');
+ text_password.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
return composite;
*/
@Override
protected void okPressed() {
+ String username = text_username.getText().trim();
+ String password = text_password.getText().trim();
- String username = usernameText.getText().trim();
- String password = passwordText.getText().trim();
-
- // password is stored as salted md5 hash
- String passwordHash = password;
-
- UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, passwordHash);
+ UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
try{
- CdmStore.getAuthenticationManager().authenticate(token);
+ CdmStore.authenticate(token);
}catch(BadCredentialsException e){
logger.error("Bad credentials", e);
+ StoreUtil.warningDialog("Could not authenticate. Reason: Bad Credentials");
}catch(LockedException e){
logger.error("Account is locked", e);
+ StoreUtil.warningDialog("Could not authenticate. Reason: Account is locked");
}catch(IllegalArgumentException e){
logger.error("Null argument for either user or password", e);
}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.handler;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
+import eu.etaxonomy.taxeditor.user.view.UserManagerView;
+
+/**
+ * @author n.hoffmann
+ * @created 01.07.2009
+ * @version 1.0
+ */
+public class ShowUserManagerViewHandler extends AbstractHandler implements IHandler{
+ private static final Logger logger = Logger
+ .getLogger(ShowUserManagerViewHandler.class);
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ TaxeditorStorePlugin.getDefault().getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage().showView(UserManagerView.ID,
+ null, IWorkbenchPage.VIEW_VISIBLE);
+ } catch (PartInitException e) {
+ logger.error("Error opening user management view.", e);
+ }
+ return null;
+ }
+}
package eu.etaxonomy.taxeditor.model;
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.IUndoableOperation;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.FontRegistry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
import org.eclipse.ui.themes.ITheme;
import org.eclipse.ui.themes.IThemeManager;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
/**
* @version 1.0
*/
public abstract class AbstractUtility {
+ private static final Logger logger = Logger.getLogger(AbstractUtility.class);
+
+ protected static IStatusLineManager statusLineManager;
/**
* @return
messageBox.open();
}
+ public static IStatus executeOperation(IUndoableOperation operation){
+ if(getOperationHistory() == null){
+ throw new IllegalArgumentException("Ther is no operation history for this context");
+ }
+
+ try {
+ IStatus status = getOperationHistory().execute(operation, getMonitor(),
+ WorkspaceUndoUtil.getUIInfoAdapter(getShell()));
+ String statusString = status.equals(Status.OK_STATUS) ? "completed" : "cancelled";
+ setStatusLine(operation.getLabel() + " " + statusString + ".");
+ return status;
+ } catch (ExecutionException e) {
+ logger.error("Error executing operation: " + operation.getLabel(), e);
+ }
+ return null;
+ }
+
+ public static IOperationHistory getOperationHistory(){
+ return TaxeditorStorePlugin.getDefault().getWorkbench().
+ getOperationSupport().getOperationHistory();
+ }
+
+ public static void setStatusLine(String message) {
+ statusLineManager.setMessage(message);
+ }
+
+ protected static IProgressMonitor getMonitor() {
+ statusLineManager.setCancelEnabled(false);
+ return statusLineManager.getProgressMonitor();
+ }
}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.model;
+
+import org.apache.log4j.Logger;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author n.hoffmann
+ * @created 02.07.2009
+ * @version 1.0
+ */
+public class CommonHelper {
+ private static final Logger logger = Logger.getLogger(CommonHelper.class);
+
+ /**
+ *
+ * @param text
+ * @param listener
+ * @param string
+ */
+ public static void editTextWithoutTriggeringListeners(Text text, ModifyListener listener, String string){
+ text.removeModifyListener(listener);
+
+ String textString = string != null ? string : "";
+
+ text.setText(textString);
+ text.addModifyListener(listener);
+ }
+}
* @created 02.04.2009\r
* @version 1.0\r
*/\r
-public class DescriptionUtil {\r
+public class DescriptionHelper {\r
private static final Logger logger = Logger\r
- .getLogger(DescriptionUtil.class);\r
+ .getLogger(DescriptionHelper.class);\r
\r
/**\r
* Returns whatever the element's title cache equivalent is,\r
* @created 31.03.2009\r
* @version 1.0\r
*/\r
-public class ImagesUtil {\r
+public class ImagesHelper {\r
\r
public static Set<ImageFile> getImages(TaxonDescription description){\r
Set<ImageFile> images = new HashSet<ImageFile>();\r
+++ /dev/null
-/**\r
-* Copyright (C) 2007 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
-\r
-package eu.etaxonomy.taxeditor.model;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-\r
-/**\r
- * Retrieves the elements of a <code>Taxon</code>'s synonymy list, including misapplied names,\r
- * using an iterator. \r
- * <p> \r
- * Note: does not return an entry for the <code>Taxon</code> itself.\r
- * </p>\r
- * \r
- * @author p.ciardelli\r
- * @created 09.05.2008\r
- * @version 1.0\r
- */\r
-@SuppressWarnings("unchecked")\r
-public class IterableSynonymyList implements Iterable<TaxonBase> {\r
- \r
- private Taxon taxon;\r
-\r
- public IterableSynonymyList(Taxon taxon) {\r
- this.taxon = taxon;\r
- }\r
-\r
- public Iterator<TaxonBase> iterator() {\r
- return new TaxonIterator(taxon);\r
- }\r
- \r
- class TaxonIterator implements Iterator<TaxonBase> {\r
-\r
- List<TaxonBase> synonymyList;\r
- int index = 0;\r
- \r
- public TaxonIterator(Taxon taxon) {\r
- synonymyList = new ArrayList<TaxonBase>();\r
- HomotypicalGroup homotypicGroup = taxon.getHomotypicGroup();\r
- \r
- if (homotypicGroup != null) {\r
- List<Synonym> homotypicSynonyms = homotypicGroup.getSynonymsInGroup(taxon.getSec());\r
- for (Synonym synonym : homotypicSynonyms) {\r
-\r
- // Make sure synonym belongs to the taxon\r
- if (synonym.getAcceptedTaxa().contains(taxon)) {\r
- synonymyList.add(synonym);\r
- }\r
- }\r
- }\r
- \r
- List<HomotypicalGroup> heterotypicGroups = taxon.getHeterotypicSynonymyGroups();\r
- for (HomotypicalGroup heterotypicGroup : heterotypicGroups) {\r
- \r
- // Make sure this is not the taxon's homotypic group\r
- if (!heterotypicGroup.equals(homotypicGroup)) {\r
- \r
- List<Synonym> heterotypicSynonyms = heterotypicGroup.\r
- getSynonymsInGroup(taxon.getSec());\r
- for (Synonym synonym : heterotypicSynonyms) {\r
-\r
- // Make sure synonym belongs to the taxon\r
- if (synonym.getAcceptedTaxa().contains(taxon)) {\r
- synonymyList.add(synonym);\r
- }\r
- }\r
- }\r
- }\r
- \r
- Set<Taxon> misappliedNames = taxon.getMisappliedNames();\r
- for (Taxon misappliedName : misappliedNames) {\r
- synonymyList.add(misappliedName);\r
- }\r
- \r
- }\r
-\r
- public boolean hasNext() {\r
- if (synonymyList.size() == index) {\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- public TaxonBase<?> next() {\r
- TaxonBase<?> next = synonymyList.get(index);\r
- index++;\r
- return next;\r
- }\r
-\r
- public void remove() {}\r
- }\r
-}\r
* @created 18.03.2009
* @version 1.0
*/
-public class NameUtil {
+public class NameHelper {
@SuppressWarnings("unchecked")
public static String getDisplayName(TaxonNameBase name){
* @created 22.04.2009
* @version 1.0
*/
-public class SynonymUtil {
+public class SynonymHelper {
/**
* Creates a basionym relationship between basionymName and
}
// Swap taxon and synonym
- if (NameUtil.isNameHomotypic(newSynonym.getName(), newTaxon)) {
+ if (NameHelper.isNameHomotypic(newSynonym.getName(), newTaxon)) {
newTaxon.addSynonym(newSynonym, SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF());
} else {
newTaxon.addSynonym(newSynonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
// Move the other synonyms from old accepted taxon to new accepted taxon
for (Synonym synonym : oldTaxon.getSynonyms()) {
SynonymRelationshipType synRelType = SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF();
- if (NameUtil.isNameHomotypic(synonym.getName(), newTaxon) != true) {
+ if (NameHelper.isNameHomotypic(synonym.getName(), newTaxon) != true) {
synRelType = SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF();
}
newTaxon.addSynonym(synonym, synRelType);
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.model;
+
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author n.hoffmann
+ * @created 01.07.2009
+ * @version 1.0
+ */
+public class TaxeditorLoginModule implements LoginModule {
+ private static final Logger logger = Logger
+ .getLogger(TaxeditorLoginModule.class);
+
+ /* (non-Javadoc)
+ * @see javax.security.auth.spi.LoginModule#abort()
+ */
+ public boolean abort() throws LoginException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.security.auth.spi.LoginModule#commit()
+ */
+ public boolean commit() throws LoginException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.security.auth.spi.LoginModule#initialize(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, java.util.Map, java.util.Map)
+ */
+ public void initialize(Subject subject, CallbackHandler callbackHandler,
+ Map<String, ?> sharedState, Map<String, ?> options) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see javax.security.auth.spi.LoginModule#login()
+ */
+ public boolean login() throws LoginException {
+
+// Shell shell = TaxeditorStorePlugin.getDefault().getWorkbench()
+// .getActiveWorkbenchWindow().getShell();
+//
+// LoginDialog loginDialog = new LoginDialog(shell);
+// token = loginDialog.open();
+//
+// Authentication authentication = CdmStore.getAuthenticationManager().authenticate(token);
+// SecurityContextHolder.getContext().setAuthentication(authentication);
+//
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.security.auth.spi.LoginModule#logout()
+ */
+ public boolean logout() throws LoginException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+}
* @created 25.03.2009
* @version 1.0
*/
-public class TaxonUtil {
+public class TaxonHelper {
private static final Logger logger = Logger
- .getLogger(TaxonUtil.class);
+ .getLogger(TaxonHelper.class);
/**
* @created 18.03.2009
* @version 1.0
*/
-public class TimeUtil {
+public class TimeHelper {
/**
* Converts a <code>String</code> whose format is either a valid year
* or two valid years with the format "XXXX-XXXX" into a TimePeriod.
this.postOperationEnabled = postOperationEnabled;\r
}\r
\r
+ /**\r
+ * @param label\r
+ * @param undoContext\r
+ * @param postOperationEnabled2\r
+ */\r
+ public AbstractPostOperation(String label, IUndoContext undoContext,\r
+ IPostOperationEnabled postOperationEnabled) {\r
+ this(label, undoContext);\r
+ this.postOperationEnabled = postOperationEnabled;\r
+ }\r
+\r
/**\r
* This method will try to call the post operation on a possibly registered\r
* IPostOperationEnabled implementor. Objects that were affected by the operation \r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonUtil;\r
+import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
\r
/**\r
* @author n.hoffmann\r
super(label, undoContext, taxon, postOperationEnabled);\r
this.relatedTaxon = relatedTaxon;\r
\r
- this.taxonRelationship = TaxonUtil.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
+ this.taxonRelationship = TaxonHelper.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
this.oldRelationshipType = taxonRelationship.getType();\r
this.newRelationshipType = type;\r
}\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonUtil;\r
+import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
\r
/**\r
* @author p.ciardelli\r
IPostOperationEnabled editor) {\r
super(label, undoContext, taxon, editor);\r
\r
- this.taxonRelationship = TaxonUtil.getRelationshipBetweenTwoTaxa(concept, taxon);\r
+ this.taxonRelationship = TaxonHelper.getRelationshipBetweenTwoTaxa(concept, taxon);\r
this.oldRelationshipType = taxonRelationship.getType();\r
\r
this.concept = concept;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.model.SynonymUtil;\r
+import eu.etaxonomy.taxeditor.model.SynonymHelper;\r
\r
/**\r
* @author p.ciardelli\r
\r
TaxonNameBase<?, ?> oldSynonymName = synonym.getName();\r
// TODO replace w method from cdmlib\r
- SynonymUtil.setGroupBasionym(oldSynonymName);\r
+ SynonymHelper.setGroupBasionym(oldSynonymName);\r
\r
return postExecute(synonym);\r
}\r
import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
import eu.etaxonomy.cdm.model.media.ImageFile;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.model.ImagesUtil;\r
+import eu.etaxonomy.taxeditor.model.ImagesHelper;\r
\r
/**\r
* @author p.ciardelli\r
public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
\r
- ImagesUtil.addTaxonImage(taxon, description, imageFile);\r
+ ImagesHelper.addTaxonImage(taxon, description, imageFile);\r
\r
return postExecute(null);\r
}\r
public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
\r
- ImagesUtil.addTaxonImage(taxon, description, imageFile);\r
+ ImagesHelper.addTaxonImage(taxon, description, imageFile);\r
\r
return postExecute(null);\r
}\r
public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
\r
- ImagesUtil.removeTaxonImage(taxon, description, imageFile);\r
+ ImagesHelper.removeTaxonImage(taxon, description, imageFile);\r
\r
return postExecute(null);\r
}\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonUtil;\r
+import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
\r
/**\r
* Deletes a relation between two taxa. \r
\r
this.relatedTaxon = relatedTaxon;\r
\r
- relationship = TaxonUtil.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
+ relationship = TaxonHelper.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
\r
relationshipType = relationship.getType();\r
\r
import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
import eu.etaxonomy.cdm.model.media.ImageFile;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.model.ImagesUtil;\r
+import eu.etaxonomy.taxeditor.model.ImagesHelper;\r
\r
/**\r
* @author p.ciardelli\r
public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
\r
- ImagesUtil.removeTaxonImage(taxon, description, imageFile);\r
+ ImagesHelper.removeTaxonImage(taxon, description, imageFile);\r
\r
\r
return postExecute(null);\r
public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
\r
- ImagesUtil.addTaxonImage(taxon, description, imageFile);\r
+ ImagesHelper.addTaxonImage(taxon, description, imageFile);\r
\r
return postExecute(null);\r
}\r
*/
public DeleteTaxonomicTreeOperation(String label, IUndoContext undoContext,
TaxonomicTree taxonomicTree) {
- super(label, undoContext, null);
+ super(label, undoContext);
this.taxonomicTree = taxonomicTree;
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.operations;
+
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author n.hoffmann
+ * @created 02.07.2009
+ * @version 1.0
+ */
+public class DeleteUserOperation extends AbstractPostOperation {
+
+ private static final Logger logger = Logger
+ .getLogger(DeleteUserOperation.class);
+
+ private UUID userUuid;
+
+ private User user;
+
+ /**
+ * @param label
+ * @param undoContext
+ * @param parentNodeUuid
+ * @param postOperationEnabled
+ */
+ public DeleteUserOperation(String label, IUndoContext undoContext,
+ UUID userUuid, IPostOperationEnabled postOperationEnabled) {
+ super(label, undoContext, postOperationEnabled);
+
+ this.userUuid = userUuid;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ */
+ @Override
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+
+ ConversationHolder conversation = CdmStore.NewTransactionalConversation();
+ user = CdmStore.getUserService().findByUuid(userUuid);
+ CdmStore.getUserService().delete(user);
+ conversation.commit();
+
+ return postExecute(null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ */
+ @Override
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+
+ return execute(monitor, info);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ */
+ @Override
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+
+ ConversationHolder conversation = CdmStore.NewTransactionalConversation();
+ // store uuid for consecutive undo/redo steps
+ userUuid = CdmStore.getUserService().save(user);
+ conversation.commit();
+
+ return postExecute(null);
+ }
+}
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.taxeditor.model.TaxonUtil;\r
+import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
\r
/**\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.model.SynonymUtil;\r
+import eu.etaxonomy.taxeditor.model.SynonymHelper;\r
\r
/**\r
* @author p.ciardelli\r
\r
TaxonNameBase<?, ?> oldSynonymName = synonym.getName();\r
// TODO replace w method from cdmlib\r
- SynonymUtil.removeGroupBasionym(oldSynonymName);\r
+ SynonymHelper.removeGroupBasionym(oldSynonymName);\r
\r
return postExecute(synonym);\r
}\r
throws ExecutionException {\r
// TODO replace w method from cdmlib\r
// FIXME this is also old code: reimplement\r
- SynonymUtil.setGroupBasionym(synonym.getName());\r
+ SynonymHelper.setGroupBasionym(synonym.getName());\r
\r
return postExecute(synonym);\r
}\r
import java.util.List;
import java.util.UUID;
+import javax.security.auth.spi.LoginModule;
+
import org.apache.log4j.Logger;
+import org.springframework.security.Authentication;
+import org.springframework.security.context.SecurityContextHolder;
import org.springframework.security.providers.ProviderManager;
+import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.INameService;
import eu.etaxonomy.cdm.api.service.IReferenceService;
import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;
import eu.etaxonomy.cdm.api.service.config.impl.TaxonServiceConfiguratorImpl;
import eu.etaxonomy.cdm.database.DbSchemaValidation;
import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.reference.Article;
import eu.etaxonomy.cdm.model.reference.Book;
import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
import eu.etaxonomy.cdm.persistence.query.MatchMode;
import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
+import eu.etaxonomy.taxeditor.model.TaxeditorLoginModule;
+import eu.etaxonomy.taxeditor.user.AuthenticatedUserBar;
/**
* This implementation of ICdmDataRepository depends on hibernate sessions to store the data correctly
private ConversationHolder globalReadOnlyConversation;
private static DbSchemaValidation dbSchemaValidation;
+
+ private static LoginModule loginModule;
/**
*
public static ProviderManager getAuthenticationManager() { return getDefault().getApplicationControllerInternal().getAuthenticationManager();}
+ public static IUserService getUserService() { return getDefault().getApplicationControllerInternal().getUserService(); }
/**
* @param searchText
return nomReferenceTypeMap;
}
+ /**
+ * TODO implement LoginModule to handle the whole login stuff
+ *
+ * @param token
+ */
+ public static void authenticate(UsernamePasswordAuthenticationToken token){
+ Authentication authentication = CdmStore.getAuthenticationManager().authenticate(token);
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ // TODO register a listener on LoginModule instead of calling a set method here
+// AuthenticatedUserBar.setAuthenticatedUser(getAuthenticatedUser().getUsername());
+ }
+
+ public static User getAuthenticatedUser(){
+ Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+
+ if(authentication != null
+ && authentication.getPrincipal() != null
+ && authentication.getPrincipal() instanceof User){
+ return (User)authentication.getPrincipal();
+ }
+ return null;
+ }
+
+ /**
+ * incomplete! do note use!
+ */
+ public static LoginModule getLoginModule(){
+ if(loginModule == null){
+ loginModule = new TaxeditorLoginModule();
+ }
+ return loginModule;
+ }
}
import java.util.UUID;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.jface.action.IStatusLineManager;
+
import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
/**
* @author n.hoffmann
// logger.warn("Couldn't find taxon with UUID " + uuid);
// return null;
// }
- }}
+ }
+
+ public static IOperationHistory getOperationHistory() {
+ return TaxeditorStorePlugin.getDefault().getWorkbench().
+ getOperationSupport().getOperationHistory();
+ }
+
+ public static void setStatusLineManager(IStatusLineManager manager) {
+ statusLineManager = manager;
+ }
+
+
+ public static IUndoContext getUndoContext(){
+ return IOperationHistory.GLOBAL_UNDO_CONTEXT;
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.CellEditor.LayoutData;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
+
+/**
+ * @author n.hoffmann
+ * @created 01.07.2009
+ * @version 1.0
+ */
+public class AuthenticatedUserBar extends WorkbenchWindowControlContribution {
+ private static final Logger logger = Logger
+ .getLogger(AuthenticatedUserBar.class);
+
+ private static CLabel label_authenticatedUser;
+
+ private Composite composite;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.action.ControlContribution#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Control createControl(Composite parent) {
+ composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+
+ CLabel label = new CLabel(composite, SWT.NULL);
+ label.setText("Authenticated as: ");
+
+ label_authenticatedUser = new CLabel(composite, SWT.NULL);
+ LayoutData layoutData = new LayoutData();
+// layoutData.minimumWidth = 30;
+ label_authenticatedUser.setLayoutData(layoutData);
+ return composite;
+ }
+
+ /**
+ * TODO implement a LoginModule and register as a listener there
+ *
+ * @param username
+ */
+ public static void setAuthenticatedUser(String username){
+ label_authenticatedUser.setText(username);
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.handler;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.taxeditor.user.view.UserManagerView;
+import eu.etaxonomy.taxeditor.user.wizard.UserWizard;
+
+/**
+ * @author n.hoffmann
+ * @created 02.07.2009
+ * @version 1.0
+ */
+public class CreateUserHandler extends AbstractHandler {
+ private static final Logger logger = Logger
+ .getLogger(CreateUserHandler.class);
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Shell shell = HandlerUtil.getActiveShell(event);
+
+ UserManagerView part = (UserManagerView) HandlerUtil.getActivePart(event);
+ UserWizard wizard = new UserWizard(part);
+
+ WizardDialog dialog = new WizardDialog(shell, wizard);
+ dialog.open();
+ return null;
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.handler;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.core.commands.operations.IUndoableOperation;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.operations.DeleteUserOperation;
+import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ * @author n.hoffmann
+ * @created 02.07.2009
+ * @version 1.0
+ */
+public class DeleteUserHandler extends AbstractHandler {
+ private static final Logger logger = Logger
+ .getLogger(DeleteUserHandler.class);
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ ISelection menuSelection = HandlerUtil.getActiveMenuSelection(event);
+ User user = (User) ((StructuredSelection) menuSelection).getFirstElement();
+
+ // TODO refresh the list -> set postOperationEnabled to the real deal
+ IPostOperationEnabled postOperationEnabled = (IPostOperationEnabled) HandlerUtil.getActivePart(event);
+
+ IUndoableOperation operation = null;
+ try {
+ operation = new DeleteUserOperation(event.getCommand().getName(),
+ StoreUtil.getUndoContext(), user.getUuid(), postOperationEnabled);
+
+ StoreUtil.executeOperation(operation);
+ } catch (NotDefinedException e) {
+ logger.warn("Command name not set");
+ }
+
+ return null;
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.handler;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.user.view.UserManagerView;
+import eu.etaxonomy.taxeditor.user.wizard.UserWizard;
+
+/**
+ * @author n.hoffmann
+ * @created 02.07.2009
+ * @version 1.0
+ */
+public class EditUserHandler extends AbstractHandler {
+ private static final Logger logger = Logger
+ .getLogger(EditUserHandler.class);
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection menuSelection = HandlerUtil.getActiveMenuSelection(event);
+ User user = (User) ((StructuredSelection) menuSelection).getFirstElement();
+
+ UserManagerView part = (UserManagerView) HandlerUtil.getActivePart(event);
+
+ UserWizard wizard = new UserWizard(part, user);
+ WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard);
+ dialog.open();
+
+ return null;
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.view;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+import eu.etaxonomy.cdm.model.common.User;
+
+/**
+ * @author n.hoffmann
+ * @created 01.07.2009
+ * @version 1.0
+ */
+public class UserManagerContentProvider implements IStructuredContentProvider {
+ private static final Logger logger = Logger
+ .getLogger(UserManagerContentProvider.class);
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ List<User> users = (List<User>) inputElement;
+ return users.toArray();
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.view;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author n.hoffmann
+ * @created 01.07.2009
+ * @version 1.0
+ */
+public class UserManagerLabelProvider extends LabelProvider {
+ private static final Logger logger = Logger
+ .getLogger(UserManagerLabelProvider.class);
+
+ public Image getImage(Object element) {
+ return null;
+ }
+
+ public String getText(Object element) {
+ User user = (User) element;
+
+ User authenticatedUser = CdmStore.getAuthenticatedUser();
+
+ return user.equals(authenticatedUser) ? "* " + user.getUsername() : user.getUsername();
+ }
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.view;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.part.ViewPart;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author n.hoffmann
+ * @created 01.07.2009
+ * @version 1.0
+ */
+public class UserManagerView extends ViewPart implements IConversationEnabled, IPostOperationEnabled{
+ private static final Logger logger = Logger
+ .getLogger(UserManagerView.class);
+
+ public static String ID = "eu.etaxonomy.taxeditor.store.userManagerView";
+
+ private ListViewer listViewer;
+
+ private ConversationHolder conversation;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+
+ conversation = CdmStore.NewTransactionalConversation();
+
+ FillLayout fillLayout = new FillLayout();
+ fillLayout.marginWidth = 0;
+ fillLayout.marginHeight = 0;
+ fillLayout.type = SWT.VERTICAL;
+ parent.setLayout(fillLayout);
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ composite.setLayout(layout);
+
+
+ listViewer = new ListViewer(composite);
+ Control control = listViewer.getControl();
+ control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ // register context menu
+ MenuManager menuMgr = new MenuManager();
+ menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+ getSite().registerContextMenu(menuMgr, listViewer);
+
+ Menu menu = menuMgr.createContextMenu(control);
+ control.setMenu(menu);
+
+ listViewer.setContentProvider(new UserManagerContentProvider());
+ listViewer.setLabelProvider(new UserManagerLabelProvider());
+
+ listViewer.setInput(getAllUser());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ conversation.bind();
+ listViewer.getControl().setFocus();
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
+ */
+ public boolean postOperation(CdmBase objectAffectedByOperation) {
+ listViewer.setInput(getAllUser());
+ listViewer.refresh();
+
+ return true;
+ }
+
+ /**
+ *
+ * @return
+ */
+ private List<User> getAllUser(){
+ return CdmStore.getUserService().list(100000, 0);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
+ */
+ public ConversationHolder getConversationHolder() {
+ return conversation;
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
+ */
+ public void update(CdmDataChangeMap changeEvents) {
+ // data changes can only be generate here at the moment
+ }
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.Wizard;
+
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.user.view.UserManagerView;
+
+/**
+ * @author n.hoffmann
+ * @created 02.07.2009
+ * @version 1.0
+ */
+public class UserWizard extends Wizard {
+ private static final Logger logger = Logger.getLogger(UserWizard.class);
+ private User user;
+ private UserWizardPage page;
+ private UserManagerView view;
+
+ public UserWizard(UserManagerView view){
+ this.view = view;
+ setWindowTitle("User Wizard");
+ }
+
+ public UserWizard(UserManagerView view, User user){
+ this(view);
+ this.user = user;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#addPages()
+ */
+ @Override
+ public void addPages() {
+ super.addPages();
+
+ page = new UserWizardPage(user);
+
+ addPage(page);
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+
+ CdmStore.getUserService().saveOrUpdate(page.getUser());
+ view.getConversationHolder().commit(true);
+
+ return view.postOperation(user);
+ }
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 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.user.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.model.CommonHelper;
+import eu.etaxonomy.taxeditor.model.Resources;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author n.hoffmann
+ * @created 02.07.2009
+ * @version 1.0
+ */
+public class UserWizardPage extends WizardPage implements ModifyListener{
+ private Composite composite;
+ private Text text_username;
+ private Text text_oldPassword;
+ private Text text_password;
+ private Text text_passwordRepeat;
+ private User user;
+ private boolean newMode = false;
+ private Group group_person;
+ private Text text_personFirstName;
+ private Text text_personLastName;
+ private Text text_userEmail;
+
+ /**
+ * @param pageName
+ */
+ protected UserWizardPage(User user) {
+ super("USER_WIZARD_PAGE");
+
+ this.user = user;
+
+ if(user == null){
+ setTitle("Create new user");
+ setDescription("Enter information for new user.");
+ newMode = true;
+ this.user = User.NewInstance(null, null);
+ }else{
+ setTitle("Edit existing user");
+ setDescription("Edit information for the selected user.");
+
+ }
+ }
+
+ private static final Logger logger = Logger.getLogger(UserWizardPage.class);
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl(Composite parent) {
+ // right - edit Form
+ composite = new Composite(parent, SWT.NULL);
+ GridLayout compositeLayout = new GridLayout();
+ compositeLayout.numColumns = 2;
+ composite.setLayout(compositeLayout);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ CLabel label_username = new CLabel(composite, SWT.NULL);
+ label_username.setText("Username");
+ text_username = new Text(composite, SWT.BORDER);
+ text_username.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ text_username.addModifyListener(this);
+
+ if(! newMode){
+ text_username.setEditable(false);
+ text_username.setBackground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
+ }
+
+ if(newMode){
+ createPasswordFieldsNew(composite);
+ }else if(CdmStore.getAuthenticatedUser().equals(user)){
+ createPasswordFieldsEdit(composite);
+ }
+
+ group_person = createPersonGroup(composite);
+ group_person.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
+
+ setControl(composite);
+
+ init();
+ }
+
+ private void createPasswordFieldsEdit(Composite parent){
+ CLabel label_oldPassword = new CLabel(parent, SWT.NULL);
+ label_oldPassword.setText("Old Password");
+ text_oldPassword = new Text(parent, SWT.BORDER);
+ text_oldPassword.setEchoChar('*');
+ text_oldPassword.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ text_oldPassword.addModifyListener(this);
+
+ createPasswordFieldsNew(parent);
+ }
+
+ private void createPasswordFieldsNew(Composite parent){
+ CLabel label_password = new CLabel(parent, SWT.NULL);
+ label_password.setText("Password");
+
+ text_password = new Text(parent, SWT.BORDER);
+ text_password.setEchoChar('*');
+ text_password.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ text_password.addModifyListener(this);
+
+ new CLabel(parent, SWT.NULL);
+ text_passwordRepeat = new Text(parent, SWT.BORDER);
+ text_passwordRepeat.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ text_passwordRepeat.setEchoChar('*');
+ text_passwordRepeat.addModifyListener(this);
+ }
+
+ private Group createPersonGroup(Composite parent){
+
+ Group group = new Group(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ group.setLayout(layout);
+
+ CLabel label_personFirstName = new CLabel(group, SWT.NULL);
+ label_personFirstName.setText("First Name");
+ text_personFirstName = new Text(group, SWT.BORDER);
+ text_personFirstName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text_personFirstName.addModifyListener(this);
+
+ CLabel label_personLastName = new CLabel(group, SWT.NULL);
+ label_personLastName.setText("Last Name");
+ text_personLastName = new Text(group, SWT.BORDER);
+ text_personLastName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text_personLastName.addModifyListener(this);
+
+
+ CLabel label_userEmail = new CLabel(group, SWT.NULL);
+ label_userEmail.setText("Email");
+ text_userEmail = new Text(group, SWT.BORDER);
+ text_userEmail.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text_userEmail.addModifyListener(this);
+
+ return group;
+ }
+
+ /**
+ *
+ */
+ private void init() {
+ CommonHelper.editTextWithoutTriggeringListeners(text_username, this, user.getUsername());
+ if(user.getPerson() == null){
+ user.setPerson(Person.NewInstance());
+ }else{
+ CommonHelper.editTextWithoutTriggeringListeners(text_personFirstName, this, user.getPerson().getFirstname());
+ CommonHelper.editTextWithoutTriggeringListeners(text_personLastName, this, user.getPerson().getLastname());
+ CommonHelper.editTextWithoutTriggeringListeners(text_userEmail, this, user.getEmailAddress());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
+ */
+ public void modifyText(ModifyEvent e) {
+ if(newMode){
+ user.setUsername(text_username.getText().trim());
+ user.setPassword(text_password.getText());
+ }
+ user.getPerson().setFirstname(text_personFirstName.getText());
+ user.getPerson().setLastname(text_personLastName.getText());
+ user.setEmailAddress(text_userEmail.getText());
+ }
+
+ /**
+ * @return
+ */
+ public User getUser() {
+ return user;
+ }
+}
<repository name='file:/Users/nho/Documents/workspace/taxeditor/taxeditor-updateSite/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1.0.0'>
<properties size='2'>
<property name='p2.compressed' value='false'/>
- <property name='p2.timestamp' value='1245854419803'/>
+ <property name='p2.timestamp' value='1246356310911'/>
</properties>
<mappings size='3'>
<rule filter='(& (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
<rule filter='(& (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
<rule filter='(& (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
</mappings>
- <artifacts size='82'>
+ <artifacts size='91'>
<artifact classifier='osgi.bundle' id='org.eclipse.osgi.services' version='3.1.200.v20071203'>
<properties size='3'>
<property name='artifact.size' value='63665'/>
<property name='download.size' value='1702'/>
</properties>
</artifact>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.bulkeditor' version='2.0.0.v20090630-1147'>
+ <properties size='3'>
+ <property name='artifact.size' value='29786'/>
+ <property name='download.size' value='29786'/>
+ <property name='download.contentType' value='application/zip'/>
+ </properties>
+ </artifact>
<artifact classifier='osgi.bundle' id='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090624-1200'>
<properties size='3'>
<property name='artifact.size' value='49600336'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
- <artifact classifier='osgi.bundle' id='org.eclipse.ui' version='3.4.2.M20090204-0800'>
+ <artifact classifier='osgi.bundle' id='org.eclipse.core.resources' version='3.4.2.R34x_v20090126'>
<properties size='3'>
- <property name='artifact.size' value='145333'/>
- <property name='download.size' value='145333'/>
+ <property name='artifact.size' value='700059'/>
+ <property name='download.size' value='700059'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
- <artifact classifier='osgi.bundle' id='org.eclipse.core.resources' version='3.4.2.R34x_v20090126'>
+ <artifact classifier='osgi.bundle' id='org.eclipse.ui' version='3.4.2.M20090204-0800'>
<properties size='3'>
- <property name='artifact.size' value='700059'/>
- <property name='download.size' value='700059'/>
+ <property name='artifact.size' value='145333'/>
+ <property name='download.size' value='145333'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'>
+ <properties size='3'>
+ <property name='artifact.size' value='70172392'/>
+ <property name='download.size' value='70172392'/>
+ <property name='download.contentType' value='application/zip'/>
+ </properties>
+ </artifact>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.editor' version='2.0.0.v20090630-1147'>
+ <properties size='3'>
+ <property name='artifact.size' value='819666'/>
+ <property name='download.size' value='819666'/>
+ <property name='download.contentType' value='application/zip'/>
+ </properties>
+ </artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.ui.win32' version='3.2.100.v20080408-0800'>
<properties size='3'>
<property name='artifact.size' value='23398'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.navigation' version='2.0.0.v20090630-1147'>
+ <properties size='3'>
+ <property name='artifact.size' value='70492'/>
+ <property name='download.size' value='70492'/>
+ <property name='download.contentType' value='application/zip'/>
+ </properties>
+ </artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.ui.carbon' version='4.0.0.I20080610-1200'>
<properties size='3'>
<property name='artifact.size' value='15178'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
+ <artifact classifier='org.eclipse.update.feature' id='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'>
+ <properties size='2'>
+ <property name='artifact.size' value='761'/>
+ <property name='download.size' value='761'/>
+ </properties>
+ </artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.ui.forms' version='3.3.103.v20081027_34x'>
<properties size='3'>
<property name='artifact.size' value='298080'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.store' version='2.0.0.v20090630-1147'>
+ <properties size='3'>
+ <property name='artifact.size' value='331113'/>
+ <property name='download.size' value='331113'/>
+ <property name='download.contentType' value='application/zip'/>
+ </properties>
+ </artifact>
<artifact classifier='org.eclipse.update.feature' id='eu.etaxonomy.taxeditor.feature.dependencies' version='2.0.0.v20090617-1416'>
<properties size='2'>
<property name='artifact.size' value='1653'/>
<property name='download.size' value='1653'/>
</properties>
</artifact>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.store' version='2.0.0.v20090630-1147'>
+ <properties size='3'>
+ <property name='artifact.size' value='680310'/>
+ <property name='download.size' value='680310'/>
+ <property name='download.contentType' value='application/zip'/>
+ </properties>
+ </artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.core.net' version='1.1.0.I20080604'>
<properties size='3'>
<property name='artifact.size' value='55332'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.application' version='2.0.0.v20090630-1147'>
+ <properties size='3'>
+ <property name='artifact.size' value='251021'/>
+ <property name='download.size' value='251021'/>
+ <property name='download.contentType' value='application/zip'/>
+ </properties>
+ </artifact>
<artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.editor' version='2.0.0.v20090617-1416'>
<properties size='3'>
<property name='artifact.size' value='804890'/>
<property name='download.contentType' value='application/zip'/>
</properties>
</artifact>
+ <artifact classifier='org.eclipse.update.feature' id='eu.etaxonomy.taxeditor' version='2.0.0.v20090630-1147'>
+ <properties size='2'>
+ <property name='artifact.size' value='846'/>
+ <property name='download.size' value='846'/>
+ </properties>
+ </artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.core.filesystem.macosx' version='1.0.0.v20080604-1400'>
<properties size='3'>
<property name='artifact.size' value='9594'/>
<repository name='file:/Users/nho/Documents/workspace/taxeditor/taxeditor-updateSite/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1.0.0'>
<properties size='2'>
<property name='p2.compressed' value='false'/>
- <property name='p2.timestamp' value='1245854419810'/>
+ <property name='p2.timestamp' value='1246356310919'/>
</properties>
<references size='2'>
<repository url='http://wp5.e-taxonomy.eu/taxeditor/update' type='1' options='0'/>
<repository url='http://wp5.e-taxonomy.eu/taxeditor/update' type='0' options='0'/>
</references>
- <units size='110'>
+ <units size='120'>
<unit id='eu.etaxonomy.taxeditor.application' version='2.0.0.v20090603_1756'>
<update id='eu.etaxonomy.taxeditor.application' range='[0.0.0,2.0.0.v20090603_1756)' severity='0'/>
<properties size='2'>
<touchpointData size='1'>
<instructions size='2'>
<instruction key='manifest'>
- Bundle-ManifestVersion: 2
Bundle-Version: 2.1.0.v20090624-1200
Export-Package: eu.etaxonomy.cdm,eu.etaxonomy.cdm.api.application,eu.etaxonomy.cdm.api.application.eclipse,eu.etaxonomy.cdm.api.conversation,eu.etaxonomy.cdm.api.service,eu.etaxonomy.cdm.api.service.config,eu.etaxonomy.cdm.api.service.config.impl,eu.etaxonomy.cdm.api.service.pager,eu.etaxonomy.cdm.api.service.pager.impl,eu.etaxonomy.cdm.aspectj,eu.etaxonomy.cdm.common,eu.etaxonomy.cdm.database,eu.etaxonomy.cdm.database.types,eu.etaxonomy.cdm.datagenerator,eu.etaxonomy.cdm.ext,eu.etaxonomy.cdm.hibernate,eu.etaxonomy.cdm.io.abcd206,eu.etaxonomy.cdm.io.berlinModel,eu.etaxonomy.cdm.io.berlinModel.in,eu.etaxonomy.cdm.io.berlinModel.out,eu.etaxonomy.cdm.io.berlinModel.out.mapper,eu.etaxonomy.cdm.io.common,eu.etaxonomy.cdm.io.excel.common,eu.etaxonomy.cdm.io.excel.distribution,eu.etaxonomy.cdm.io.excel.taxa,eu.etaxonomy.cdm.io.faunaEuropaea,eu.etaxonomy.cdm.io.jaxb,eu.etaxonomy.cdm.io.sdd,eu.etaxonomy.cdm.io.synthesys,eu.etaxonomy.cdm.io.taxonx,eu.etaxonomy.cdm.io.tcsrdf,eu.etaxonomy.cdm.io.tcsxml,eu.etaxonomy.cdm.io.tcsxml.in,eu.etaxonomy.cdm.io.tcsxml.out,eu.etaxonomy.cdm.jaxb,eu.etaxonomy.cdm.model.agent,eu.etaxonomy.cdm.model.common,eu.etaxonomy.cdm.model.common.init,eu.etaxonomy.cdm.model.description,eu.etaxonomy.cdm.model.location,eu.etaxonomy.cdm.model.media,eu.etaxonomy.cdm.model.molecular,eu.etaxonomy.cdm.model.name,eu.etaxonomy.cdm.model.occurrence,eu.etaxonomy.cdm.model.reference,eu.etaxonomy.cdm.model.taxon,eu.etaxonomy.cdm.model.view,eu.etaxonomy.cdm.persistence.hibernate,eu.etaxonomy.cdm.persistence.query,eu.etaxonomy.cdm.strategy,eu.etaxonomy.cdm.strategy.cache.agent,eu.etaxonomy.cdm.strategy.cache.common,eu.etaxonomy.cdm.strategy.cache.name,eu.etaxonomy.cdm.strategy.cache.reference,eu.etaxonomy.cdm.strategy.exceptions,eu.etaxonomy.cdm.strategy.parser,org.apache.log4j;uses:="org.apache.log4j.helpers,org.apache.log4j.or,org.apache.log4j.spi",org.apache.log4j.chainsaw; uses:="org.apache.log4j, javax.swing, javax.swing.table, org.apache.log4j.spi, javax.swing.event, org.xml.sax.helpers, org.xml.sax",org.apache.log4j.config;uses:="org.apache.log4j",org.apache.log4j.helpers;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.jdbc;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.jmx;uses:="org.apache.log4j,org.apache.log4j.spi,javax.management",org.apache.log4j.lf5;uses:="org.apache.log4j.lf5.viewer,org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.lf5.config,org.apache.log4j.lf5.util;uses:="org.apache.log4j.lf5.viewer,org.apache.log4j.lf5",org.apache.log4j.lf5.viewer; uses:="org.apache.log4j.lf5.util, org.apache.log4j.lf5.viewer.categoryexplorer, org.apache.log4j.lf5, javax.swing, javax.swing.table, javax.swing.event, org.apache.log4j.lf5.viewer.configure",org.apache.log4j.lf5.viewer.categoryexplorer; uses:="org.apache.log4j.lf5, javax.swing.tree, javax.swing, javax.swing.table, javax.swing.event",org.apache.log4j.lf5.viewer.configure;uses:="org.apache.log4j.lf5.viewer,javax.swing.tree,org.w3c.dom",org.apache.log4j.lf5.viewer.images,org.apache.log4j.net; uses:="javax.naming, org.apache.log4j.helpers, org.apache.log4j, javax.jms, javax.mail.internet, org.apache.log4j.spi, javax.mail",org.apache.log4j.nt;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.or;uses:="org.apache.log4j.spi",org.apache.log4j.or.jms;uses:="org.apache.log4j.or",org.apache.log4j.or.sax;uses:="org.apache.log4j.or",org.apache.log4j.spi;uses:="org.apache.log4j,org.apache.log4j.or",org.apache.log4j.varia;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.xml; uses:="org.apache.log4j.config, org.apache.log4j.helpers, org.apache.log4j, javax.xml.parsers, org.apache.log4j.spi, org.w3c.dom, org.xml.sax",org.joda.time; uses:="org.joda.time.base, org.joda.time.field, org.joda.time.chrono, org.joda.time.tz, org.joda.time.format",org.joda.time.base;uses:="org.joda.time,org.joda.time.format",org.joda.time.chrono;uses:="org.joda.time.field,org.joda.time",org.joda.time.convert;uses:="org.joda.time,org.joda.time.format",org.joda.time.field;uses:="org.joda.time",org.joda.time.format;uses:="org.joda.time",org.joda.time.tz;uses:="org.joda.time",org.springframework.core,org.springframework.core.io,org.springframework.orm.hibernate3,org.springframework.security,org.springframework.security.acl,org.springframework.security.acl.basic,org.springframework.security.acl.basic.cache,org.springframework.security.acl.basic.jdbc,org.springframework.security.adapters,org.springframework.security.afterinvocation,org.springframework.security.authoritymapping,org.springframework.security.concurrent,org.springframework.security.config,org.springframework.security.context,org.springframework.security.context.httpinvoker,org.springframework.security.context.rmi,org.springframework.security.event.authentication,org.springframework.security.event.authorization,org.springframework.security.intercept,org.springframework.security.intercept.method,org.springframework.security.intercept.method.aopalliance,org.springframework.security.intercept.method.aspectj,org.springframework.security.intercept.web,org.springframework.security.ldap,org.springframework.security.ldap.populator,org.springframework.security.ldap.search,org.springframework.security.providers,org.springframework.security.providers.anonymous,org.springframework.security.providers.dao,org.springframework.security.providers.dao.cache,org.springframework.security.providers.dao.salt,org.springframework.security.providers.encoding,org.springframework.security.providers.jaas,org.springframework.security.providers.jaas.event,org.springframework.security.providers.ldap,org.springframework.security.providers.ldap.authenticator,org.springframework.security.providers.preauth,org.springframework.security.providers.rcp,org.springframework.security.providers.rememberme,org.springframework.security.providers.x509,org.springframework.security.providers.x509.cache,org.springframework.security.providers.x509.populator,org.springframework.security.runas,org.springframework.security.securechannel,org.springframework.security.token,org.springframework.security.ui,org.springframework.security.ui.basicauth,org.springframework.security.ui.digestauth,org.springframework.security.ui.logout,org.springframework.security.ui.preauth,org.springframework.security.ui.preauth.header,org.springframework.security.ui.preauth.j2ee,org.springframework.security.ui.preauth.websphere,org.springframework.security.ui.preauth.x509,org.springframework.security.ui.rememberme,org.springframework.security.ui.savedrequest,org.springframework.security.ui.session,org.springframework.security.ui.switchuser,org.springframework.security.ui.webapp,org.springframework.security.ui.x509,org.springframework.security.userdetails,org.springframework.security.userdetails.checker,org.springframework.security.userdetails.hierarchicalroles,org.springframework.security.userdetails.jdbc,org.springframework.security.userdetails.ldap,org.springframework.security.userdetails.memory,org.springframework.security.util,org.springframework.security.vote,org.springframework.security.wrapper,org.springframework.transaction;uses:="org.springframework.core",org.springframework.transaction.annotation,org.springframework.transaction.config,org.springframework.transaction.interceptor,org.springframework.transaction.jta,org.springframework.transaction.support
Require-Bundle: org.eclipse.osgi,org.eclipse.pde.source
Manifest-Version: 1.0
Bundle-SymbolicName: eu.etaxonomy.cdmLibrary;singleton:=true
Bundle-Name: CDM Library Plug-in
Bundle-ClassPath: antlr-2.7.6.jar,asm-attrs.jar,asm.jar,cglib-2.1.3.jar,commons-collections-3.2.jar,commons-logging-1.0.4.jar,dom4j-1.6.1.jar,ehcache-1.2.3.jar,ejb3-persistence.jar,hibernate-annotations-3.4.0-SNAPSHOT.jar,hibernate-commons-annotations-3.4.0-SNAPSHOT.jar,hibernate-core-3.4.0-SNAPSHOT.jar,hibernate-envers-3.4.0-SNAPSHOT.jar,hibernate-search-3.1.0.GA.jar,hibernate-tools-3.2.0.ga.jar,slf4j-api-1.5.2.jar,slf4j-log4j12-1.5.2.jar,javassist.jar,jdbc2_0-stdext.jar,jta.jar,junit-4.4.jar,log4j-1.2.14.jar,mysql-connector-java-3.1.14-bin.jar,xml-apis.jar,xercesImpl.jar,hsqldb.jar,jaxb-api.jar,jaxb-impl-2.0.jar,jdom-1.0.jar,opencsv-1.8.jar,jtds-1.2.2.jar,postgresql-8.2-504.jdbc4.jar,aopalliance-1.0.jar,spring-2.5.jar,spring-beans-2.5.jar,spring-context-2.5.jar,spring-core-2.5.jar,spring-jdbc-2.5.jar,spring-orm-2.5.jar,spring-test-2.5.jar,spring-tx-2.5.jar,h2-1.0.73.jar,joda-time-1.5.jar,joda-time-hibernate-1.0.jar,sanselan-0.94-incubator.jar,poi-3.1-FINAL.jar,spring-security-core-2.0.4.jar,aspectjweaver-1.5.4.jar,lucene-core-2.4.0.jar,lucene-spellchecker-2.4.0.jar,lsid-client-1.1.2.jar,lsid-server-1.1.2.jar,wsdl4j-1.6.1.jar,spring-2.5.6.jar,spring-aop-2.5.6.jar,spring-beans-2.5.6.jar,spring-context-2.5.6.jar,spring-core-2.5.6.jar,spring-jdbc-2.5.6.jar,spring-modules-lucene-0.8a.jar,spring-orm-2.5.6.jar,spring-test-2.5.6.jar,spring-web-2.5.6.jar,spring-webmvc-2.5.6.jar,unitils-1.0.jar,jsr250-api-1.0.jar,cdmlib-commons-2.1.jar,cdmlib-ext-2.1.jar,cdmlib-io-2.1.jar,cdmlib-model-2.1.jar,cdmlib-persistence-2.1.jar,cdmlib-services-2.1.jar,cdmlib-persistence-2.1-tests.jar,hibernate-validator-3.1.0.GA.jar,aspectjrt-1.6.3.jar,aspectjweaver-1.6.3.jar,aspectjtools-1.6.3.jar,spring-aspects-2.5.6.jar,spring-agent-2.5.6.jar,jdbc-1.2.jar

+ Bundle-ManifestVersion: 2
Bundle-Version: 2.1.0.v20090624-1200
Export-Package: eu.etaxonomy.cdm,eu.etaxonomy.cdm.api.application,eu.etaxonomy.cdm.api.application.eclipse,eu.etaxonomy.cdm.api.conversation,eu.etaxonomy.cdm.api.service,eu.etaxonomy.cdm.api.service.config,eu.etaxonomy.cdm.api.service.config.impl,eu.etaxonomy.cdm.api.service.pager,eu.etaxonomy.cdm.api.service.pager.impl,eu.etaxonomy.cdm.aspectj,eu.etaxonomy.cdm.common,eu.etaxonomy.cdm.database,eu.etaxonomy.cdm.database.types,eu.etaxonomy.cdm.datagenerator,eu.etaxonomy.cdm.ext,eu.etaxonomy.cdm.hibernate,eu.etaxonomy.cdm.io.abcd206,eu.etaxonomy.cdm.io.berlinModel,eu.etaxonomy.cdm.io.berlinModel.in,eu.etaxonomy.cdm.io.berlinModel.out,eu.etaxonomy.cdm.io.berlinModel.out.mapper,eu.etaxonomy.cdm.io.common,eu.etaxonomy.cdm.io.excel.common,eu.etaxonomy.cdm.io.excel.distribution,eu.etaxonomy.cdm.io.excel.taxa,eu.etaxonomy.cdm.io.faunaEuropaea,eu.etaxonomy.cdm.io.jaxb,eu.etaxonomy.cdm.io.sdd,eu.etaxonomy.cdm.io.synthesys,eu.etaxonomy.cdm.io.taxonx,eu.etaxonomy.cdm.io.tcsrdf,eu.etaxonomy.cdm.io.tcsxml,eu.etaxonomy.cdm.io.tcsxml.in,eu.etaxonomy.cdm.io.tcsxml.out,eu.etaxonomy.cdm.jaxb,eu.etaxonomy.cdm.model.agent,eu.etaxonomy.cdm.model.common,eu.etaxonomy.cdm.model.common.init,eu.etaxonomy.cdm.model.description,eu.etaxonomy.cdm.model.location,eu.etaxonomy.cdm.model.media,eu.etaxonomy.cdm.model.molecular,eu.etaxonomy.cdm.model.name,eu.etaxonomy.cdm.model.occurrence,eu.etaxonomy.cdm.model.reference,eu.etaxonomy.cdm.model.taxon,eu.etaxonomy.cdm.model.view,eu.etaxonomy.cdm.persistence.hibernate,eu.etaxonomy.cdm.persistence.query,eu.etaxonomy.cdm.strategy,eu.etaxonomy.cdm.strategy.cache.agent,eu.etaxonomy.cdm.strategy.cache.common,eu.etaxonomy.cdm.strategy.cache.name,eu.etaxonomy.cdm.strategy.cache.reference,eu.etaxonomy.cdm.strategy.exceptions,eu.etaxonomy.cdm.strategy.parser,org.apache.log4j;uses:="org.apache.log4j.helpers,org.apache.log4j.or,org.apache.log4j.spi",org.apache.log4j.chainsaw; uses:="org.apache.log4j, javax.swing, javax.swing.table, org.apache.log4j.spi, javax.swing.event, org.xml.sax.helpers, org.xml.sax",org.apache.log4j.config;uses:="org.apache.log4j",org.apache.log4j.helpers;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.jdbc;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.jmx;uses:="org.apache.log4j,org.apache.log4j.spi,javax.management",org.apache.log4j.lf5;uses:="org.apache.log4j.lf5.viewer,org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.lf5.config,org.apache.log4j.lf5.util;uses:="org.apache.log4j.lf5.viewer,org.apache.log4j.lf5",org.apache.log4j.lf5.viewer; uses:="org.apache.log4j.lf5.util, org.apache.log4j.lf5.viewer.categoryexplorer, org.apache.log4j.lf5, javax.swing, javax.swing.table, javax.swing.event, org.apache.log4j.lf5.viewer.configure",org.apache.log4j.lf5.viewer.categoryexplorer; uses:="org.apache.log4j.lf5, javax.swing.tree, javax.swing, javax.swing.table, javax.swing.event",org.apache.log4j.lf5.viewer.configure;uses:="org.apache.log4j.lf5.viewer,javax.swing.tree,org.w3c.dom",org.apache.log4j.lf5.viewer.images,org.apache.log4j.net; uses:="javax.naming, org.apache.log4j.helpers, org.apache.log4j, javax.jms, javax.mail.internet, org.apache.log4j.spi, javax.mail",org.apache.log4j.nt;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.or;uses:="org.apache.log4j.spi",org.apache.log4j.or.jms;uses:="org.apache.log4j.or",org.apache.log4j.or.sax;uses:="org.apache.log4j.or",org.apache.log4j.spi;uses:="org.apache.log4j,org.apache.log4j.or",org.apache.log4j.varia;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.xml; uses:="org.apache.log4j.config, org.apache.log4j.helpers, org.apache.log4j, javax.xml.parsers, org.apache.log4j.spi, org.w3c.dom, org.xml.sax",org.joda.time; uses:="org.joda.time.base, org.joda.time.field, org.joda.time.chrono, org.joda.time.tz, org.joda.time.format",org.joda.time.base;uses:="org.joda.time,org.joda.time.format",org.joda.time.chrono;uses:="org.joda.time.field,org.joda.time",org.joda.time.convert;uses:="org.joda.time,org.joda.time.format",org.joda.time.field;uses:="org.joda.time",org.joda.time.format;uses:="org.joda.time",org.joda.time.tz;uses:="org.joda.time",org.springframework.core,org.springframework.core.io,org.springframework.orm.hibernate3,org.springframework.security,org.springframework.security.acl,org.springframework.security.acl.basic,org.springframework.security.acl.basic.cache,org.springframework.security.acl.basic.jdbc,org.springframework.security.adapters,org.springframework.security.afterinvocation,org.springframework.security.authoritymapping,org.springframework.security.concurrent,org.springframework.security.config,org.springframework.security.context,org.springframework.security.context.httpinvoker,org.springframework.security.context.rmi,org.springframework.security.event.authentication,org.springframework.security.event.authorization,org.springframework.security.intercept,org.springframework.security.intercept.method,org.springframework.security.intercept.method.aopalliance,org.springframework.security.intercept.method.aspectj,org.springframework.security.intercept.web,org.springframework.security.ldap,org.springframework.security.ldap.populator,org.springframework.security.ldap.search,org.springframework.security.providers,org.springframework.security.providers.anonymous,org.springframework.security.providers.dao,org.springframework.security.providers.dao.cache,org.springframework.security.providers.dao.salt,org.springframework.security.providers.encoding,org.springframework.security.providers.jaas,org.springframework.security.providers.jaas.event,org.springframework.security.providers.ldap,org.springframework.security.providers.ldap.authenticator,org.springframework.security.providers.preauth,org.springframework.security.providers.rcp,org.springframework.security.providers.rememberme,org.springframework.security.providers.x509,org.springframework.security.providers.x509.cache,org.springframework.security.providers.x509.populator,org.springframework.security.runas,org.springframework.security.securechannel,org.springframework.security.token,org.springframework.security.ui,org.springframework.security.ui.basicauth,org.springframework.security.ui.digestauth,org.springframework.security.ui.logout,org.springframework.security.ui.preauth,org.springframework.security.ui.preauth.header,org.springframework.security.ui.preauth.j2ee,org.springframework.security.ui.preauth.websphere,org.springframework.security.ui.preauth.x509,org.springframework.security.ui.rememberme,org.springframework.security.ui.savedrequest,org.springframework.security.ui.session,org.springframework.security.ui.switchuser,org.springframework.security.ui.webapp,org.springframework.security.ui.x509,org.springframework.security.userdetails,org.springframework.security.userdetails.checker,org.springframework.security.userdetails.hierarchicalroles,org.springframework.security.userdetails.jdbc,org.springframework.security.userdetails.ldap,org.springframework.security.userdetails.memory,org.springframework.security.util,org.springframework.security.vote,org.springframework.security.wrapper,org.springframework.transaction;uses:="org.springframework.core",org.springframework.transaction.annotation,org.springframework.transaction.config,org.springframework.transaction.interceptor,org.springframework.transaction.jta,org.springframework.transaction.support
Require-Bundle: org.eclipse.osgi,org.eclipse.pde.source
Manifest-Version: 1.0
Bundle-SymbolicName: eu.etaxonomy.cdmLibrary;singleton:=true
Bundle-Name: CDM Library Plug-in
Bundle-ClassPath: antlr-2.7.6.jar,asm-attrs.jar,asm.jar,cglib-2.1.3.jar,commons-collections-3.2.jar,commons-logging-1.0.4.jar,dom4j-1.6.1.jar,ehcache-1.2.3.jar,ejb3-persistence.jar,hibernate-annotations-3.4.0-SNAPSHOT.jar,hibernate-commons-annotations-3.4.0-SNAPSHOT.jar,hibernate-core-3.4.0-SNAPSHOT.jar,hibernate-envers-3.4.0-SNAPSHOT.jar,hibernate-search-3.1.0.GA.jar,hibernate-tools-3.2.0.ga.jar,slf4j-api-1.5.2.jar,slf4j-log4j12-1.5.2.jar,javassist.jar,jdbc2_0-stdext.jar,jta.jar,junit-4.4.jar,log4j-1.2.14.jar,mysql-connector-java-3.1.14-bin.jar,xml-apis.jar,xercesImpl.jar,hsqldb.jar,jaxb-api.jar,jaxb-impl-2.0.jar,jdom-1.0.jar,opencsv-1.8.jar,jtds-1.2.2.jar,postgresql-8.2-504.jdbc4.jar,aopalliance-1.0.jar,spring-2.5.jar,spring-beans-2.5.jar,spring-context-2.5.jar,spring-core-2.5.jar,spring-jdbc-2.5.jar,spring-orm-2.5.jar,spring-test-2.5.jar,spring-tx-2.5.jar,h2-1.0.73.jar,joda-time-1.5.jar,joda-time-hibernate-1.0.jar,sanselan-0.94-incubator.jar,poi-3.1-FINAL.jar,spring-security-core-2.0.4.jar,aspectjweaver-1.5.4.jar,lucene-core-2.4.0.jar,lucene-spellchecker-2.4.0.jar,lsid-client-1.1.2.jar,lsid-server-1.1.2.jar,wsdl4j-1.6.1.jar,spring-2.5.6.jar,spring-aop-2.5.6.jar,spring-beans-2.5.6.jar,spring-context-2.5.6.jar,spring-core-2.5.6.jar,spring-jdbc-2.5.6.jar,spring-modules-lucene-0.8a.jar,spring-orm-2.5.6.jar,spring-test-2.5.6.jar,spring-web-2.5.6.jar,spring-webmvc-2.5.6.jar,unitils-1.0.jar,jsr250-api-1.0.jar,cdmlib-commons-2.1.jar,cdmlib-ext-2.1.jar,cdmlib-io-2.1.jar,cdmlib-model-2.1.jar,cdmlib-persistence-2.1.jar,cdmlib-services-2.1.jar,cdmlib-persistence-2.1-tests.jar,hibernate-validator-3.1.0.GA.jar,aspectjrt-1.6.3.jar,aspectjweaver-1.6.3.jar,aspectjtools-1.6.3.jar,spring-aspects-2.5.6.jar,spring-agent-2.5.6.jar,jdbc-1.2.jar
</instruction>
<instruction key='zipped'>
true
[Enter Copyright Description here.]
</copyright>
</unit>
+ <unit id='eu.etaxonomy.taxeditor.editor' version='2.0.0.v20090630-1147'>
+ <update id='eu.etaxonomy.taxeditor.editor' range='[0.0.0,2.0.0.v20090630-1147)' severity='0'/>
+ <properties size='4'>
+ <property name='df_LT.Bundle-Vendor.0' value='EDIT'/>
+ <property name='df_LT.Bundle-Name.0' value='EDIT Taxonomic Editor - Editor Bundle'/>
+ <property name='org.eclipse.equinox.p2.name' value='%Bundle-Name.0'/>
+ <property name='org.eclipse.equinox.p2.provider' value='%Bundle-Vendor.0'/>
+ </properties>
+ <provides size='22'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.editor' version='2.0.0.v20090630-1147'/>
+ <provided namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.editor' version='2.0.0.v20090630-1147'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.description' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.description.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.images' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.images.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.internal' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.name' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.name.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.editor.reference' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet.description' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet.images' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet.name' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet.namerelations.wizard' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet.reference' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet.type' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.propertysheet.type.wizard' version='0.0.0'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
+ </provides>
+ <requires size='16'>
+ <required namespace='osgi.bundle' name='org.eclipse.ui' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='3.4.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.databinding' range='1.1.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.databinding.beans' range='1.1.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.editors' range='3.4.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jface' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jface.databinding' range='1.2.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.ide' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.resources' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.filesystem' range='1.2.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.expressions' range='3.4.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.forms' range='3.3.101'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jface.text' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.views.properties.tabbed' range='3.4.2'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.cdmLibrary' range='2.0.0'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.store' range='1.0.0'/>
+ </requires>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.editor' version='2.0.0.v20090630-1147'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Name: %Bundle-Name.0
Bundle-Activator: eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin
Manifest-Version: 1.0
Bundle-Vendor: %Bundle-Vendor.0
Bundle-ClassPath: .,icons/
Bundle-ActivationPolicy: lazy
Bundle-SymbolicName: eu.etaxonomy.taxeditor.editor;singleton:=true
Bundle-ManifestVersion: 2
Bundle-Version: 2.0.0.v20090630-1147
Bundle-Localization: plugin
Export-Package: eu.etaxonomy.taxeditor.editor,eu.etaxonomy.taxeditor.editor.description,eu.etaxonomy.taxeditor.editor.description.handler,eu.etaxonomy.taxeditor.editor.handler,eu.etaxonomy.taxeditor.editor.images,eu.etaxonomy.taxeditor.editor.images.handler,eu.etaxonomy.taxeditor.editor.internal,eu.etaxonomy.taxeditor.editor.name,eu.etaxonomy.taxeditor.editor.name.handler,eu.etaxonomy.taxeditor.editor.reference,eu.etaxonomy.taxeditor.propertysheet,eu.etaxonomy.taxeditor.propertysheet.description,eu.etaxonomy.taxeditor.propertysheet.images,eu.etaxonomy.taxeditor.propertysheet.name,eu.etaxonomy.taxeditor.propertysheet.namerelations.wizard,eu.etaxonomy.taxeditor.propertysheet.reference,eu.etaxonomy.taxeditor.propertysheet.type,eu.etaxonomy.taxeditor.propertysheet.type.wizard
Require-Bundle: org.eclipse.ui;bundle-version="3.4.1",org.eclipse.core.runtime;bundle-version="3.4.0",org.eclipse.core.databinding;bundle-version="1.1.1",org.eclipse.core.databinding.beans;bundle-version="1.1.1",org.eclipse.ui.editors;bundle-version="3.4.0",org.eclipse.jface;bundle-version="3.4.1",org.eclipse.jface.databinding;bundle-version="1.2.1",org.eclipse.ui.ide;bundle-version="3.4.1",org.eclipse.core.resources;bundle-version="3.4.1",org.eclipse.core.filesystem;bundle-version="1.2.0",org.eclipse.core.expressions;bundle-version="3.4.0",org.eclipse.ui.forms;bundle-version="3.3.101",org.eclipse.jface.text;bundle-version="3.4.1",org.eclipse.ui.views.properties.tabbed;bundle-version="3.4.2",eu.etaxonomy.cdmLibrary;bundle-version="2.0.0",eu.etaxonomy.taxeditor.store;bundle-version="1.0.0"
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='eu.etaxonomy.taxeditor.feature.group' version='2.0.0.v20090630-1147' singleton='false'>
+ <update id='eu.etaxonomy.taxeditor.feature.group' range='[0.0.0,2.0.0.v20090630-1147)' severity='0'/>
+ <properties size='5'>
+ <property name='org.eclipse.equinox.p2.name' value='Taxeditor Feature'/>
+ <property name='org.eclipse.equinox.p2.description' value='[Enter Feature Description here.]'/>
+ <property name='org.eclipse.equinox.p2.description.url' value='http://www.example.com/description'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ <property name='org.eclipse.equinox.p2.type.group' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.feature.group' version='2.0.0.v20090630-1147'/>
+ </provides>
+ <requires size='8'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.feature.dependencies.feature.group' range='[2.0.0.v20090617-1416,2.0.0.v20090617-1416]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.cdmLibrary.feature.group' range='[2.1.0.v20090629-1736,2.1.0.v20090629-1736]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.application' range='[2.0.0.v20090630-1147,2.0.0.v20090630-1147]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.editor' range='[2.0.0.v20090630-1147,2.0.0.v20090630-1147]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.navigation' range='[2.0.0.v20090630-1147,2.0.0.v20090630-1147]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.store' range='[2.0.0.v20090630-1147,2.0.0.v20090630-1147]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.bulkeditor' range='[2.0.0.v20090630-1147,2.0.0.v20090630-1147]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.feature.jar' range='[2.0.0.v20090630-1147,2.0.0.v20090630-1147]'>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ </required>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ <licenses size='1'>
+ <license url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='eu.etaxonomy.taxeditor.navigation' version='2.0.0.v20090630-1147'>
+ <update id='eu.etaxonomy.taxeditor.navigation' range='[0.0.0,2.0.0.v20090630-1147)' severity='0'/>
+ <properties size='2'>
+ <property name='org.eclipse.equinox.p2.name' value='EDIT Taxonomic Editor - Navigation Bundle'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ </properties>
+ <provides size='9'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.navigation' version='2.0.0.v20090630-1147'/>
+ <provided namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.navigation' version='2.0.0.v20090630-1147'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.navigation' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.navigation.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.navigation.internal' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.navigation.navigator' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.navigation.search' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.navigation.taxonomictree' version='0.0.0'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <requires size='14'>
+ <required namespace='osgi.bundle' name='org.eclipse.core.resources' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='3.4.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.navigator' range='3.3.101'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.navigator.resources' range='3.3.101'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.ide' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.forms' range='3.3.101'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.cdmLibrary' range='2.1.0'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.store' range='1.0.0'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.editor' range='1.0.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.databinding.beans' range='1.1.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.databinding' range='1.1.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jface.databinding' range='1.2.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.expressions' range='0.0.0'/>
+ </requires>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.navigation' version='2.0.0.v20090630-1147'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-ManifestVersion: 2
Require-Bundle: org.eclipse.core.resources;bundle-version="3.4.1",org.eclipse.core.runtime;bundle-version="3.4.0",org.eclipse.ui;bundle-version="3.4.1",org.eclipse.ui.navigator;bundle-version="3.3.101",org.eclipse.ui.navigator.resources;bundle-version="3.3.101",org.eclipse.ui.ide;bundle-version="3.4.1",org.eclipse.ui.forms;bundle-version="3.3.101",eu.etaxonomy.cdmLibrary;bundle-version="2.1.0",eu.etaxonomy.taxeditor.store;bundle-version="1.0.0",eu.etaxonomy.taxeditor.editor;bundle-version="1.0.0",org.eclipse.core.databinding.beans;bundle-version="1.1.1",org.eclipse.core.databinding;bundle-version="1.1.1",org.eclipse.jface.databinding;bundle-version="1.2.1",org.eclipse.core.expressions
Manifest-Version: 1.0
Bundle-Activator: eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin
Bundle-Version: 2.0.0.v20090630-1147
Export-Package: eu.etaxonomy.taxeditor.navigation,eu.etaxonomy.taxeditor.navigation.handler,eu.etaxonomy.taxeditor.navigation.internal,eu.etaxonomy.taxeditor.navigation.navigator,eu.etaxonomy.taxeditor.navigation.search,eu.etaxonomy.taxeditor.navigation.taxonomictree
Bundle-SymbolicName: eu.etaxonomy.taxeditor.navigation;singleton:=true
Bundle-ActivationPolicy: lazy
Bundle-Name: EDIT Taxonomic Editor - Navigation Bundle
Bundle-Vendor: EDIT
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='eu.etaxonomy.taxeditor.application' version='2.0.0.v20090630-1147'>
+ <update id='eu.etaxonomy.taxeditor.application' range='[0.0.0,2.0.0.v20090630-1147)' severity='0'/>
+ <properties size='2'>
+ <property name='org.eclipse.equinox.p2.name' value='EDIT Taxonomic Editor'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ </properties>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.application' version='2.0.0.v20090630-1147'/>
+ <provided namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.application' version='2.0.0.v20090630-1147'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor' version='0.0.0'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <requires size='9'>
+ <required namespace='osgi.bundle' name='org.eclipse.ui' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.ide' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='3.4.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.resources' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.cdmLibrary' range='2.1.0'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.store' range='1.0.0'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.editor' range='1.0.0'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.navigation' range='1.0.0'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.bulkeditor' range='1.0.0'/>
+ </requires>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.application' version='2.0.0.v20090630-1147'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-Vendor: EDIT
Bundle-ManifestVersion: 2
Bundle-Activator: eu.etaxonomy.taxeditor.TaxonomicEditorPlugin
Bundle-Localization: plugin
Bundle-Name: EDIT Taxonomic Editor
Require-Bundle: org.eclipse.ui;bundle-version="3.4.1",org.eclipse.ui.ide;bundle-version="3.4.1",org.eclipse.core.runtime;bundle-version="3.4.0",org.eclipse.core.resources;bundle-version="3.4.1",eu.etaxonomy.cdmLibrary;bundle-version="2.1.0",eu.etaxonomy.taxeditor.store;bundle-version="1.0.0",eu.etaxonomy.taxeditor.editor;bundle-version="1.0.0",eu.etaxonomy.taxeditor.navigation;bundle-version="1.0.0",eu.etaxonomy.taxeditor.bulkeditor;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy
Manifest-Version: 1.0
Bundle-SymbolicName: eu.etaxonomy.taxeditor.application;singleton:=true
Bundle-Version: 2.0.0.v20090630-1147
Export-Package: eu.etaxonomy.taxeditor
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='eu.etaxonomy.taxeditor.bulkeditor' version='2.0.0.v20090630-1147'>
+ <update id='eu.etaxonomy.taxeditor.bulkeditor' range='[0.0.0,2.0.0.v20090630-1147)' severity='0'/>
+ <properties size='2'>
+ <property name='org.eclipse.equinox.p2.name' value='EDIT Taxonomic Editor - Bulk Editor Bundle'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ </properties>
+ <provides size='6'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.bulkeditor' version='2.0.0.v20090630-1147'/>
+ <provided namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.bulkeditor' version='2.0.0.v20090630-1147'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.bulkeditor' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.bulkeditor.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.bulkeditor.internal' version='0.0.0'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <requires size='7'>
+ <required namespace='osgi.bundle' name='org.eclipse.ui' range='0.0.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='0.0.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jface.text' range='3.4.2'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.editors' range='0.0.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.ide' range='0.0.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.resources' range='3.4.2'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.cdmLibrary' range='2.1.0'/>
+ </requires>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.bulkeditor' version='2.0.0.v20090630-1147'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Name: EDIT Taxonomic Editor - Bulk Editor Bundle
Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
Manifest-Version: 1.0
Bundle-Vendor: EDIT
Bundle-ClassPath: .
Bundle-ActivationPolicy: lazy
Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
Bundle-ManifestVersion: 2
Bundle-Version: 2.0.0.v20090630-1147
Bundle-Localization: plugin
Export-Package: eu.etaxonomy.taxeditor.bulkeditor,eu.etaxonomy.taxeditor.bulkeditor.handler,eu.etaxonomy.taxeditor.bulkeditor.internal
Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,org.eclipse.jface.text;bundle-version="3.4.2",org.eclipse.ui.editors,org.eclipse.ui.ide,org.eclipse.core.resources;bundle-version="3.4.2",eu.etaxonomy.cdmLibrary;bundle-version="2.1.0"
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='eu.etaxonomy.taxeditor.store' version='2.0.0.v20090630-1147'>
+ <update id='eu.etaxonomy.taxeditor.store' range='[0.0.0,2.0.0.v20090630-1147)' severity='0'/>
+ <properties size='2'>
+ <property name='org.eclipse.equinox.p2.name' value='EDIT Taxonomic Editor - DataStore Bundle'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ </properties>
+ <provides size='15'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.store' version='2.0.0.v20090630-1147'/>
+ <provided namespace='osgi.bundle' name='eu.etaxonomy.taxeditor.store' version='2.0.0.v20090630-1147'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.datasource' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.datasource.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.datasource.view' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.datasource.wizard' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.dialogs' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.handler' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.model' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.operations' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.parser' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.preference' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.store' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.taxeditor.store.internal' version='0.0.0'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <requires size='13'>
+ <required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.2.0,4.0.0)'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.2.0,4.0.0)'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.filesystem' range='1.2.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.core.resources' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='eu.etaxonomy.cdmLibrary' range='2.1.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.editors' range='3.4.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jface.text' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.ui.ide' range='3.4.2'/>
+ <required namespace='osgi.bundle' name='org.eclipse.debug.core' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jdt.launching' range='3.4.1'/>
+ <required namespace='osgi.bundle' name='org.eclipse.jdt.core' range='3.4.4'/>
+ <required namespace='java.package' name='junit.framework' range='0.0.0'/>
+ <required namespace='java.package' name='org.junit' range='0.0.0'/>
+ </requires>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.taxeditor.store' version='2.0.0.v20090630-1147'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-ManifestVersion: 2
Export-Package: eu.etaxonomy.taxeditor.datasource,eu.etaxonomy.taxeditor.datasource.handler,eu.etaxonomy.taxeditor.datasource.view,eu.etaxonomy.taxeditor.datasource.wizard,eu.etaxonomy.taxeditor.dialogs,eu.etaxonomy.taxeditor.handler,eu.etaxonomy.taxeditor.model;uses:="eu.etaxonomy.cdm.model.common,eu.etaxonomy.cdm.model.name,eu.etaxonomy.cdm.model.taxon",eu.etaxonomy.taxeditor.operations,eu.etaxonomy.taxeditor.parser,eu.etaxonomy.taxeditor.preference,eu.etaxonomy.taxeditor.store,eu.etaxonomy.taxeditor.store.internal
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",org.eclipse.core.filesystem;bundle-version="1.2.0",org.eclipse.core.resources;bundle-version="3.4.1",eu.etaxonomy.cdmLibrary;bundle-version="2.1.0",org.eclipse.ui.editors;bundle-version="3.4.0",org.eclipse.jface.text;bundle-version="3.4.1",org.eclipse.ui.ide;bundle-version="3.4.2",org.eclipse.debug.core;bundle-version="3.4.1",org.eclipse.jdt.launching;bundle-version="3.4.1",org.eclipse.jdt.core;bundle-version="3.4.4"
Bundle-Activator: eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin
Bundle-Name: EDIT Taxonomic Editor - DataStore Bundle
Bundle-Version: 2.0.0.v20090630-1147
Bundle-Vendor: EDIT
Bundle-SymbolicName: eu.etaxonomy.taxeditor.store;singleton:=true
Import-Package: junit.framework,org.junit
Bundle-ActivationPolicy: lazy
Manifest-Version: 1.0
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='eu.etaxonomy.taxeditor.feature.jar' version='2.0.0.v20090630-1147'>
+ <update id='eu.etaxonomy.taxeditor.feature.jar' range='[0.0.0,2.0.0.v20090630-1147)' severity='0'/>
+ <properties size='4'>
+ <property name='org.eclipse.equinox.p2.name' value='Taxeditor Feature'/>
+ <property name='org.eclipse.equinox.p2.description' value='[Enter Feature Description here.]'/>
+ <property name='org.eclipse.equinox.p2.description.url' value='http://www.example.com/description'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.taxeditor.feature.jar' version='2.0.0.v20090630-1147'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='feature' version='1.0.0'/>
+ <provided namespace='org.eclipse.update.feature' name='eu.etaxonomy.taxeditor' version='2.0.0.v20090630-1147'/>
+ </provides>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ <artifacts size='1'>
+ <artifact classifier='org.eclipse.update.feature' id='eu.etaxonomy.taxeditor' version='2.0.0.v20090630-1147'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ </instructions>
+ </touchpointData>
+ <licenses size='1'>
+ <license url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='eu.etaxonomy.cdmLibrary.feature.jar' version='2.1.0.v20090629-1736'>
+ <update id='eu.etaxonomy.cdmLibrary.feature.jar' range='[0.0.0,2.1.0.v20090629-1736)' severity='0'/>
+ <properties size='4'>
+ <property name='org.eclipse.equinox.p2.name' value='CDM Library'/>
+ <property name='org.eclipse.equinox.p2.description' value='cdmLibrary eclipse plugin feature'/>
+ <property name='org.eclipse.equinox.p2.description.url' value='http://www.example.com/description'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.cdmLibrary.feature.jar' version='2.1.0.v20090629-1736'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='feature' version='1.0.0'/>
+ <provided namespace='org.eclipse.update.feature' name='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'/>
+ </provides>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ <artifacts size='1'>
+ <artifact classifier='org.eclipse.update.feature' id='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ </instructions>
+ </touchpointData>
+ <licenses size='1'>
+ <license url='http://www.example.com/license'>
+ to be added
+ </license>
+ </licenses>
+ <copyright url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='eu.etaxonomy.cdmLibrary.feature.group' version='2.1.0.v20090629-1736' singleton='false'>
+ <update id='eu.etaxonomy.cdmLibrary.feature.group' range='[0.0.0,2.1.0.v20090629-1736)' severity='0'/>
+ <properties size='5'>
+ <property name='org.eclipse.equinox.p2.name' value='CDM Library'/>
+ <property name='org.eclipse.equinox.p2.description' value='cdmLibrary eclipse plugin feature'/>
+ <property name='org.eclipse.equinox.p2.description.url' value='http://www.example.com/description'/>
+ <property name='org.eclipse.equinox.p2.provider' value='EDIT'/>
+ <property name='org.eclipse.equinox.p2.type.group' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.cdmLibrary.feature.group' version='2.1.0.v20090629-1736'/>
+ </provides>
+ <requires size='2'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.cdmLibrary' range='[2.1.0.v20090629-1736,2.1.0.v20090629-1736]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.cdmLibrary.feature.jar' range='[2.1.0.v20090629-1736,2.1.0.v20090629-1736]'>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ </required>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ <licenses size='1'>
+ <license url='http://www.example.com/license'>
+ to be added
+ </license>
+ </licenses>
+ <copyright url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'>
+ <update id='eu.etaxonomy.cdmLibrary' range='[0.0.0,2.1.0.v20090629-1736)' severity='0'/>
+ <properties size='1'>
+ <property name='org.eclipse.equinox.p2.name' value='CDM Library Plug-in'/>
+ </properties>
+ <provides size='162'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'/>
+ <provided namespace='osgi.bundle' name='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.application' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.application.eclipse' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.conversation' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.service' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.service.config' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.service.config.impl' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.service.pager' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.api.service.pager.impl' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.aspectj' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.common' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.database' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.database.types' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.datagenerator' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.ext' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.hibernate' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.abcd206' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.berlinModel' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.berlinModel.in' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.berlinModel.out' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.berlinModel.out.mapper' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.common' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.excel.common' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.excel.distribution' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.excel.taxa' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.faunaEuropaea' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.jaxb' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.sdd' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.synthesys' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.taxonx' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.tcsrdf' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.tcsxml' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.tcsxml.in' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.io.tcsxml.out' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.jaxb' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.agent' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.common' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.common.init' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.description' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.location' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.media' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.molecular' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.name' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.occurrence' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.reference' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.taxon' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.model.view' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.persistence.hibernate' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.persistence.query' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.strategy' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.strategy.cache.agent' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.strategy.cache.common' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.strategy.cache.name' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.strategy.cache.reference' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.strategy.exceptions' version='0.0.0'/>
+ <provided namespace='java.package' name='eu.etaxonomy.cdm.strategy.parser' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.chainsaw' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.config' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.helpers' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.jdbc' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.jmx' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.lf5' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.lf5.config' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.lf5.util' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.lf5.viewer' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.lf5.viewer.categoryexplorer' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.lf5.viewer.configure' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.lf5.viewer.images' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.net' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.nt' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.or' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.or.jms' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.or.sax' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.spi' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.varia' version='0.0.0'/>
+ <provided namespace='java.package' name='org.apache.log4j.xml' version='0.0.0'/>
+ <provided namespace='java.package' name='org.joda.time' version='0.0.0'/>
+ <provided namespace='java.package' name='org.joda.time.base' version='0.0.0'/>
+ <provided namespace='java.package' name='org.joda.time.chrono' version='0.0.0'/>
+ <provided namespace='java.package' name='org.joda.time.convert' version='0.0.0'/>
+ <provided namespace='java.package' name='org.joda.time.field' version='0.0.0'/>
+ <provided namespace='java.package' name='org.joda.time.format' version='0.0.0'/>
+ <provided namespace='java.package' name='org.joda.time.tz' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.core' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.core.io' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.orm.hibernate3' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.acl' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.acl.basic' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.acl.basic.cache' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.acl.basic.jdbc' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.adapters' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.afterinvocation' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.authoritymapping' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.concurrent' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.config' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.context' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.context.httpinvoker' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.context.rmi' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.event.authentication' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.event.authorization' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.intercept' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.intercept.method' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.intercept.method.aopalliance' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.intercept.method.aspectj' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.intercept.web' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ldap' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ldap.populator' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ldap.search' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.anonymous' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.dao' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.dao.cache' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.dao.salt' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.encoding' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.jaas' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.jaas.event' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.ldap' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.ldap.authenticator' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.preauth' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.rcp' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.rememberme' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.x509' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.x509.cache' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.providers.x509.populator' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.runas' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.securechannel' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.token' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.basicauth' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.digestauth' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.logout' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.preauth' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.preauth.header' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.preauth.j2ee' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.preauth.websphere' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.preauth.x509' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.rememberme' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.savedrequest' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.session' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.switchuser' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.webapp' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.ui.x509' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.userdetails' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.userdetails.checker' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.userdetails.hierarchicalroles' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.userdetails.jdbc' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.userdetails.ldap' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.userdetails.memory' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.util' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.vote' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.security.wrapper' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.transaction' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.transaction.annotation' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.transaction.config' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.transaction.interceptor' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.transaction.jta' version='0.0.0'/>
+ <provided namespace='java.package' name='org.springframework.transaction.support' version='0.0.0'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <requires size='2'>
+ <required namespace='osgi.bundle' name='org.eclipse.osgi' range='0.0.0'/>
+ <required namespace='osgi.bundle' name='org.eclipse.pde.source' range='0.0.0'/>
+ </requires>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='eu.etaxonomy.cdmLibrary' version='2.1.0.v20090629-1736'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='manifest'>
+ Bundle-ManifestVersion: 2
Bundle-Version: 2.1.0.v20090629-1736
Export-Package: eu.etaxonomy.cdm,eu.etaxonomy.cdm.api.application,eu.etaxonomy.cdm.api.application.eclipse,eu.etaxonomy.cdm.api.conversation,eu.etaxonomy.cdm.api.service,eu.etaxonomy.cdm.api.service.config,eu.etaxonomy.cdm.api.service.config.impl,eu.etaxonomy.cdm.api.service.pager,eu.etaxonomy.cdm.api.service.pager.impl,eu.etaxonomy.cdm.aspectj,eu.etaxonomy.cdm.common,eu.etaxonomy.cdm.database,eu.etaxonomy.cdm.database.types,eu.etaxonomy.cdm.datagenerator,eu.etaxonomy.cdm.ext,eu.etaxonomy.cdm.hibernate,eu.etaxonomy.cdm.io.abcd206,eu.etaxonomy.cdm.io.berlinModel,eu.etaxonomy.cdm.io.berlinModel.in,eu.etaxonomy.cdm.io.berlinModel.out,eu.etaxonomy.cdm.io.berlinModel.out.mapper,eu.etaxonomy.cdm.io.common,eu.etaxonomy.cdm.io.excel.common,eu.etaxonomy.cdm.io.excel.distribution,eu.etaxonomy.cdm.io.excel.taxa,eu.etaxonomy.cdm.io.faunaEuropaea,eu.etaxonomy.cdm.io.jaxb,eu.etaxonomy.cdm.io.sdd,eu.etaxonomy.cdm.io.synthesys,eu.etaxonomy.cdm.io.taxonx,eu.etaxonomy.cdm.io.tcsrdf,eu.etaxonomy.cdm.io.tcsxml,eu.etaxonomy.cdm.io.tcsxml.in,eu.etaxonomy.cdm.io.tcsxml.out,eu.etaxonomy.cdm.jaxb,eu.etaxonomy.cdm.model.agent,eu.etaxonomy.cdm.model.common,eu.etaxonomy.cdm.model.common.init,eu.etaxonomy.cdm.model.description,eu.etaxonomy.cdm.model.location,eu.etaxonomy.cdm.model.media,eu.etaxonomy.cdm.model.molecular,eu.etaxonomy.cdm.model.name,eu.etaxonomy.cdm.model.occurrence,eu.etaxonomy.cdm.model.reference,eu.etaxonomy.cdm.model.taxon,eu.etaxonomy.cdm.model.view,eu.etaxonomy.cdm.persistence.hibernate,eu.etaxonomy.cdm.persistence.query,eu.etaxonomy.cdm.strategy,eu.etaxonomy.cdm.strategy.cache.agent,eu.etaxonomy.cdm.strategy.cache.common,eu.etaxonomy.cdm.strategy.cache.name,eu.etaxonomy.cdm.strategy.cache.reference,eu.etaxonomy.cdm.strategy.exceptions,eu.etaxonomy.cdm.strategy.parser,org.apache.log4j;uses:="org.apache.log4j.helpers,org.apache.log4j.or,org.apache.log4j.spi",org.apache.log4j.chainsaw; uses:="org.apache.log4j, javax.swing, javax.swing.table, org.apache.log4j.spi, javax.swing.event, org.xml.sax.helpers, org.xml.sax",org.apache.log4j.config;uses:="org.apache.log4j",org.apache.log4j.helpers;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.jdbc;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.jmx;uses:="org.apache.log4j,org.apache.log4j.spi,javax.management",org.apache.log4j.lf5;uses:="org.apache.log4j.lf5.viewer,org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.lf5.config,org.apache.log4j.lf5.util;uses:="org.apache.log4j.lf5.viewer,org.apache.log4j.lf5",org.apache.log4j.lf5.viewer; uses:="org.apache.log4j.lf5.util, org.apache.log4j.lf5.viewer.categoryexplorer, org.apache.log4j.lf5, javax.swing, javax.swing.table, javax.swing.event, org.apache.log4j.lf5.viewer.configure",org.apache.log4j.lf5.viewer.categoryexplorer; uses:="org.apache.log4j.lf5, javax.swing.tree, javax.swing, javax.swing.table, javax.swing.event",org.apache.log4j.lf5.viewer.configure;uses:="org.apache.log4j.lf5.viewer,javax.swing.tree,org.w3c.dom",org.apache.log4j.lf5.viewer.images,org.apache.log4j.net; uses:="javax.naming, org.apache.log4j.helpers, org.apache.log4j, javax.jms, javax.mail.internet, org.apache.log4j.spi, javax.mail",org.apache.log4j.nt;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.or;uses:="org.apache.log4j.spi",org.apache.log4j.or.jms;uses:="org.apache.log4j.or",org.apache.log4j.or.sax;uses:="org.apache.log4j.or",org.apache.log4j.spi;uses:="org.apache.log4j,org.apache.log4j.or",org.apache.log4j.varia;uses:="org.apache.log4j,org.apache.log4j.spi",org.apache.log4j.xml; uses:="org.apache.log4j.config, org.apache.log4j.helpers, org.apache.log4j, javax.xml.parsers, org.apache.log4j.spi, org.w3c.dom, org.xml.sax",org.joda.time; uses:="org.joda.time.base, org.joda.time.field, org.joda.time.chrono, org.joda.time.tz, org.joda.time.format",org.joda.time.base;uses:="org.joda.time,org.joda.time.format",org.joda.time.chrono;uses:="org.joda.time.field,org.joda.time",org.joda.time.convert;uses:="org.joda.time,org.joda.time.format",org.joda.time.field;uses:="org.joda.time",org.joda.time.format;uses:="org.joda.time",org.joda.time.tz;uses:="org.joda.time",org.springframework.core,org.springframework.core.io,org.springframework.orm.hibernate3,org.springframework.security,org.springframework.security.acl,org.springframework.security.acl.basic,org.springframework.security.acl.basic.cache,org.springframework.security.acl.basic.jdbc,org.springframework.security.adapters,org.springframework.security.afterinvocation,org.springframework.security.authoritymapping,org.springframework.security.concurrent,org.springframework.security.config,org.springframework.security.context,org.springframework.security.context.httpinvoker,org.springframework.security.context.rmi,org.springframework.security.event.authentication,org.springframework.security.event.authorization,org.springframework.security.intercept,org.springframework.security.intercept.method,org.springframework.security.intercept.method.aopalliance,org.springframework.security.intercept.method.aspectj,org.springframework.security.intercept.web,org.springframework.security.ldap,org.springframework.security.ldap.populator,org.springframework.security.ldap.search,org.springframework.security.providers,org.springframework.security.providers.anonymous,org.springframework.security.providers.dao,org.springframework.security.providers.dao.cache,org.springframework.security.providers.dao.salt,org.springframework.security.providers.encoding,org.springframework.security.providers.jaas,org.springframework.security.providers.jaas.event,org.springframework.security.providers.ldap,org.springframework.security.providers.ldap.authenticator,org.springframework.security.providers.preauth,org.springframework.security.providers.rcp,org.springframework.security.providers.rememberme,org.springframework.security.providers.x509,org.springframework.security.providers.x509.cache,org.springframework.security.providers.x509.populator,org.springframework.security.runas,org.springframework.security.securechannel,org.springframework.security.token,org.springframework.security.ui,org.springframework.security.ui.basicauth,org.springframework.security.ui.digestauth,org.springframework.security.ui.logout,org.springframework.security.ui.preauth,org.springframework.security.ui.preauth.header,org.springframework.security.ui.preauth.j2ee,org.springframework.security.ui.preauth.websphere,org.springframework.security.ui.preauth.x509,org.springframework.security.ui.rememberme,org.springframework.security.ui.savedrequest,org.springframework.security.ui.session,org.springframework.security.ui.switchuser,org.springframework.security.ui.webapp,org.springframework.security.ui.x509,org.springframework.security.userdetails,org.springframework.security.userdetails.checker,org.springframework.security.userdetails.hierarchicalroles,org.springframework.security.userdetails.jdbc,org.springframework.security.userdetails.ldap,org.springframework.security.userdetails.memory,org.springframework.security.util,org.springframework.security.vote,org.springframework.security.wrapper,org.springframework.transaction;uses:="org.springframework.core",org.springframework.transaction.annotation,org.springframework.transaction.config,org.springframework.transaction.interceptor,org.springframework.transaction.jta,org.springframework.transaction.support
Require-Bundle: org.eclipse.osgi,org.eclipse.pde.source
Manifest-Version: 1.0
Bundle-SymbolicName: eu.etaxonomy.cdmLibrary;singleton:=true
Bundle-Name: CDM Library Plug-in
Bundle-ClassPath: antlr-2.7.6.jar,asm-attrs.jar,asm.jar,cglib-2.1.3.jar,commons-collections-3.2.jar,commons-logging-1.0.4.jar,dom4j-1.6.1.jar,ehcache-1.2.3.jar,ejb3-persistence.jar,hibernate-annotations-3.4.0-SNAPSHOT.jar,hibernate-commons-annotations-3.4.0-SNAPSHOT.jar,hibernate-core-3.4.0-SNAPSHOT.jar,hibernate-envers-3.4.0-SNAPSHOT.jar,hibernate-search-3.1.0.GA.jar,hibernate-tools-3.2.0.ga.jar,slf4j-api-1.5.2.jar,slf4j-log4j12-1.5.2.jar,javassist.jar,jdbc2_0-stdext.jar,jta.jar,junit-4.4.jar,log4j-1.2.14.jar,mysql-connector-java-3.1.14-bin.jar,xml-apis.jar,xercesImpl.jar,hsqldb.jar,jaxb-api.jar,jaxb-impl-2.0.jar,jdom-1.0.jar,opencsv-1.8.jar,jtds-1.2.2.jar,postgresql-8.2-504.jdbc4.jar,aopalliance-1.0.jar,spring-2.5.jar,spring-beans-2.5.jar,spring-context-2.5.jar,spring-core-2.5.jar,spring-jdbc-2.5.jar,spring-orm-2.5.jar,spring-test-2.5.jar,spring-tx-2.5.jar,h2-1.0.73.jar,joda-time-1.5.jar,joda-time-hibernate-1.0.jar,sanselan-0.94-incubator.jar,poi-3.1-FINAL.jar,spring-security-core-2.0.4.jar,aspectjweaver-1.5.4.jar,lucene-core-2.4.0.jar,lucene-spellchecker-2.4.0.jar,lsid-client-1.1.2.jar,lsid-server-1.1.2.jar,wsdl4j-1.6.1.jar,spring-2.5.6.jar,spring-aop-2.5.6.jar,spring-beans-2.5.6.jar,spring-context-2.5.6.jar,spring-core-2.5.6.jar,spring-jdbc-2.5.6.jar,spring-modules-lucene-0.8a.jar,spring-orm-2.5.6.jar,spring-test-2.5.6.jar,spring-web-2.5.6.jar,spring-webmvc-2.5.6.jar,unitils-1.0.jar,jsr250-api-1.0.jar,cdmlib-commons-2.1.jar,cdmlib-ext-2.1.jar,cdmlib-io-2.1.jar,cdmlib-model-2.1.jar,cdmlib-persistence-2.1.jar,cdmlib-services-2.1.jar,cdmlib-persistence-2.1-tests.jar,hibernate-validator-3.1.0.GA.jar,aspectjrt-1.6.3.jar,aspectjweaver-1.6.3.jar,aspectjtools-1.6.3.jar,spring-aspects-2.5.6.jar,spring-agent-2.5.6.jar,jdbc-1.2.jar
+ </instruction>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
</units>
</repository>
<?xml version="1.0" encoding="UTF-8"?>
<site>
- <feature url="features/eu.etaxonomy.cdmLibrary_2.1.0.v20090624-1200.jar" id="eu.etaxonomy.cdmLibrary" version="2.1.0.v20090624-1200">
+ <feature url="features/eu.etaxonomy.cdmLibrary_2.1.0.v20090629-1736.jar" id="eu.etaxonomy.cdmLibrary" version="2.1.0.v20090629-1736">
<category name="Cdm Library"/>
</feature>
- <feature url="features/eu.etaxonomy.taxeditor_2.0.0.v20090624-1625.jar" id="eu.etaxonomy.taxeditor" version="2.0.0.v20090624-1625">
+ <feature url="features/eu.etaxonomy.taxeditor_2.0.0.v20090630-1147.jar" id="eu.etaxonomy.taxeditor" version="2.0.0.v20090630-1147">
<category name="Taxonomic Editor"/>
</feature>
<category-def name="Taxonomic Editor" label="Taxonomic Editor"/>