Project

General

Profile

Download (5.2 KB) Statistics
| Branch: | Tag: | Revision:
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
package eu.etaxonomy.taxeditor.bulkeditor.input;
11

    
12
import java.util.Arrays;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import eu.etaxonomy.cdm.api.service.IAgentService;
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)
159
			throws ReferencedObjectUndeletableException {
160
		// TODO Auto-generated method stub
161
		return false;
162
	}
163

    
164
    /* (non-Javadoc)
165
     * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#merge()
166
     */
167
    @Override
168
    public void merge() {
169

    
170
    }
171

    
172

    
173
	@Override
174
	protected TeamOrPersonBase loadEntity(UUID entityUuid) {
175
		List<String> propertyPaths = Arrays.asList(new String[]{});
176
		return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), TeamOrPersonBase.class);
177
	}
178

    
179

    
180

    
181
}
(2-2/12)