Project

General

Profile

« Previous | Next » 

Revision 37f997b9

Added by Patrick Plitzner over 8 years ago

Remove unused entity cloning

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
8 8
import java.util.Observer;
9 9

  
10 10
import org.eclipse.core.runtime.IStatus;
11
import org.eclipse.core.runtime.NullProgressMonitor;
12 11
import org.eclipse.jface.wizard.WizardDialog;
13 12
import org.eclipse.swt.SWT;
14 13
import org.eclipse.swt.events.SelectionAdapter;
......
24 23

  
25 24
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
26 25
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
27
import eu.etaxonomy.cdm.api.service.IAgentService;
28
import eu.etaxonomy.cdm.api.service.ICollectionService;
29
import eu.etaxonomy.cdm.api.service.INameService;
30
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
31
import eu.etaxonomy.cdm.api.service.IReferenceService;
32
import eu.etaxonomy.cdm.api.service.IService;
33
import eu.etaxonomy.cdm.api.service.IUserService;
34
import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService;
35
import eu.etaxonomy.cdm.api.service.molecular.IPrimerService;
36 26
import eu.etaxonomy.cdm.common.CdmUtils;
37
import eu.etaxonomy.cdm.model.agent.Institution;
38
import eu.etaxonomy.cdm.model.agent.Person;
39
import eu.etaxonomy.cdm.model.agent.Team;
40 27
import eu.etaxonomy.cdm.model.common.CdmBase;
41 28
import eu.etaxonomy.cdm.model.common.Group;
42 29
import eu.etaxonomy.cdm.model.common.ICdmBase;
......
44 31
import eu.etaxonomy.cdm.model.common.User;
45 32
import eu.etaxonomy.cdm.model.molecular.Amplification;
46 33
import eu.etaxonomy.cdm.model.molecular.Primer;
47
import eu.etaxonomy.cdm.model.name.NonViralName;
48
import eu.etaxonomy.cdm.model.occurrence.Collection;
49
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
50
import eu.etaxonomy.cdm.model.reference.Reference;
51 34
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
52 35
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
53
import eu.etaxonomy.taxeditor.model.AbstractUtility;
54 36
import eu.etaxonomy.taxeditor.model.ImageResources;
55
import eu.etaxonomy.taxeditor.model.MessagingUtils;
56 37
import eu.etaxonomy.taxeditor.preference.Resources;
57 38
import eu.etaxonomy.taxeditor.store.CdmStore;
58 39
import eu.etaxonomy.taxeditor.store.LoginManager;
......
429 410

  
430 411
	private class EditListener extends SelectionAdapter {
431 412

  
432
        private static final String TRANSIENT_EDITING_WARNING_TEXT = "Warning: All changes for this element are directly reflected in the data base.\nThe \"Cancel\" button has no effect";
433
        private static final String TRANSIENT_EDITING_WARNING_TITLE = "CDM element not yet saved.";
434 413
        private final EntitySelectionElement<T> selectionElement;
435 414

  
436 415
		public EditListener(EntitySelectionElement<T> selectionElement) {
......
440 419
		/** {@inheritDoc} */
441 420
		@Override
442 421
		public void widgetSelected(SelectionEvent e) {
443
		    T originalEntity = selectionElement.getEntity();
444
		    T clonedEntity = null;
445
		    IService<T> service = null;
446
		    if(originalEntity instanceof CdmBase){
447
		        //get corresponding service
448
		        if(entity instanceof Reference<?>){
449
		            service = (IService<T>) CdmStore.getService(IReferenceService.class);
450
		        }
451
		        else if (entity instanceof Team || entity instanceof Person || entity instanceof Institution) {
452
		            service = (IService<T>) CdmStore.getService(IAgentService.class);
453
		        }
454
		        else if (entity instanceof NonViralName) {
455
		            service = (IService<T>) CdmStore.getService(INameService.class);
456
		        }
457
		        else if (entity instanceof SpecimenOrObservationBase) {
458
		            service = (IService<T>) CdmStore.getService(IOccurrenceService.class);
459
		        }
460
		        else if (entity instanceof Collection) {
461
		            service = (IService<T>) CdmStore.getService(ICollectionService.class);
462
		        }
463
		        else if (entity instanceof User) {
464
		            service = (IService<T>) CdmStore.getService(IUserService.class);
465
		        }
466
		        else if (entity instanceof Primer) {
467
		            service = (IService<T>) CdmStore.getService(IPrimerService.class);
468
		        }
469
		        else if (entity instanceof Amplification) {
470
		            service = (IService<T>) CdmStore.getService(IAmplificationService.class);
471
		        }
472
		        //check if original already exists in data base. If not then do not clone and all changes will be persisted directly -> Warning to user.
473
                if(service !=null && service.find(originalEntity.getUuid())==null && originalEntity.getId() != 0){
474
                    if(MessagingUtils.confirmDialog(TRANSIENT_EDITING_WARNING_TITLE, "["+originalEntity.getClass().getSimpleName()+"]"+originalEntity + " has to be saved before it can be edited. Save now?")){
475
                        service.save(originalEntity);
476
                        AbstractUtility.getActiveEditor().doSave(new NullProgressMonitor());
477
                    }
478
                    else{
479
                        //transient CDM elements should not be edited to avoid merge conflicts
480
                        // when the elements are cascaded
481
                        return;
482
                    }
483
                }
484
                else{
485
                    //FIXME temporarily disabled cloning re-opening bug #2645 (EditFromSelectionWizard persists data even when canceled)
486
//                    try {
487
//                        //clone original
488
//                        clonedEntity = (T) ((CdmBase) originalEntity).clone();
489
//                    } catch (CloneNotSupportedException e1) {
490
//                        MessagingUtils.warningDialog(TRANSIENT_EDITING_WARNING_TITLE, this, TRANSIENT_EDITING_WARNING_TEXT);
491
//                    }
492
                }
493

  
494
		    }
495
		    if(clonedEntity!=null){
496
		        selectionElement.setEntity(clonedEntity);
497
		    }
498 422
			WizardDialog dialog = new WizardDialog(selectionElement.getShell(),
499 423
					new EditFromSelectionWizard(selectionElement));
500 424
			if (dialog.open() == IStatus.OK) {
501
			    if(service!=null && clonedEntity!=null){//check if cloning happened
502
			        T editedClonedEntity = selectionElement.getEntity();
503
			        editedClonedEntity.setId(originalEntity.getId());
504
			        editedClonedEntity.setUuid(originalEntity.getUuid());
505

  
506
			        //merge clone and original
507
			        service.merge(editedClonedEntity);
508
			        originalEntity = service.load(originalEntity.getUuid());
509

  
510
			    }
511
			    selectionElement.setEntity(originalEntity);
512 425
				selectionElement.updateFromWizard();
513 426
			}
514
			//be sure to reset to original in all cases
515
			selectionElement.setEntity(originalEntity);
516
			selectionElement.refresh();
517 427
		}
518 428
	}
519 429

  

Also available in: Unified diff