51568f5cb3226443348f0dd49c99e4998f79ddfb
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / NameEditorInput.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.bulkeditor.input;
12
13 import java.util.ArrayList;
14 import java.util.Arrays;
15 import java.util.List;
16 import java.util.UUID;
17
18 import eu.etaxonomy.cdm.api.service.INameService;
19 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
20 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
21 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
22 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
23 import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.NameCreator;
24 import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.IdentifiableEntitySortProvider;
25 import eu.etaxonomy.taxeditor.store.CdmStore;
26
27 /**
28 * <p>NameEditorInput class.</p>
29 *
30 * @author p.ciardelli
31 * @created 20.08.2009
32 * @version 1.0
33 */
34 public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
35
36 /**
37 *
38 */
39 private static final long serialVersionUID = -3085029575759626823L;
40 private static NameEditorInput instance;
41
42 /** Constant <code>ID="bulkeditor.input.name"</code> */
43 public static final String ID = "bulkeditor.input.name";
44
45 /**
46 * <p>Getter for the field <code>instance</code>.</p>
47 *
48 * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
49 */
50 public static AbstractBulkEditorInput getInstance() {
51 if (instance == null) {
52 instance = new NameEditorInput();
53 }
54 return instance;
55 }
56
57 /* (non-Javadoc)
58 * @see org.eclipse.ui.IEditorInput#getName()
59 */
60 /**
61 * <p>getName</p>
62 *
63 * @return a {@link java.lang.String} object.
64 */
65 @Override
66 public String getName() {
67 return BulkEditorInputType.NAME.label;
68 }
69
70 /* (non-Javadoc)
71 * @see org.eclipse.ui.IEditorInput#getToolTipText()
72 */
73 /**
74 * <p>getToolTipText</p>
75 *
76 * @return a {@link java.lang.String} object.
77 */
78 @Override
79 public String getToolTipText() {
80 return getName();
81 }
82
83 /**
84 * <p>getID</p>
85 *
86 * @return a {@link java.lang.Object} object.
87 */
88 public static Object getID() {
89 return ID;
90 }
91
92 /* (non-Javadoc)
93 * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled()
94 */
95 /** {@inheritDoc} */
96 @Override
97 public boolean isMergingEnabled() {
98 return false;
99 }
100
101 /** {@inheritDoc} */
102 @Override
103 public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
104
105 configurator.setPropertyPaths(getPropertyPaths());
106 return CdmStore.getSearchManager().findNames(configurator, this.getConversation());
107 }
108
109 /** {@inheritDoc}
110 @Override
111 public TaxonNameBase loadEntity(UUID uuid) {
112 List<String> propertyPaths = Arrays.asList(new String[]{});
113 return CdmStore.getService(INameService.class).load(uuid, propertyPaths);
114 }
115 */
116 /** {@inheritDoc}
117 **/
118 @Override
119 public boolean delete(TaxonNameBase entity) {
120 return CdmStore.getService(INameService.class).delete(entity) != null;
121 }
122
123 /** {@inheritDoc} */
124 @Override
125 public TaxonNameBase save(TaxonNameBase entity) {
126 TaxonNameBase mergedName = null;
127
128 if(CdmStore.getCurrentSessionManager().isRemoting()) {
129 mergedName = CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity();
130 }
131
132 return mergedName;
133
134 }
135
136 /* (non-Javadoc)
137 * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
138 */
139 @Override
140 protected IEntityCreator<TaxonNameBase> createEntityCreator() {
141 return new NameCreator();
142 }
143
144 /* (non-Javadoc)
145 * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getSortProviders()
146 */
147 @Override
148 public List<IBulkEditorSortProvider<TaxonNameBase>> getSortProviders() {
149 List<IBulkEditorSortProvider<TaxonNameBase>> sortProviders = super.getSortProviders();
150
151 sortProviders.add(0, new IdentifiableEntitySortProvider<TaxonNameBase>());
152
153 return sortProviders;
154 }
155
156 /* (non-Javadoc)
157 * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getTypeText(java.lang.Object)
158 */
159 @Override
160 public String getTypeText(Object entity) {
161 if((entity instanceof TaxonNameBase) && (((TaxonNameBase) entity).getNomenclaturalCode() != null)){
162 return ((TaxonNameBase) entity).getNomenclaturalCode().getTitleCache();
163 }
164 return super.getTypeText(entity);
165 }
166
167 /* (non-Javadoc)
168 * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getText(eu.etaxonomy.cdm.model.common.ICdmBase)
169 */
170 @Override
171 public String getText(TaxonNameBase entity) {
172 return (entity).getFullTitleCache();
173 }
174
175 /* (non-Javadoc)
176 * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#merge()
177 */
178 @Override
179 public void merge() {
180
181 }
182
183 private List<String> getPropertyPaths(){
184 List<String> nameBasePropertyPaths = Arrays.asList(new String[] {
185 "name.descriptions",
186 "name.typeDesignations",
187 "name.status",
188 "name.nomenclaturalReference.inReference",
189 "name.taxonBases.taxonNodes",
190 "name.relationsFromThisName",
191 "name.relationsToThisName",
192 "name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations.synonym.name.status",
193 "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName"});
194
195 return nameBasePropertyPaths;
196 }
197
198 }