Project

General

Profile

Download (4.36 KB) Statistics
| Branch: | Tag: | Revision:
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.ArrayList;
12
import java.util.Arrays;
13
import java.util.Comparator;
14
import java.util.HashSet;
15
import java.util.List;
16
import java.util.Set;
17
import java.util.UUID;
18

    
19
import javax.validation.ConstraintViolationException;
20

    
21
import eu.etaxonomy.cdm.api.service.IGroupService;
22
import eu.etaxonomy.cdm.api.service.IUserService;
23
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
24
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
25
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
26
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
27
import eu.etaxonomy.cdm.model.permission.Group;
28
import eu.etaxonomy.cdm.model.permission.User;
29
import eu.etaxonomy.cdm.persistence.query.OrderHint;
30
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
31
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
32
import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.GroupCreator;
33
import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.GroupNameComparator;
34
import eu.etaxonomy.taxeditor.l10n.Messages;
35
import eu.etaxonomy.taxeditor.model.MessagingUtils;
36
import eu.etaxonomy.taxeditor.store.CdmStore;
37

    
38
/**
39
 * @author n.hoffmann
40
 * @created Mar 9, 2011
41
 */
42
public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
43

    
44
	public static final String ID = "bulkeditor.input.group";
45

    
46
	private static GroupEditorInput instance;
47
	private Set<User> saveUserCandidates = new HashSet<>();
48

    
49

    
50
	public static GroupEditorInput getInstance() {
51
		if(instance == null){
52
			instance = new GroupEditorInput();
53
		}
54
		return instance;
55
	}
56

    
57
    @Override
58
    protected List<String> getPropertyKeys_internal() {
59
        List<String> propertyKeysInternal = new ArrayList<>();
60
        return propertyKeysInternal;
61
    }
62

    
63
    @Override
64
	public String getName() {
65
		return BulkEditorInputType.GROUP.label;
66
	}
67

    
68
	@Override
69
	public Group save(Group entity) {
70
		try {
71
			return CdmStore.getService(IGroupService.class).merge(entity, true).getMergedEntity();
72
		}catch (ConstraintViolationException cve){
73
		    MessagingUtils.messageDialog(Messages.GROUP_CREATOR_Name_not_accepted, getClass(), Messages.GROUP_CREATOR_Name_not_accepted_message);
74
		    return null;
75
		}
76
	}
77

    
78
	@Override
79
	public boolean delete(Group entity, DeleteConfiguratorBase config) throws ReferencedObjectUndeletableException {
80
		return CdmStore.getService(IGroupService.class).delete(entity.getUuid()) != null;
81
	}
82

    
83
	@Override
84
	protected long countEntities(IIdentifiableEntityServiceConfigurator configurator) {
85
	    //TODO there is no count method for groups
86
	    return CdmStore.getService(IGroupService.class).count(Group.class);
87
	}
88

    
89
	@Override
90
	protected List<Group> listEntities(
91
			IIdentifiableEntityServiceConfigurator configurator) {
92
	    configurator.setOrderHints(new OrderHint("name", SortOrder.ASCENDING).asList());
93
		return CdmStore.getSearchManager().findGroups(configurator);
94
	}
95

    
96
	@Override
97
	protected IEntityCreator<Group> createEntityCreator() {
98
		return new GroupCreator();
99
	}
100

    
101
	@Override
102
	public String getText(Group entity) {
103
		return entity.getName();
104
	}
105

    
106
    @Override
107
    public void merge() {
108

    
109
    }
110

    
111
	@Override
112
	protected Group loadEntity(UUID entityUuid) {
113
		List<String> propertyPaths = Arrays.asList(new String[]{});
114
		return HibernateProxyHelper.deproxy(CdmStore.getService(IGroupService.class).load(entityUuid, propertyPaths), Group.class);
115
	}
116

    
117
	@Override
118
	public Comparator<Group> getTitleComparator(){
119
        return new GroupNameComparator();
120
    }
121

    
122
	@Override
123
    public void saveModel(boolean resetMerge){
124
        super.saveModel(resetMerge);
125
        if (!saveUserCandidates.isEmpty()){
126
            CdmStore.getService(IUserService.class).merge(new ArrayList<>(saveUserCandidates), true);
127
        }
128
        saveUserCandidates.clear();
129
    }
130

    
131
	public Group getEntityFromModel(Group group){
132
	    return this.getModel().get(this.getModel().indexOf(group));
133
	}
134

    
135
    public Set<User> getSaveUserCandidates() {
136
        return saveUserCandidates;
137
    }
138

    
139
    public void setSaveUserCandidates(Set<User> saveUserCandidates) {
140
        this.saveUserCandidates = saveUserCandidates;
141
    }
142
}
(4-4/11)