// $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.
-*/
+ * 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.annotatedlineeditor;
import java.util.Iterator;
+import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ui.editors.text.TextEditor;
import org.eclipse.ui.texteditor.IDocumentProvider;
+import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @created 25.06.2009
* @version 1.0
*/
-public class AnnotatedLineEditor extends TextEditor implements IConversationEnabled, IPostOperationEnabled {
-
- protected ConversationHolder conversation;
-
- private IEntityPersistenceService persistenceService;
- protected ILineDisplayStrategy lineDisplayStrategy;
-
-
- /**
- * <p>Constructor for AnnotatedLineEditor.</p>
- *
- * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- */
- public AnnotatedLineEditor(ConversationHolder conversation) {
- this.conversation = conversation;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.editors.text.TextEditor#doSetInput(org.eclipse.ui.IEditorInput)
- */
- /** {@inheritDoc} */
- @Override
- protected void doSetInput(IEditorInput input) throws CoreException {
-
- AnnotatedLineDocumentProvider provider = new AnnotatedLineDocumentProvider(input);
-
- provider.setLineDisplayStrategy(lineDisplayStrategy, input);
- setDocumentProvider(provider);
-
- super.doSetInput(input);
- }
-
- /**
- * <p>Setter for the field <code>persistenceService</code>.</p>
- *
- * @param persistenceService a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService} object.
- */
- protected void setPersistenceService(
- IEntityPersistenceService persistenceService) {
- this.persistenceService = persistenceService;
- }
-
- /**
- * <p>Getter for the field <code>persistenceService</code>.</p>
- *
- * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService} object.
- */
- protected IEntityPersistenceService getPersistenceService() {
- return persistenceService;
- }
-
- /**
- * <p>Setter for the field <code>lineDisplayStrategy</code>.</p>
- *
- * @param lineDisplayStrategy a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy} object.
- */
- protected void setLineDisplayStrategy(
- ILineDisplayStrategy lineDisplayStrategy) {
- this.lineDisplayStrategy = lineDisplayStrategy;
- }
-
- /** {@inheritDoc} */
- @Override
- protected ISourceViewer createSourceViewer(Composite parent,
- IVerticalRuler ruler, int styles) {
-
- fAnnotationAccess= getAnnotationAccess();
- fOverviewRuler= createOverviewRuler(getSharedColors());
- LineSelectionViewer viewer = new LineSelectionViewer(parent, ruler, getOverviewRuler(),
- isOverviewRulerVisible(), styles);
-// isOverviewRulerVisible(), styles | SWT.WRAP);
- getSourceViewerDecorationSupport(viewer);
-
- return viewer;
- }
-
- /**
- * Create an annotated line with an "empty" entity, i.e. using the editor
- * input's default entity type and a zero-length title cache.
- *
- * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
- */
- public LineAnnotation createAnnotatedLineNewObject() {
-
- // Create new object
-
- AnnotatedLineDocumentProvider documentProvider = (AnnotatedLineDocumentProvider) getDocumentProvider();
- IEntityCreator entityCreator = documentProvider.getEntityCreator(getEditorInput());
- Object entity = entityCreator.createEntity(null);
-
- LineAnnotation annotation = createAnnotatedLine(entity);
- if (annotation != null) {
- annotation.markAsNew(true);
- }
- return annotation;
- }
-
- /**
- * Create an annotated line, first creating an entity of type "key" - this key
- * must be recognized by the editor's entity creator.
- *
- * @param key a {@link java.lang.Object} object.
- * @param titleCache a {@link java.lang.String} object.
- * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
- */
- public LineAnnotation createAnnotatedLineNewObject(Object key, String titleCache) {
-
-
-
- // Create new object
- Object entity = ((AnnotatedLineDocumentProvider) getDocumentProvider()).
- getEntityCreator(getEditorInput()).createEntity(key, titleCache);
- // checks if the creator also saves the entity (in a different conversation), in which case
- // we need to bind back this editors conversation
- // we also need to reload the entity because the conversation used to
- // to create / save the entity may have been closed
- if(entity != null && ((AnnotatedLineDocumentProvider) getDocumentProvider()).getEntityCreator(getEditorInput()).savesEntity()) {
- getConversationHolder().bind();
- Object object = CdmStore.getService(IOccurrenceService.class).load(((CdmBase)entity).getUuid());
- entity = HibernateProxyHelper.deproxy(object);
- }
-
- if(entity == null) {
- return null;
- }
- LineAnnotation annotation = createAnnotatedLine(entity);
- if (annotation != null) {
- annotation.markAsNew(true);
- }
-
- return annotation;
-
- }
-
- @Override
- public boolean isDirty() {
- return super.isDirty();
- }
-
- /**
- * Creates an annotated line at the end of the document. The annotation contains the entity.
- *
- * @param entity a {@link java.lang.Object} object.
- * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
- */
- public LineAnnotation createAnnotatedLine(Object entity) {
-
- IEditorInput input = getEditorInput();
- AnnotatedLineDocumentProvider provider = (AnnotatedLineDocumentProvider) getDocumentProvider();
-
- LineAnnotation annotation = null;
- try {
- annotation = provider.createAnnotatedLine(input, entity);
-
- // Jump to new line
- IAnnotationModel model = provider.getAnnotationModel(input);
- if(model != null){
- int start= model.getPosition(annotation).getOffset();
- selectAndReveal(start, 0);
- }
-
- } catch (BadLocationException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return annotation;
- }
-
- /**
- * <p>removeAnnotatedLine</p>
- *
- * @param lineno a int.
- */
- public void removeAnnotatedLine(int lineno) {
- ((AnnotatedLineDocumentProvider) getDocumentProvider()).removeAnnotatedLine(lineno);
- }
-
- /**
- * <p>removeAnnotatedLine</p>
- *
- * @param annotation a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
- */
- public void removeAnnotatedLine(LineAnnotation annotation) {
- ((AnnotatedLineDocumentProvider) getDocumentProvider()).removeAnnotatedLine(annotation);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.texteditor.AbstractTextEditor#doSave(org.eclipse.core.runtime.IProgressMonitor)
- */
- /** {@inheritDoc} */
- @Override
- public void doSave(IProgressMonitor progressMonitor) {
- if (getConversationHolder() != null) {
- if( ! getConversationHolder().isBound()){
- getConversationHolder().bind();
- }
- super.doSave(progressMonitor);
- getConversationHolder().commit(true);
- } else {
- super.doSave(progressMonitor);
- }
- firePropertyChange(PROP_DIRTY);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.texteditor.AbstractTextEditor#setFocus()
- */
- /** {@inheritDoc} */
- @Override
- public void setFocus() {
- super.setFocus();
- if (getConversationHolder() != null) {
- getConversationHolder().bind();
- }
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setFocus();
- // TODO pass focus to underlying widgets
- }
-
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
- */
- /**
- * <p>getConversationHolder</p>
- *
- * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- */
- @Override
+public class AnnotatedLineEditor extends TextEditor implements IConversationEnabled, IPostOperationEnabled, ICdmEntitySessionEnabled {
+
+ protected ConversationHolder conversation;
+
+ private IEntityPersistenceService persistenceService;
+ protected ILineDisplayStrategy lineDisplayStrategy;
+ private final ICdmEntitySession cdmEntitySession;
+
+ /**
+ * <p>Constructor for AnnotatedLineEditor.</p>
+ *
+ * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+ */
+ public AnnotatedLineEditor(ConversationHolder conversation) {
+ this.conversation = conversation;
+ cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.editors.text.TextEditor#doSetInput(org.eclipse.ui.IEditorInput)
+ */
+ /** {@inheritDoc} */
+ @Override
+ protected void doSetInput(IEditorInput input) throws CoreException {
+
+ AnnotatedLineDocumentProvider provider = new AnnotatedLineDocumentProvider(input);
+
+ provider.setLineDisplayStrategy(lineDisplayStrategy, input);
+ setDocumentProvider(provider);
+
+ super.doSetInput(input);
+ }
+
+ /**
+ * <p>Setter for the field <code>persistenceService</code>.</p>
+ *
+ * @param persistenceService a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService} object.
+ */
+ protected void setPersistenceService(
+ IEntityPersistenceService persistenceService) {
+ this.persistenceService = persistenceService;
+ }
+
+ /**
+ * <p>Getter for the field <code>persistenceService</code>.</p>
+ *
+ * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService} object.
+ */
+ protected IEntityPersistenceService getPersistenceService() {
+ return persistenceService;
+ }
+
+ /**
+ * <p>Setter for the field <code>lineDisplayStrategy</code>.</p>
+ *
+ * @param lineDisplayStrategy a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy} object.
+ */
+ protected void setLineDisplayStrategy(
+ ILineDisplayStrategy lineDisplayStrategy) {
+ this.lineDisplayStrategy = lineDisplayStrategy;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected ISourceViewer createSourceViewer(Composite parent,
+ IVerticalRuler ruler, int styles) {
+
+ fAnnotationAccess= getAnnotationAccess();
+ fOverviewRuler= createOverviewRuler(getSharedColors());
+ LineSelectionViewer viewer = new LineSelectionViewer(parent, ruler, getOverviewRuler(),
+ isOverviewRulerVisible(), styles);
+ // isOverviewRulerVisible(), styles | SWT.WRAP);
+ getSourceViewerDecorationSupport(viewer);
+
+ return viewer;
+ }
+
+ /**
+ * Create an annotated line with an "empty" entity, i.e. using the editor
+ * input's default entity type and a zero-length title cache.
+ *
+ * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
+ */
+ public LineAnnotation createAnnotatedLineNewObject() {
+
+ // Create new object
+
+ AnnotatedLineDocumentProvider documentProvider = (AnnotatedLineDocumentProvider) getDocumentProvider();
+ IEntityCreator entityCreator = documentProvider.getEntityCreator(getEditorInput());
+ Object entity = entityCreator.createEntity(null);
+
+ LineAnnotation annotation = createAnnotatedLine(entity);
+ if (annotation != null) {
+ annotation.markAsNew(true);
+ }
+ return annotation;
+ }
+
+ /**
+ * Create an annotated line, first creating an entity of type "key" - this key
+ * must be recognized by the editor's entity creator.
+ *
+ * @param key a {@link java.lang.Object} object.
+ * @param titleCache a {@link java.lang.String} object.
+ * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
+ */
+ public LineAnnotation createAnnotatedLineNewObject(Object key, String titleCache) {
+
+
+
+ // Create new object
+ Object entity = ((AnnotatedLineDocumentProvider) getDocumentProvider()).
+ getEntityCreator(getEditorInput()).createEntity(key, titleCache);
+ // checks if the creator also saves the entity (in a different conversation), in which case
+ // we need to bind back this editors conversation
+ // we also need to reload the entity because the conversation used to
+ // to create / save the entity may have been closed
+ if(entity != null && ((AnnotatedLineDocumentProvider) getDocumentProvider()).getEntityCreator(getEditorInput()).savesEntity()) {
+ getConversationHolder().bind();
+ Object object = CdmStore.getService(IOccurrenceService.class).load(((CdmBase)entity).getUuid());
+ entity = HibernateProxyHelper.deproxy(object);
+ }
+
+ if(entity == null) {
+ return null;
+ }
+ LineAnnotation annotation = createAnnotatedLine(entity);
+ if (annotation != null) {
+ annotation.markAsNew(true);
+ }
+
+ return annotation;
+
+ }
+
+ @Override
+ public boolean isDirty() {
+ return super.isDirty();
+ }
+
+ /**
+ * Creates an annotated line at the end of the document. The annotation contains the entity.
+ *
+ * @param entity a {@link java.lang.Object} object.
+ * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
+ */
+ public LineAnnotation createAnnotatedLine(Object entity) {
+
+ IEditorInput input = getEditorInput();
+ AnnotatedLineDocumentProvider provider = (AnnotatedLineDocumentProvider) getDocumentProvider();
+
+ LineAnnotation annotation = null;
+ try {
+ annotation = provider.createAnnotatedLine(input, entity);
+
+ // Jump to new line
+ IAnnotationModel model = provider.getAnnotationModel(input);
+ if(model != null){
+ int start= model.getPosition(annotation).getOffset();
+ selectAndReveal(start, 0);
+ }
+
+ } catch (BadLocationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return annotation;
+ }
+
+ /**
+ * <p>removeAnnotatedLine</p>
+ *
+ * @param lineno a int.
+ */
+ public void removeAnnotatedLine(int lineno) {
+ ((AnnotatedLineDocumentProvider) getDocumentProvider()).removeAnnotatedLine(lineno);
+ }
+
+ /**
+ * <p>removeAnnotatedLine</p>
+ *
+ * @param annotation a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
+ */
+ public void removeAnnotatedLine(LineAnnotation annotation) {
+ ((AnnotatedLineDocumentProvider) getDocumentProvider()).removeAnnotatedLine(annotation);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.texteditor.AbstractTextEditor#doSave(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void doSave(IProgressMonitor progressMonitor) {
+ if (getConversationHolder() != null) {
+ if( ! getConversationHolder().isBound()){
+ getConversationHolder().bind();
+ }
+ super.doSave(progressMonitor);
+ getConversationHolder().commit(true);
+ } else {
+ super.doSave(progressMonitor);
+ }
+ firePropertyChange(PROP_DIRTY);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.texteditor.AbstractTextEditor#setFocus()
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void setFocus() {
+ super.setFocus();
+ if (getConversationHolder() != null) {
+ getConversationHolder().bind();
+ }
+ cdmEntitySession.bind();
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setFocus();
+ // TODO pass focus to underlying widgets
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
+ */
+ /**
+ * <p>getConversationHolder</p>
+ *
+ * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+ */
+ @Override
public ConversationHolder getConversationHolder() {
- return conversation;
- }
-
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
- */
- /** {@inheritDoc} */
- @Override
+ return conversation;
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
+ */
+ /** {@inheritDoc} */
+ @Override
public void update(CdmDataChangeMap changeEvents) {}
- /**
- * Refreshes text in all lines.
- */
- protected void refreshLineDisplay() {
- IDocumentProvider provider = getDocumentProvider();
- IEditorInput input = getEditorInput();
- IAnnotationModel model = provider.getAnnotationModel(input);
- Iterator iter = getDocumentProvider().getAnnotationModel(getEditorInput()).getAnnotationIterator();
- while (iter.hasNext()) {
- Object next = iter.next();
- if (next instanceof LineAnnotation) {
- LineAnnotation annotation = (LineAnnotation) next;
- ((AnnotatedLineDocumentProvider) getDocumentProvider()).
- updateLineFromAnnotation(annotation);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
- */
- /** {@inheritDoc} */
- @Override
+ /**
+ * Refreshes text in all lines.
+ */
+ protected void refreshLineDisplay() {
+ IDocumentProvider provider = getDocumentProvider();
+ IEditorInput input = getEditorInput();
+ IAnnotationModel model = provider.getAnnotationModel(input);
+ Iterator iter = getDocumentProvider().getAnnotationModel(getEditorInput()).getAnnotationIterator();
+ while (iter.hasNext()) {
+ Object next = iter.next();
+ if (next instanceof LineAnnotation) {
+ LineAnnotation annotation = (LineAnnotation) next;
+ ((AnnotatedLineDocumentProvider) getDocumentProvider()).
+ updateLineFromAnnotation(annotation);
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
+ */
+ /** {@inheritDoc} */
+ @Override
public boolean postOperation(CdmBase objectAffectedByOperation) {
- refreshLineDisplay();
-
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.editors.text.TextEditor#dispose()
- */
- /** {@inheritDoc} */
- @Override
- public void dispose() {
- super.dispose();
- conversation.close();
- }
-
- /**
- * <p>onComplete</p>
- *
- * @return a boolean.
- */
- @Override
+ refreshLineDisplay();
+
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.editors.text.TextEditor#dispose()
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void dispose() {
+ super.dispose();
+ conversation.close();
+ cdmEntitySession.dispose();
+ }
+
+ /**
+ * <p>onComplete</p>
+ *
+ * @return a boolean.
+ */
+ @Override
public boolean onComplete() {
- // TODO Auto-generated method stub
- return false;
- }
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.application.ICdmChangeListener#onChange(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
+ */
+ @Override
+ public void onChange(CdmChangeEvent event) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
+ */
+ @Override
+ public ICdmEntitySession getCdmEntitySession() {
+ return cdmEntitySession;
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
+ */
+ @Override
+ public <T extends CdmBase> List<T> getRootEntities() {
+ AbstractBulkEditorInput input = (AbstractBulkEditorInput)getEditorInput();
+ return input.getModel();
+ }
}
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IViewPart;
import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
-import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView;
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
@Override
public void setFocus() {
conversation.bind();
+ getCdmEntitySession().bind();
searchBar.setFocus();
// TODO find a better place to put this - this dialog should be shown after initial contents of
@Override
public void doSave(IProgressMonitor progressMonitor) {
isDirty = false;
-
+
super.doSave(progressMonitor);
-
+
selectFirstItem();
-
+
getSourceViewer().getTextWidget().setFocus();
}
}
conversation.commit();
conversation.clear();
-
+
getEditorInput().performSearch(query);
refresh();
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.bulkeditor.handler;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.UUID;
-
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.ui.texteditor.IDocumentProvider;
-import org.eclipse.ui.IWorkbenchPage;
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.api.service.DeleteResult;
import eu.etaxonomy.cdm.api.service.IAgentService;
import eu.etaxonomy.cdm.api.service.IGroupService;
import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.Group;
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.User;
-
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Synonym;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.cdm.persistence.dao.hibernate.HibernateBeanInitializer;
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
-import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView;
-
-
import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
-
+
ISelection selection = HandlerUtil.getCurrentSelection(event);
-
+
IEditorPart editor = HandlerUtil.getActiveEditor(event);
-
+
IEditorInput input = editor.getEditorInput();
-
+
if((input instanceof IEntityPersistenceService) && (selection instanceof IStructuredSelection)){
-
-
+
+
IDocumentProvider provider = ((BulkEditor) editor).getDocumentProvider();
- LineAnnotationModel model =
+ LineAnnotationModel model =
(LineAnnotationModel) provider.getAnnotationModel(input);
-
-
+
+
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-
+
IEntityPersistenceService persistenceService = (IEntityPersistenceService) input;
-
-
+
+
for(Object object : structuredSelection.toList()){
-
+
LineAnnotation annotation = (LineAnnotation) model.getAnnotation(object);
- DeleteResult result = new DeleteResult();
+ DeleteResult result = new DeleteResult();
//result.setError();
try {
ICdmApplicationConfiguration controller;
- controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();
- //persistenceService.delete(object);
+ controller = CdmStore.getCurrentApplicationConfiguration();
+
if (object instanceof SpecimenOrObservationBase){
-
IOccurrenceService service = controller.getOccurrenceService();
- SpecimenOrObservationBase persistedObject = service.load(((SpecimenOrObservationBase) object).getUuid());
- if (persistedObject != null){
- result = service.delete(persistedObject);
- }
+ if (object != null){
+ result = service.delete(((SpecimenOrObservationBase) object).getUuid());
+ }
} else if (object instanceof Reference){
IReferenceService service = controller.getReferenceService();
-
- Reference persistedObject = service.load(((Reference) object).getUuid());
- if (persistedObject != null){
- result = service.delete(persistedObject);
+ if (object != null){
+ result = service.delete(((Reference) object).getUuid());
}
-
+
} else if (object instanceof Group){
IGroupService service = controller.getGroupService();
- Group persistedObject = service.load(((Group) object).getUuid());
- if (persistedObject != null){
- result = service.delete(persistedObject);
+ if (object != null){
+ result = service.delete(((Group) object).getUuid());
}
}else if (object instanceof User){
IUserService service = controller.getUserService();
- User persistedObject = service.load(((User) object).getUuid());
- if (persistedObject != null){
- result = service.delete(persistedObject);
+ if (object != null){
+ result = service.delete(((User) object).getUuid());
}
} else if (object instanceof TaxonNameBase){
INameService service = controller.getNameService();
- TaxonNameBase name = service.load(((TaxonNameBase) object).getUuid());
- if (name != null){
+ if (object != null){
NameDeletionConfigurator config = new NameDeletionConfigurator();
-
- result = service.delete(name.getUuid(), config);
- }
+ result = service.delete(((TaxonNameBase) object).getUuid(), config);
+ }
} else if (object instanceof TaxonBase){
ITaxonService service = controller.getTaxonService();
- TaxonBase taxonBase = service.load(((TaxonBase) object).getUuid());
- if (taxonBase != null){
+ if (object != null){
if (object instanceof Taxon){
result = service.deleteTaxon(((TaxonBase) object).getUuid(), null, null);
}else{
- result = service.deleteSynonym((Synonym)object, null);
+ result = service.deleteSynonym(((Synonym)object).getUuid(), null);
}
}
} else if (object instanceof TeamOrPersonBase){
IAgentService service = controller.getAgentService();
- TeamOrPersonBase teamOrPerson = (TeamOrPersonBase)service.load(((TeamOrPersonBase) object).getUuid());
- result = service.delete((TeamOrPersonBase)object);
+ //TeamOrPersonBase teamOrPerson = (TeamOrPersonBase)service.load(((TeamOrPersonBase) object).getUuid());
+ result = service.delete(((TeamOrPersonBase)object).getUuid());
}
} catch (Exception e){
MessagingUtils.messageDialog("Exception occured. Could not delete", getClass(), e.getMessage(), null);
MessagingUtils.messageDialog("Could not delete", getClass(), result.getExceptions().toString(), null);
}else{
MessagingUtils.messageDialog("Could not delete", getClass(), "The object could not be deleted. An exception occured.", null);
-
+
}
}
if (result.isOk() ){
}
}
-
- }
+
+ }
}
-
-
+
+
return null;
}
* @version 1.0
* @param <T>
*/
-public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEditorInput, IEntityPersistenceService<T> {
+public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEditorInput , IEntityPersistenceService<T> {
private UUID entityUuid;
private List<T> model;
private IEntityCreator<T> entityCreator;
-
+
private static Class serviceClass;
/**
* @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
*/
static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {
-
+
return BulkEditorInputType.getInput(inputType);
}
* @return a T object.
*/
protected T loadEntity(UUID entityUuid) {
- List<String> propertyPaths = Arrays.asList(new String[]{});
+ List<String> propertyPaths = Arrays.asList(new String[]{});
return (T) CdmStore.getService(serviceClass).load(entityUuid, propertyPaths);
}
if(getEntityUuid() != null){
- T entity = (T) loadEntity(getEntityUuid());
+ T entity = loadEntity(getEntityUuid());
entityList.add(entity);
model = entityList;
}
entityList = listEntities(configurator);
Collections.sort(entityList, queryComparator);
-
+
}
public boolean merge(T entity, T mergeTarget) {
if (entity instanceof IMergable) {
try {
- CdmStore.getCommonService().merge((IMergable)mergeTarget, (IMergable)entity, null);
+ CdmStore.getCommonService().merge((IMergable)mergeTarget, (IMergable)entity);
} catch (MergeException e) {
MessagingUtils.errorDialog("Bulk Editor Merge Error",
this,
* Returns a textual representation given object. The default implementation
* in the abstract base class returns the simple name of the class, this may
* be overwritten to something more specific in subclasses.
- *
+ *
* @param entity
* @return a textual representation given object.
*/
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.bulkeditor.input;
-import java.util.Arrays;
import java.util.List;
-import java.util.UUID;
-
-import org.eclipse.core.commands.ExecutionException;
import eu.etaxonomy.cdm.api.service.IAgentService;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
-import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.strategy.merge.MergeMode;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
-import eu.etaxonomy.taxeditor.bulkeditor.handler.MergeGroupHandler;
import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.AgentCreator;
import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.IdentifiableEntitySortProvider;
import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin;
public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase> {
/**
- *
+ *
*/
private static final long serialVersionUID = 3387950621617078479L;
/** Constant <code>ID="bulkeditor.input.author"</code> */
public static final String ID = "bulkeditor.input.author";
-
+
private static AgentEditorInput instance;
/**
public static String getID() {
return ID;
}
-
+
/* (non-Javadoc)
* @see org.eclipse.ui.IEditorInput#getName()
*/
*
* @return a {@link java.lang.String} object.
*/
- public String getName() {
+ @Override
+ public String getName() {
return BulkEditorInputType.AGENT.label;
}
*
* @return a {@link java.lang.String} object.
*/
- public String getToolTipText() {
+ @Override
+ public String getToolTipText() {
return getName();
}
public boolean isMergingEnabled() {
return true;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled()
*/
public boolean isConvertingEnabled() {
return true;
}
-
+
/** {@inheritDoc} */
@Override
public boolean merge(TeamOrPersonBase entity, TeamOrPersonBase mergeTarget) {
try {
IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(Person.class);
strategy.setMergeMode("institutionalMemberships", MergeMode.FIRST);
- CdmStore.getCommonService().merge((IMergable)mergeTarget, (IMergable)entity, strategy);
+ CdmStore.getCommonService().merge((IMergable)mergeTarget, (IMergable)entity, Person.class);
} catch (MergeException e) {
MessagingUtils.errorDialog("Bulk Editor Merge Error",
this,
public List<TeamOrPersonBase> listEntities(IIdentifiableEntityServiceConfigurator configurator) {
return CdmStore.getSearchManager().findTeamOrPersons(configurator);
}
-
- /** {@inheritDoc}
+
+ /** {@inheritDoc}
@Override
public AgentBase loadEntity(UUID uuid) {
- List<String> propertyPaths = Arrays.asList(new String[]{});
+ List<String> propertyPaths = Arrays.asList(new String[]{});
return CdmStore.getService(IAgentService.class).load(uuid, propertyPaths);
}*/
-
+
public boolean delete(AgentBase entity) throws ReferencedObjectUndeletableException {
-
- return CdmStore.getService(IAgentService.class).delete(entity) != null;
-
- }
- /** {@inheritDoc} */
- public boolean save(AgentBase entity) {
-
- return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
+ return CdmStore.getService(IAgentService.class).delete(entity) != null;
+
}
+// /** {@inheritDoc} */
+// public boolean save(AgentBase entity) {
+//
+// return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
+// }
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getSortProviders()
*/
@Override
public List<IBulkEditorSortProvider<TeamOrPersonBase>> getSortProviders() {
List<IBulkEditorSortProvider<TeamOrPersonBase>> sortProviders = super.getSortProviders();
-
+
sortProviders.add(0, new IdentifiableEntitySortProvider<TeamOrPersonBase>());
-
+
return sortProviders;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
*/
@Override
public boolean save(TeamOrPersonBase entity) {
- return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ return CdmStore.getService(IAgentService.class).merge(entity) != null;
+ } else {
+ return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
+ }
}
@Override
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.bulkeditor.input;
-import java.util.Arrays;
import java.util.List;
-import java.util.UUID;
import eu.etaxonomy.cdm.api.service.IGroupService;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
public static final String ID = "bulkeditor.input.group";
-
+
private static GroupEditorInput instance;
-
+
/**
* @return the instance
*/
}
return instance;
}
-
+
/* (non-Javadoc)
* @see org.eclipse.ui.IEditorInput#getName()
*/
*/
@Override
public boolean save(Group entity) {
- return CdmStore.getService(IGroupService.class).saveOrUpdate(entity) != null;
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ return CdmStore.getService(IGroupService.class).merge(entity) != null;
+ } else {
+ return CdmStore.getService(IGroupService.class).saveOrUpdate(entity) != null;
+ }
}
/* (non-Javadoc)
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
-
+
@Override
protected Group loadEntity(UUID entityUuid) {
- List<String> propertyPaths = Arrays.asList(new String[]{});
+ List<String> propertyPaths = Arrays.asList(new String[]{});
return CdmStore.getService(IGroupService.class).load(entityUuid, propertyPaths);
}
*/
protected IEntityCreator<Group> createEntityCreator() {
return new GroupCreator();
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getText(eu.etaxonomy.cdm.model.common.ICdmBase)
*/
return entity.getName();
}
-
+
}
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.bulkeditor.input;
-import java.util.Arrays;
import java.util.List;
-import java.util.UUID;
import eu.etaxonomy.cdm.api.service.INameService;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
-import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
/**
- *
+ *
*/
private static final long serialVersionUID = -3085029575759626823L;
private static NameEditorInput instance;
/** Constant <code>ID="bulkeditor.input.name"</code> */
public static final String ID = "bulkeditor.input.name";
-
+
/**
* <p>Getter for the field <code>instance</code>.</p>
*
}
return instance;
}
-
+
/* (non-Javadoc)
* @see org.eclipse.ui.IEditorInput#getName()
*/
*
* @return a {@link java.lang.String} object.
*/
- public String getName() {
+ @Override
+ public String getName() {
return BulkEditorInputType.NAME.label;
}
*
* @return a {@link java.lang.String} object.
*/
- public String getToolTipText() {
+ @Override
+ public String getToolTipText() {
return getName();
}
return CdmStore.getSearchManager().findNames(configurator);
}
- /** {@inheritDoc}
+ /** {@inheritDoc}
@Override
public TaxonNameBase loadEntity(UUID uuid) {
- List<String> propertyPaths = Arrays.asList(new String[]{});
+ List<String> propertyPaths = Arrays.asList(new String[]{});
return CdmStore.getService(INameService.class).load(uuid, propertyPaths);
}
*/
- /** {@inheritDoc}
+ /** {@inheritDoc}
**/
- public boolean delete(TaxonNameBase entity) {
+ @Override
+ public boolean delete(TaxonNameBase entity) {
return CdmStore.getService(INameService.class).delete(entity) != null;
}
/** {@inheritDoc} */
- public boolean save(TaxonNameBase entity) {
- return CdmStore.getService(INameService.class).saveOrUpdate(entity) != null;
+ @Override
+ public boolean save(TaxonNameBase entity) {
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ return CdmStore.getService(INameService.class).merge(entity) != null;
+ } else {
+ return CdmStore.getService(INameService.class).saveOrUpdate(entity) != null;
+ }
}
/* (non-Javadoc)
@Override
public List<IBulkEditorSortProvider<TaxonNameBase>> getSortProviders() {
List<IBulkEditorSortProvider<TaxonNameBase>> sortProviders = super.getSortProviders();
-
+
sortProviders.add(0, new IdentifiableEntitySortProvider<TaxonNameBase>());
-
+
return sortProviders;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getTypeText(java.lang.Object)
*/
}
return super.getTypeText(entity);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getText(eu.etaxonomy.cdm.model.common.ICdmBase)
*/
package eu.etaxonomy.taxeditor.bulkeditor.input;
-import java.util.Arrays;
import java.util.List;
-import java.util.UUID;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
*/
- /** {@inheritDoc}
+ /** {@inheritDoc}
@Override
protected SpecimenOrObservationBase loadEntity(UUID entityUuid) {
List<String> propertyPaths = Arrays.asList(new String[]{});
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#delete(java.lang.Object)
*/
- /** {@inheritDoc}
+ /** {@inheritDoc}
* @throws ReferencedObjectUndeletableException */
@Override
public boolean delete(SpecimenOrObservationBase entity) throws ReferencedObjectUndeletableException {
/** {@inheritDoc} */
@Override
public boolean save(SpecimenOrObservationBase entity) {
- return CdmStore.getService(IOccurrenceService.class).save(entity) != null;
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ return CdmStore.getService(IOccurrenceService.class).merge(entity) != null;
+ } else {
+ return CdmStore.getService(IOccurrenceService.class).save(entity) != null;
+ }
}
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
public class ReferenceEditorInput extends AbstractBulkEditorInput<Reference> {
/**
- *
+ *
*/
private static final long serialVersionUID = 3806243517765126749L;
/** Constant <code>ID="bulkeditor.input.reference"</code> */
public static final String ID = "bulkeditor.input.reference";
-
+
private static ReferenceEditorInput instance;
/**
public static String getID() {
return ID;
}
-
+
/* (non-Javadoc)
* @see org.eclipse.ui.IEditorInput#getName()
*/
*
* @return a {@link java.lang.String} object.
*/
- public String getName() {
+ @Override
+ public String getName() {
return BulkEditorInputType.REFERENCE.label;
}
*
* @return a {@link java.lang.String} object.
*/
- public String getToolTipText() {
+ @Override
+ public String getToolTipText() {
return getName();
}
public boolean isMergingEnabled() {
return true;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMarkerTypeEditingEnabled(eu.etaxonomy.cdm.model.common.MarkerType)
*/
return super.isMarkerTypeEditingEnabled(markerType);
}
-
+
/** {@inheritDoc} */
@Override
public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
return CdmStore.getSearchManager().findReferences(configurator);
}
-
+
// Entity persistence
-
+
/** {@inheritDoc} */
@Override
public Reference loadEntity(UUID entityUuid) {
- List<String> propertyPaths = Arrays.asList(new String[]{"*", "inReference.*", "authorTeam.*"});
+ List<String> propertyPaths = Arrays.asList(new String[]{"*", "inReference.*", "authorTeam.*"});
return CdmStore.getService(IReferenceService.class).load(entityUuid, propertyPaths);
}
- /** {@inheritDoc}
+ /** {@inheritDoc}
* @throws ReferencedObjectUndeletableException */
- public boolean delete(Reference entity) throws ReferencedObjectUndeletableException {
+ @Override
+ public boolean delete(Reference entity) throws ReferencedObjectUndeletableException {
return CdmStore.getService(IReferenceService.class).delete(entity) != null;
}
/** {@inheritDoc} */
- public boolean save(Reference entity) {
- return CdmStore.getService(IReferenceService.class).saveOrUpdate(entity) != null;
+ @Override
+ public boolean save(Reference entity) {
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ return CdmStore.getService(IReferenceService.class).merge(entity) != null;
+ } else {
+ return CdmStore.getService(IReferenceService.class).saveOrUpdate(entity) != null;
+ }
}
/* (non-Javadoc)
protected IEntityCreator<Reference> createEntityCreator() {
return new ReferenceCreator();
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getSortProviders()
*/
@Override
public List<IBulkEditorSortProvider<Reference>> getSortProviders() {
List<IBulkEditorSortProvider<Reference>> sortProviders = super.getSortProviders();
-
+
sortProviders.add(0, new IdentifiableEntitySortProvider<Reference>());
sortProviders.add(1, new ReferenceSortProvider());
-
+
return sortProviders;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getTypeText(java.lang.Object)
*/
private static TaxonEditorInput instance;\r
/** Constant <code>ID="bulkeditor.input.taxon"</code> */\r
public static final String ID = "bulkeditor.input.taxon";\r
- \r
- \r
- \r
+\r
+\r
+\r
/**\r
* <p>Getter for the field <code>instance</code>.</p>\r
*\r
if (instance == null) {\r
instance = new TaxonEditorInput();\r
}\r
- \r
+\r
return instance;\r
}\r
- \r
- \r
+\r
+\r
@Override\r
public String getName() {\r
return BulkEditorInputType.TAXON.label;\r
return getName();\r
}\r
\r
- \r
+\r
/**\r
* <p>getID</p>\r
*\r
public static Object getID() {\r
return ID;\r
}\r
- \r
+\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled()\r
*/\r
}\r
@Override\r
public boolean save(TaxonBase entity) {\r
- return CdmStore.getService(ITaxonService.class).saveOrUpdate(entity) != null;\r
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {\r
+ return CdmStore.getService(ITaxonService.class).merge(entity) != null;\r
+ } else {\r
+ return CdmStore.getService(ITaxonService.class).saveOrUpdate(entity) != null;\r
+ }\r
}\r
\r
- \r
+\r
\r
/** {@inheritDoc} */\r
@Override\r
List<TaxonBase> taxa = CdmStore.getSearchManager().findTaxa(configurator);\r
List<TaxonBase> taxaCopy = new ArrayList<TaxonBase>();\r
for (TaxonBase taxon:taxa){\r
- \r
+\r
if (taxon instanceof Taxon){\r
taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Taxon.class));\r
}else{\r
\r
@Override\r
protected TaxonBase loadEntity(UUID entityUuid) {\r
- List<String> propertyPaths = Arrays.asList(new String[]{}); \r
+ List<String> propertyPaths = Arrays.asList(new String[]{});\r
return CdmStore.getService(ITaxonService.class).load(entityUuid, propertyPaths);\r
}\r
\r
- \r
\r
- /** {@inheritDoc} \r
+\r
+ /** {@inheritDoc}\r
* @throws ReferencedObjectUndeletableException */\r
- public boolean delete(TaxonBase entity) {\r
+ @Override\r
+ public boolean delete(TaxonBase entity) {\r
return CdmStore.getService(ITaxonService.class).delete(entity) != null;\r
}\r
@Override\r
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.bulkeditor.input;
-import java.util.Arrays;
import java.util.List;
-import java.util.UUID;
import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
public class UserEditorInput extends AbstractBulkEditorInput<User> {
public static final String ID = "bulkeditor.input.user";
-
+
private static UserEditorInput instance;
-
+
/**
* @return the instance
*/
}
return instance;
}
-
+
/* (non-Javadoc)
* @see org.eclipse.ui.IEditorInput#getName()
*/
*/
@Override
public boolean save(User entity) {
- return CdmStore.getService(IUserService.class).saveOrUpdate(entity) != null;
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ return CdmStore.getService(IUserService.class).merge(entity) != null;
+ } else {
+ return CdmStore.getService(IUserService.class).saveOrUpdate(entity) != null;
+ }
+
}
/* (non-Javadoc)
return CdmStore.getSearchManager().findUsers(configurator);
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
-
+
@Override
protected User loadEntity(UUID entityUuid) {
- List<String> propertyPaths = Arrays.asList(new String[]{});
+ List<String> propertyPaths = Arrays.asList(new String[]{});
return CdmStore.getService(IUserService.class).load(entityUuid, propertyPaths);
}
*/
protected IEntityCreator<User> createEntityCreator() {
return new UserCreator();
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getText(eu.etaxonomy.cdm.model.common.ICdmBase)
*/
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
public User createEntity(Object key, String text) {
try{
User user = User.NewInstance(text, text);
- CdmStore.getService(IUserService.class).createUser(user);
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ user = CdmStore.getService(IUserService.class).merge(user);
+ } else {
+ CdmStore.getService(IUserService.class).createUser(user);
+ }
return user;
} catch (AccessDeniedException e){
MessagingUtils.messageDialog("Access denied", getClass(), e.getMessage(), e);
bin
+/target/
+/target/
+/target/
+/target/
</property>\r
<property name="httpInvokerRequestExecutor">\r
<bean\r
- class="org.springframework.remoting.httpinvoker.SimpleHttpInvokerRequestExecutor">\r
+ class="eu.etaxonomy.taxeditor.service.CdmServiceRequestExecutor">\r
<property name="readTimeout" value="0" />\r
</bean>\r
</property>\r
+++ /dev/null
-#\r
-#\r
-# If you are having problems with logging you may debug Log4J initialization,\r
-# start the application with a system property log4j.configDebug set to "true".\r
-# E.g.:\r
-#\r
-# java -Dlog4j.configDebug=true\r
-#\r
-log4j.rootLogger=WARN, stdout\r
-\r
-\r
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender\r
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n\r
-\r
-##\r
-## NOTICE !!!!\r
-## no need to configure a FileAppender here\r
-## use eu.etaxonomy.cdm.remote.config.LoggingConfigurer instead\r
-##\r
-\r
-###\r
-# cdm\r
-###\r
-#log4j.logger.eu.etaxonomy.cdm = INFO\r
-#log4j.logger.eu.etaxonomy.taxeditor.remoting.source = INFO\r
-#log4j.logger.eu.etaxonomy.taxeditor.remoting.cache = INFO\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
+ debug="false">
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %p [%c] - %m%n" />
+ </layout>
+ <filter class="org.apache.log4j.filter.ExpressionFilter">
+ <param name="expression"
+ value="msg like '.*has a maxElementsInMemory of 0. This might lead to performance degradation or OutOfMemoryError at Terracotta client.*'" />
+ <param name="acceptOnMatch" value="false" />
+ </filter>
+ <filter class="org.apache.log4j.filter.ExpressionFilter">
+ <param name="expression"
+ value="msg like '.*[net.sf.ehcache.pool.sizeof.SizeOf] - The configured limit of.*'" />
+ <param name="acceptOnMatch" value="false" />
+ </filter>
+ </appender>
+ <root>
+ <priority value="WARN" />
+ <appender-ref ref="CONSOLE" />
+ </root>
+ <logger name="org.hibernate.proxy.AbstractLazyInitializer">
+ <level value="info" />
+ </logger>
+ <logger
+ name="org.hibernate.collection.internal.AbstractPersistentCollection">
+ <level value="info" />
+ </logger>
+</log4j:configuration>
\ No newline at end of file
return defaultService.delete(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<AgentBase> merge(List<AgentBase> arg0) {
+ return defaultService.merge(arg0);
+ }
+
}
return defaultService.delete(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<Classification> merge(List<Classification> arg0) {
+ return defaultService.merge(arg0);
+ }
+
}
return defaultService.delete(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<Collection> merge(List<Collection> arg0) {
+ return defaultService.merge(arg0);
+ }
+
}
return defaultService.delete(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<DescriptionBase> merge(List<DescriptionBase> arg0) {
+ return defaultService.merge(arg0);
+ }
+
}
public DeleteResult delete(Collection<UUID> arg0) {
return defaultService.delete(arg0);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<TaxonNameBase> merge(List<TaxonNameBase> arg0) {
+ return defaultService.merge(arg0);
+ }
}
return defaultService.delete(arg0);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<SpecimenOrObservationBase> merge(List<SpecimenOrObservationBase> arg0) {
+ return defaultService.merge(arg0);
+ }
+
}
public DeleteResult delete(Collection<UUID> arg0) {
return defaultService.delete(arg0);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<Reference> merge(List<Reference> arg0) {
+ return defaultService.merge(arg0);
+ }
}
public DeleteResult delete(Collection<UUID> arg0) {
return defaultService.delete(arg0);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<TaxonBase> merge(List<TaxonBase> arg0) {
+ return defaultService.merge(arg0);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonym(java.util.UUID, eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator)
+ */
+ @Override
+ public DeleteResult deleteSynonym(UUID arg0, SynonymDeletionConfigurator arg1) {
+ return defaultService.deleteSynonym(arg0, arg1);
+ }
}
public DeleteResult delete(Collection<UUID> arg0) {
return defaultService.delete(arg0);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
+ */
+ @Override
+ public List<DefinedTermBase> merge(List<DefinedTermBase> arg0) {
+ return defaultService.merge(arg0);
+ }
}
logger.debug("User authenticated: " + user.getUsername() + "\n" + gaText.toString());
}
- authentication = new UsernamePasswordAuthenticationToken(username,password, authentication.getAuthorities());
+ authentication = new UsernamePasswordAuthenticationToken(user,password, authentication.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
if(!authentication.equals(lastAuthentication)){
* @return a {@link eu.etaxonomy.cdm.model.common.User} object.
*/
public User getAuthenticatedUser(){
- Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+ Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if(authentication != null
&& authentication.getPrincipal() != null
<priority value ="WARN" />
<appender-ref ref="CONSOLE"/>
</root>
+ <logger name="org.hibernate.proxy.AbstractLazyInitializer">
+ <level value="info"/>
+ </logger>
+ <logger name="org.hibernate.collection.internal.AbstractPersistentCollection">
+ <level value="info"/>
+ </logger>
</log4j:configuration>
\ No newline at end of file