Project

General

Profile

Download (7.34 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.List;
14
import java.util.UUID;
15

    
16
import eu.etaxonomy.cdm.api.service.IReferenceService;
17
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
18
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
19
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
20
import eu.etaxonomy.cdm.model.common.MarkerType;
21
import eu.etaxonomy.cdm.model.reference.Reference;
22
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
23
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
24
import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.ReferenceCreator;
25
import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.IdentifiableEntitySortProvider;
26
import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.ReferenceSortProvider;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28

    
29

    
30
/**
31
 *
32
 * @author p.ciardelli
33
 * @created 25.06.2009
34
 */
35
public class ReferenceEditorInput extends AbstractBulkEditorInput<Reference> {
36

    
37
	private static final long serialVersionUID = 3806243517765126749L;
38

    
39
	public static final String ID = "bulkeditor.input.reference";
40

    
41
	private static final String PROPERTY_NOMENCLATURAL_CACHE = "Nomencl. Cache";
42
	private static final String PROPERTY_PROTECT_NOMENCLATURAL_CACHE = "Protect Nomencl. Cache";
43
	private static final String PROPERTY_TITLE = "Title";
44
	private static final String PROPERTY_NOMENCLAT_TITLE = "Nomencl. Title";
45
	private static final String PROPERTY_URI = "URI";
46
	private static final String PROPERTY_JOURNAL = "In Reference";
47
	private static final String PROPERTY_PUBLICATION_YEAR = "Publication Year";
48

    
49
	private static ReferenceEditorInput instance;
50

    
51
	public static String getID() {
52
		return ID;
53
	}
54

    
55
    @Override
56
    protected List<String> getPropertyKeys_internal() {
57
        List<String> propertyKeysInternal = new ArrayList<>();
58
        propertyKeysInternal.add(PROPERTY_NOMENCLATURAL_CACHE);
59
        propertyKeysInternal.add(PROPERTY_PROTECT_NOMENCLATURAL_CACHE);
60
        propertyKeysInternal.add(PROPERTY_TITLE);
61
        propertyKeysInternal.add(PROPERTY_NOMENCLAT_TITLE);
62
        propertyKeysInternal.add(PROPERTY_PUBLICATION_YEAR);
63
        propertyKeysInternal.add(PROPERTY_JOURNAL);
64
        propertyKeysInternal.add(PROPERTY_URI);
65
        return propertyKeysInternal;
66
    }
67

    
68
    @Override
69
    public Object getPropertyValue(Reference cdmBase, String property) {
70
        if(property.equals(PROPERTY_NOMENCLATURAL_CACHE)){
71
            return cdmBase.getAbbrevTitleCache();
72
        }
73
        else if(property.equals(PROPERTY_PROTECT_NOMENCLATURAL_CACHE)){
74
            return cdmBase.isProtectedAbbrevTitleCache();
75
        }
76
        else if(property.equals(PROPERTY_TITLE)){
77
            return cdmBase.getTitle();
78
        }
79
        else if(property.equals(PROPERTY_NOMENCLAT_TITLE)){
80
            return cdmBase.getAbbrevTitle();
81
        }
82
        else if(property.equals(PROPERTY_PUBLICATION_YEAR)){
83
            if (cdmBase.getDatePublished() != null){
84
                String result = cdmBase.getDatePublished().getYear();
85
                if (!cdmBase.getDatePublished().getYear().equals(cdmBase.getDatePublishedString()) && cdmBase.getDatePublishedString() != null) {
86
                    result += " (" + cdmBase.getDatePublishedString()+")";
87
                }
88
                return result ;
89
            }else if(cdmBase.getDatePublished() == null && cdmBase.getInReference() != null ){
90
                String result = cdmBase.getInReference().getDatePublished().getYear();
91
                if (!cdmBase.getInReference().getDatePublished().getYear().equals(cdmBase.getInReference().getDatePublishedString()) ) {
92
                    result += " (" + cdmBase.getInReference().getDatePublishedString()+")";
93
                }
94
                return result ;
95

    
96
            }else{
97

    
98
                return null;
99
            }
100
        }
101
        else if(property.equals(PROPERTY_JOURNAL)){
102
            if (cdmBase.getInReference() != null){
103
                return cdmBase.getInReference().getTitleCache();
104
            }else{
105
                return null;
106
            }
107

    
108
        }
109
        else if(property.equals(PROPERTY_URI)){
110
            if (cdmBase.getUri() != null){
111
                return cdmBase.getUri().toString();
112
            }else{
113
                return null;
114
            }
115
        }
116
        return super.getPropertyValue(cdmBase, property);
117
    }
118

    
119
    @Override
120
    public boolean isBooleanProperty(String property) {
121
        if(property.equals(PROPERTY_PROTECT_NOMENCLATURAL_CACHE)){
122
            return true;
123
        }
124
        return super.isBooleanProperty(property);
125
    }
126

    
127
    @Override
128
    public boolean isCacheProperty(String property) {
129
        if(property.equals(PROPERTY_PROTECT_NOMENCLATURAL_CACHE)){
130
            return true;
131
        }
132
        return super.isBooleanProperty(property);
133
    }
134

    
135
    @Override
136
    public String getName() {
137
		return BulkEditorInputType.REFERENCE.label;
138
	}
139

    
140
	public static AbstractBulkEditorInput getInstance() {
141
		if (instance == null) {
142
			instance = new ReferenceEditorInput();
143
		}
144
		return instance;
145
	}
146

    
147
	@Override
148
	public boolean isMergingEnabled() {
149
		return true;
150
	}
151

    
152
	@Override
153
	public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {
154
		if (MarkerType.PUBLISH().equals(markerType)) {
155
			return true;
156
		}
157
		return super.isMarkerTypeEditingEnabled(markerType);
158
	}
159

    
160
    @Override
161
    protected long countEntities(IIdentifiableEntityServiceConfigurator configurator) {
162
        return CdmStore.getService(IReferenceService.class).countByTitle(configurator);
163
    }
164

    
165
	@Override
166
	public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
167
		return CdmStore.getSearchManager().findReferences(configurator);
168
	}
169

    
170
	// Entity persistence
171

    
172
	@Override
173
	public Reference loadEntity(UUID entityUuid) {
174
		List<String> propertyPaths = Arrays.asList(new String[]{"*", "inReference.*", "authorTeam.*"});
175
		return CdmStore.getService(IReferenceService.class).load(entityUuid, propertyPaths);
176
	}
177

    
178
	@Override
179
    public boolean delete(Reference entity, DeleteConfiguratorBase config) throws ReferencedObjectUndeletableException {
180
	    if (entity.getUuid() != null){
181
	        return CdmStore.getService(IReferenceService.class).delete(entity.getUuid()) != null;
182
	    }else{
183
	        return false;
184
	    }
185
	}
186

    
187
	@Override
188
    public Reference save(Reference entity) {
189
	   return CdmStore.getService(IReferenceService.class).merge(entity, true).getMergedEntity();
190
	}
191

    
192
	@Override
193
	protected IEntityCreator<Reference> createEntityCreator() {
194
		return new ReferenceCreator();
195
	}
196

    
197
	@Override
198
	public List<IBulkEditorSortProvider<Reference>> getSortProviders() {
199
		List<IBulkEditorSortProvider<Reference>> sortProviders = super.getSortProviders();
200

    
201
		sortProviders.add(0, new IdentifiableEntitySortProvider<Reference>());
202
		sortProviders.add(1, new ReferenceSortProvider());
203

    
204
		return sortProviders;
205
	}
206

    
207
	@Override
208
	public String getTypeText(Object entity) {
209
		if(entity instanceof Reference){
210
			return ((Reference) entity).getType().getMessage(CdmStore.getDefaultLanguage());
211
		}
212
		return super.getTypeText(entity);
213
	}
214

    
215
    @Override
216
    public void merge() {
217

    
218
    }
219

    
220
}
(9-9/11)