Project

General

Profile

Download (4.15 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
	public long count() {
87
		return dao.count();
88
	}
89

    
90
	@Override
91
    public List<CdmPreference> list() {
92
        return dao.list();
93
    }
94

    
95

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

    
101
    @Override
102
    public Object find(TaxonNode taxonNode, String predicate) {
103
        return dao.find(taxonNode, predicate);
104
    }
105

    
106
    @Override
107
    public CdmPreference find(TaxonNode taxonNode, IPreferencePredicate<?> predicate){
108
        return dao.find(taxonNode, predicate.getKey());
109
    }
110

    
111

    
112
// ********************** NOT YET HANDLED *******************/
113

    
114

    
115
    @Override
116
    public List<CdmPreference> list(String subject, String predicate) {
117
        //FIXME
118
        throw new RuntimeException("list(String, String) not yet implemented" );
119
    }
120

    
121
    @Override
122
    //this method is only partly implemented
123
    public CdmPreference find(CdmBase taxonNodeRelatedCdmBase, String predicate) {
124
        TaxonNode taxonNode = mapToTaxonNode(taxonNodeRelatedCdmBase);
125
        return dao.find(taxonNode, predicate);
126
    }
127

    
128
    /**
129
     * @param taxonNodeRelatedCdmBase
130
     * @return
131
     */
132
    private TaxonNode mapToTaxonNode(CdmBase taxonNodeRelatedCdmBase) {
133
        if (taxonNodeRelatedCdmBase == null){
134
            return null;
135
        }else if (taxonNodeRelatedCdmBase.isInstanceOf(TaxonNode.class)){
136
            return CdmBase.deproxy(taxonNodeRelatedCdmBase, TaxonNode.class);
137
        }else{
138
            throw new RuntimeException("mapToTaxonNode not yet implemented for " + taxonNodeRelatedCdmBase.getClass().getSimpleName());
139
        }
140
    }
141

    
142

    
143
//    @Override
144
//    public String setCdmPrefs(CdmBase cdmBase, String predicate, String value) {
145
//        // TODO Auto-generated method stub
146
//        return null;
147
//    }
148

    
149

    
150
}
(86-86/103)