Moving editor sources back into trunk
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / propertysheet / type / wizard / TypeListWizard.java
1 /**
2 * Copyright (C) 2009 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
10 package eu.etaxonomy.taxeditor.propertysheet.type.wizard;
11
12 import org.apache.log4j.Logger;
13 import org.eclipse.core.databinding.observable.list.WritableList;
14 import org.eclipse.jface.wizard.IWizardPage;
15 import org.eclipse.jface.wizard.Wizard;
16
17 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
18 import eu.etaxonomy.cdm.model.common.CdmBase;
19 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
20 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
21 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
22 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
23 import eu.etaxonomy.cdm.model.occurrence.Specimen;
24 import eu.etaxonomy.taxeditor.store.model.NameUtil;
25
26 /**
27 * @author p.ciardelli
28 * @created 11.02.2009
29 * @version 1.0
30 */
31 public class TypeListWizard extends Wizard {
32 private static Logger logger = Logger.getLogger(TypeListWizard.class);
33
34 private TaxonNameBase name;
35 private WritableList typeDesignationsList;
36
37 /**
38 * @param name
39 */
40 public TypeListWizard(TaxonNameBase name) {
41 super();
42
43 this.name = name;
44 this.typeDesignationsList = new WritableList();
45 if (name != null) {
46 if (NameUtil.isNameSupraSpecific(name)) {
47 this.typeDesignationsList.addAll(name.getNameTypeDesignations());
48 } else {
49 this.typeDesignationsList.addAll(name.getSpecimenTypeDesignations());
50 }
51 }
52 }
53
54 public void addPages(){
55 IWizardPage chooseTypePage = new ListTypeWizardPage(name, typeDesignationsList);
56 addPage(chooseTypePage);
57 }
58
59 /* (non-Javadoc)
60 * @see org.eclipse.jface.wizard.Wizard#performFinish()
61 */
62 @Override
63 public boolean performFinish() {
64
65 if (name != null) {
66
67 if (NameUtil.isNameSupraSpecific(name)) {
68
69 // Remove all designations
70 for (Object typeDesignation : name.getNameTypeDesignations()) {
71 if (typeDesignation instanceof NameTypeDesignation) {
72 name.removeTypeDesignation((NameTypeDesignation) typeDesignation);
73 }
74 }
75
76 // Then re-add them from list
77 for (Object typeDesignation : typeDesignationsList) {
78 if (typeDesignation instanceof NameTypeDesignation) {
79 name.addNameTypeDesignation(
80 ((NameTypeDesignation) typeDesignation).getTypeName(),
81 ((NameTypeDesignation) typeDesignation).getCitation(),
82 ((NameTypeDesignation) typeDesignation).getCitationMicroReference(),
83 ((NameTypeDesignation) typeDesignation).getOriginalNameString(),
84 ((NameTypeDesignation) typeDesignation).isRejectedType(),
85 ((NameTypeDesignation) typeDesignation).isConservedType(),
86 ((NameTypeDesignation) typeDesignation).isLectoType(),
87 ((NameTypeDesignation) typeDesignation).isNotDesignated(),
88 false);
89 }
90 }
91
92 } else {
93
94 // Remove all designations
95 for (Object typeDesignation : name.getSpecimenTypeDesignations()) {
96 if (typeDesignation instanceof SpecimenTypeDesignation) {
97 name.removeTypeDesignation((SpecimenTypeDesignation) typeDesignation);
98 }
99 }
100
101 // Then re-add them from list
102 for (Object typeDesignation : typeDesignationsList) {
103 if (typeDesignation instanceof SpecimenTypeDesignation) {
104
105 SpecimenTypeDesignation specimenTypeDesignation = (SpecimenTypeDesignation) typeDesignation;
106
107 Specimen specimen = HibernateProxyHelper.deproxy(
108 specimenTypeDesignation.getTypeSpecimen(), Specimen.class);
109
110 SpecimenTypeDesignationStatus typeStatus = HibernateProxyHelper.deproxy(
111 specimenTypeDesignation.getTypeStatus(), SpecimenTypeDesignationStatus.class);
112
113 name.addSpecimenTypeDesignation(
114 specimen,
115 typeStatus,
116 specimenTypeDesignation.getCitation(),
117 specimenTypeDesignation.getCitationMicroReference(),
118 specimenTypeDesignation.getOriginalNameString(),
119 specimenTypeDesignation.isNotDesignated(),
120 false);
121 }
122 }
123 }
124 }
125 return true;
126 }
127 }