Merge branch 'release/5.19.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / operation / AddDerivedUnitFacadeMediaOperation.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
10
11 import org.eclipse.core.commands.ExecutionException;
12 import org.eclipse.core.commands.operations.IUndoContext;
13 import org.eclipse.core.runtime.IAdaptable;
14 import org.eclipse.core.runtime.IProgressMonitor;
15 import org.eclipse.core.runtime.IStatus;
16 import org.eclipse.core.runtime.Status;
17
18 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
19 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
20 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
21 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
22 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
23 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
24 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
25 import eu.etaxonomy.taxeditor.model.MessagingUtils;
26 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
27 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
28
29 /**
30 * @author n.hoffmann
31 * @created Feb 11, 2011
32 */
33 public class AddDerivedUnitFacadeMediaOperation extends AbstractPostTaxonOperation {
34
35 private static final String ONLY_ONE_IMAGE_GALLERY_IS_POSSIBLE = Messages.AddDerivedUnitFacadeMediaOperation_CREATE_FAILED_MESSAGE;
36 private static final String IMAGE_GALLERY_CREATION_FAILED = Messages.AddDerivedUnitFacadeMediaOperation_CREATE_FAILED;
37 private final SpecimenOrObservationBase<?> specimen;
38
39 /**
40 * @param label
41 * @param undoContext
42 * @param postOperationEnabled
43 */
44 public AddDerivedUnitFacadeMediaOperation(String label, IUndoContext undoContext, SpecimenOrObservationBase<?> specimen,
45 IPostOperationEnabled postOperationEnabled) {
46 super(label, undoContext, postOperationEnabled);
47
48 this.specimen = specimen;
49 }
50
51 @Override
52 public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
53 DerivedUnitFacade facade;
54 try {
55 if(specimen instanceof FieldUnit){
56 facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit) specimen);
57 if(facade.hasFieldObjectImageGallery()){
58 MessagingUtils.informationDialog(IMAGE_GALLERY_CREATION_FAILED, ONLY_ONE_IMAGE_GALLERY_IS_POSSIBLE);
59 return Status.CANCEL_STATUS;
60 }
61 else{
62 facade.getFieldObjectImageGallery(true);
63 }
64 }
65 else if(specimen instanceof DerivedUnit){
66 facade = DerivedUnitFacade.NewInstance((DerivedUnit)specimen);
67 if(facade.hasDerivedUnitImageGallery()){
68 MessagingUtils.informationDialog(IMAGE_GALLERY_CREATION_FAILED, ONLY_ONE_IMAGE_GALLERY_IS_POSSIBLE);
69 return Status.CANCEL_STATUS;
70 }
71 else{
72 facade.getDerivedUnitImageGallery(true);
73 }
74 }
75 } catch (DerivedUnitFacadeNotSupportedException e) {
76 MessagingUtils.error(getClass(), e);
77 }
78
79 return postExecute(specimen);
80 }
81
82 @Override
83 public IStatus redo(IProgressMonitor monitor, IAdaptable info)
84 throws ExecutionException {
85 // TODO Auto-generated method stub
86 return null;
87 }
88
89 @Override
90 public IStatus undo(IProgressMonitor monitor, IAdaptable info)
91 throws ExecutionException {
92 // TODO Auto-generated method stub
93 return null;
94 }
95 }