ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / AgentEditorInput.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.bulkeditor.input;
10
11 import java.util.Arrays;
12 import java.util.List;
13 import java.util.UUID;
14
15 import eu.etaxonomy.cdm.api.service.IAgentService;
16 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
17 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
18 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
19 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
20 import eu.etaxonomy.cdm.model.agent.AgentBase;
21 import eu.etaxonomy.cdm.model.agent.Person;
22 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
23 import eu.etaxonomy.cdm.strategy.merge.DefaultMergeStrategy;
24 import eu.etaxonomy.cdm.strategy.merge.IMergable;
25 import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
26 import eu.etaxonomy.cdm.strategy.merge.MergeException;
27 import eu.etaxonomy.cdm.strategy.merge.MergeMode;
28 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
29 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
30 import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.AgentCreator;
31 import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.IdentifiableEntitySortProvider;
32 import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin;
33 import eu.etaxonomy.taxeditor.model.MessagingUtils;
34 import eu.etaxonomy.taxeditor.store.CdmStore;
35
36
37 /**
38 * @author p.ciardelli
39 * @created 25.06.2009
40 * @version 1.0
41 */
42 public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase> {
43
44 private static final long serialVersionUID = 3387950621617078479L;
45
46 public static final String ID = "bulkeditor.input.author";
47
48 private static AgentEditorInput instance;
49
50 public static String getID() {
51 return ID;
52 }
53
54
55 @Override
56 public String getName() {
57 return BulkEditorInputType.AGENT.label;
58 }
59
60
61 @Override
62 public String getToolTipText() {
63 return getName();
64 }
65
66 public static AbstractBulkEditorInput getInstance() {
67 if (instance == null) {
68 instance = new AgentEditorInput();
69 }
70 return instance;
71 }
72
73 /** {@inheritDoc} */
74 @Override
75 public boolean isMergingEnabled() {
76 return true;
77 }
78
79
80 /** {@inheritDoc} */
81 @Override
82 public boolean isConvertingEnabled() {
83 return true;
84 }
85
86 /** {@inheritDoc} */
87 @Override
88 public boolean merge(TeamOrPersonBase entity, TeamOrPersonBase mergeTarget) {
89 if (entity instanceof IMergable) {
90 try {
91 if(entity instanceof Person && mergeTarget instanceof Person) {
92 IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(Person.class);
93 strategy.setMergeMode("institutionalMemberships", MergeMode.FIRST);
94 CdmStore.getCommonService().merge(mergeTarget.getUuid(), entity.getUuid(), Person.class);
95 } else {
96 IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(TeamOrPersonBase.class);
97 CdmStore.getCommonService().merge(mergeTarget.getUuid(), entity.getUuid(), TeamOrPersonBase.class);
98 }
99 } catch (MergeException e) {
100 MessagingUtils.errorDialog("Bulk Editor Merge Error",
101 this,
102 "Could not merge chosen objects of type " + entity.getClass().getName(),
103 TaxeditorBulkeditorPlugin.PLUGIN_ID,
104 e,
105 true);
106 }
107 }
108 return true;
109 }
110
111 /** {@inheritDoc} */
112 @Override
113 public List<TeamOrPersonBase> listEntities(IIdentifiableEntityServiceConfigurator configurator) {
114 return CdmStore.getSearchManager().findTeamOrPersons(configurator);
115 }
116
117 /** {@inheritDoc}
118 @Override
119 public AgentBase loadEntity(UUID uuid) {
120 List<String> propertyPaths = Arrays.asList(new String[]{});
121 return CdmStore.getService(IAgentService.class).load(uuid, propertyPaths);
122 }*/
123
124
125 public boolean delete(AgentBase entity) throws ReferencedObjectUndeletableException {
126 return CdmStore.getService(IAgentService.class).delete(entity) != null;
127
128 }
129
130 /** {@inheritDoc} */
131 public boolean save(AgentBase entity) {
132
133 return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
134 }
135
136 @Override
137 public List<IBulkEditorSortProvider<TeamOrPersonBase>> getSortProviders() {
138 List<IBulkEditorSortProvider<TeamOrPersonBase>> sortProviders = super.getSortProviders();
139
140 sortProviders.add(0, new IdentifiableEntitySortProvider<TeamOrPersonBase>());
141
142 return sortProviders;
143 }
144
145
146 @Override
147 protected IEntityCreator<TeamOrPersonBase> createEntityCreator() {
148 return new AgentCreator();
149 }
150
151 @Override
152 public TeamOrPersonBase save(TeamOrPersonBase entity) {
153 return (TeamOrPersonBase) CdmStore.getService(IAgentService.class).merge(entity, true).getMergedEntity();
154
155 }
156
157 @Override
158 public boolean delete(TeamOrPersonBase entity, DeleteConfiguratorBase config)
159 throws ReferencedObjectUndeletableException {
160 return CdmStore.getService(IAgentService.class).delete(entity.getUuid()) != null;
161 }
162
163 /* (non-Javadoc)
164 * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#merge()
165 */
166 @Override
167 public void merge() {
168
169 }
170
171
172 @Override
173 protected TeamOrPersonBase loadEntity(UUID entityUuid) {
174 List<String> propertyPaths = Arrays.asList(new String[]{});
175 return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), TeamOrPersonBase.class);
176 }
177
178
179
180 }