Project

General

Profile

Download (4.28 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

    
10
package eu.etaxonomy.cdm.api.service;
11

    
12
import java.util.List;
13

    
14
import org.apache.log4j.Logger;
15
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.stereotype.Service;
17
import org.springframework.transaction.annotation.Transactional;
18

    
19
import eu.etaxonomy.cdm.model.common.CdmBase;
20
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
21
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
22
import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
23
import eu.etaxonomy.cdm.model.metadata.PreferenceResolver;
24
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
25
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
26
import eu.etaxonomy.cdm.persistence.dao.common.IPreferenceDao;
27

    
28
/**
29
 * @author a.mueller
30
 * @since 2013-09-09
31
 */
32
@Service
33
@Transactional(readOnly = true)
34
public class PreferenceServiceImpl implements IPreferenceService {
35

    
36
    @SuppressWarnings("unused")
37
	private static final Logger logger = Logger.getLogger(PreferenceServiceImpl.class);
38

    
39
    @Autowired
40
    private IPreferenceDao dao;
41

    
42
	@Override
43
	public CdmPreference findExact(PrefKey key) {
44
		return dao.get(key);
45
	}
46

    
47
    @Override
48
    public CdmPreference find(PrefKey key) {
49
        List<CdmPreference> prefs = dao.list();
50
        CdmPreference pref = PreferenceResolver.resolve(prefs, key);
51
        return pref;
52
    }
53

    
54
    /**
55
     * {@inheritDoc}
56
     */
57
    @Override
58
    public CdmPreference findDatabase(IPreferencePredicate<?> predicate){
59
        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), predicate);
60
        return find(key);
61
    }
62

    
63
    /**
64
     * {@inheritDoc}
65
     */
66
    @Override
67
    public CdmPreference findVaadin(IPreferencePredicate<?> predicate){
68
        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewVaadinInstance(), predicate);
69
        return find(key);
70
    }
71

    
72
    @Override
73
    public CdmPreference findTaxEditor(IPreferencePredicate<?> predicate){
74
        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), predicate);
75
        return find(key);
76
    }
77

    
78

    
79
	@Override
80
    @Transactional(readOnly = false)
81
	public void set(CdmPreference preference) {
82
		dao.set(preference);
83
	}
84

    
85
	@Override
86
    @Transactional(readOnly = false)
87
    public void remove(PrefKey preference) {
88
        dao.remove(preference);
89
    }
90

    
91
	@Override
92
	public long count() {
93
		return dao.count();
94
	}
95

    
96
	@Override
97
    public List<CdmPreference> list() {
98
        return dao.list();
99
    }
100

    
101

    
102
    @Override
103
    public List<CdmPreference> list(IPreferencePredicate<?> predicate) {
104
        return dao.list(predicate);
105
    }
106

    
107
    @Override
108
    public Object find(TaxonNode taxonNode, String predicate) {
109
        return dao.find(taxonNode, predicate);
110
    }
111

    
112
    @Override
113
    public CdmPreference find(TaxonNode taxonNode, IPreferencePredicate<?> predicate){
114
        return dao.find(taxonNode, predicate.getKey());
115
    }
116

    
117

    
118
// ********************** NOT YET HANDLED *******************/
119

    
120

    
121
    @Override
122
    public List<CdmPreference> list(String subject, String predicate) {
123
        //FIXME
124
        throw new RuntimeException("list(String, String) not yet implemented" );
125
    }
126

    
127
    @Override
128
    //this method is only partly implemented
129
    public CdmPreference find(CdmBase taxonNodeRelatedCdmBase, String predicate) {
130
        TaxonNode taxonNode = mapToTaxonNode(taxonNodeRelatedCdmBase);
131
        return dao.find(taxonNode, predicate);
132
    }
133

    
134
    /**
135
     * @param taxonNodeRelatedCdmBase
136
     * @return
137
     */
138
    private TaxonNode mapToTaxonNode(CdmBase taxonNodeRelatedCdmBase) {
139
        if (taxonNodeRelatedCdmBase == null){
140
            return null;
141
        }else if (taxonNodeRelatedCdmBase.isInstanceOf(TaxonNode.class)){
142
            return CdmBase.deproxy(taxonNodeRelatedCdmBase, TaxonNode.class);
143
        }else{
144
            throw new RuntimeException("mapToTaxonNode not yet implemented for " + taxonNodeRelatedCdmBase.getClass().getSimpleName());
145
        }
146
    }
147

    
148

    
149
//    @Override
150
//    public String setCdmPrefs(CdmBase cdmBase, String predicate, String value) {
151
//        // TODO Auto-generated method stub
152
//        return null;
153
//    }
154

    
155

    
156
}
(88-88/107)