Use wizard to create new specimen
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / TaxonEditorInput.java
1 package eu.etaxonomy.taxeditor.bulkeditor.input;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6 import java.util.UUID;
7
8 import eu.etaxonomy.cdm.api.service.INameService;
9 import eu.etaxonomy.cdm.api.service.ITaxonService;
10 import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl;
11 import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;
12 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
13 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
14 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
15 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
16 import eu.etaxonomy.cdm.model.taxon.Synonym;
17 import eu.etaxonomy.cdm.model.taxon.Taxon;
18 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
19 import eu.etaxonomy.cdm.persistence.query.MatchMode;
20 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
21 import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.NameCreator;
22 import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.TaxonCreator;
23 import eu.etaxonomy.taxeditor.store.CdmStore;
24
25 public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
26
27 private static TaxonEditorInput instance;
28 /** Constant <code>ID="bulkeditor.input.taxon"</code> */
29 public static final String ID = "bulkeditor.input.taxon";
30
31
32
33 /**
34 * <p>Getter for the field <code>instance</code>.</p>
35 *
36 * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
37 */
38 public static AbstractBulkEditorInput getInstance() {
39 if (instance == null) {
40 instance = new TaxonEditorInput();
41 }
42
43 return instance;
44 }
45
46
47 @Override
48 public String getName() {
49 return BulkEditorInputType.TAXON.label;
50 }
51
52 @Override
53 public String getToolTipText() {
54 return getName();
55 }
56
57
58 /**
59 * <p>getID</p>
60 *
61 * @return a {@link java.lang.Object} object.
62 */
63 public static Object getID() {
64 return ID;
65 }
66
67 /* (non-Javadoc)
68 * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled()
69 */
70 /** {@inheritDoc} */
71 @Override
72 public boolean isMergingEnabled() {
73 return false;
74 }
75 @Override
76 public boolean save(TaxonBase entity) {
77 return CdmStore.getService(ITaxonService.class).saveOrUpdate(entity) != null;
78 }
79
80
81
82 /** {@inheritDoc} */
83 @Override
84 public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
85 IFindTaxaAndNamesConfigurator<TaxonBase> newConfig = new FindTaxaAndNamesConfiguratorImpl<TaxonBase>();
86 newConfig.setTitleSearchString(configurator.getTitleSearchStringSqlized());
87 newConfig.setMatchMode(MatchMode.ANYWHERE);
88 List<TaxonBase> taxa = CdmStore.getSearchManager().findTaxa(configurator);
89 List<TaxonBase> taxaCopy = new ArrayList<TaxonBase>();
90 for (TaxonBase taxon:taxa){
91
92 if (taxon instanceof Taxon){
93 taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Taxon.class));
94 }else{
95 taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Synonym.class));
96 }
97 }
98 return taxaCopy;
99 }
100
101
102 @Override
103 protected TaxonBase loadEntity(UUID entityUuid) {
104 List<String> propertyPaths = Arrays.asList(new String[]{});
105 return CdmStore.getService(ITaxonService.class).load(entityUuid, propertyPaths);
106 }
107
108
109
110 /** {@inheritDoc}
111 * @throws ReferencedObjectUndeletableException */
112 public boolean delete(TaxonBase entity) {
113 return CdmStore.getService(ITaxonService.class).delete(entity) != null;
114 }
115 @Override
116 protected IEntityCreator<TaxonBase> createEntityCreator() {
117 return new TaxonCreator();
118 }
119
120 }