Project

General

Profile

Download (3.53 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2009 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.cdm.remote.controller.oaipmh;
11

    
12
import static eu.etaxonomy.cdm.remote.dto.oaipmh.MetadataPrefix.DWC;
13
import io.swagger.annotations.Api;
14

    
15
import java.util.Arrays;
16
import java.util.HashSet;
17
import java.util.List;
18
import java.util.Set;
19

    
20
import org.springframework.beans.factory.annotation.Autowired;
21
import org.springframework.stereotype.Controller;
22
import org.springframework.web.bind.annotation.RequestMapping;
23
import org.springframework.web.servlet.ModelAndView;
24

    
25
import eu.etaxonomy.cdm.api.service.IReferenceService;
26
import eu.etaxonomy.cdm.model.common.LSID;
27
import eu.etaxonomy.cdm.model.reference.Reference;
28
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
29
import eu.etaxonomy.cdm.model.view.AuditEventRecord;
30
import eu.etaxonomy.cdm.remote.controller.IdDoesNotExistException;
31
import eu.etaxonomy.cdm.remote.dto.oaipmh.MetadataPrefix;
32
import eu.etaxonomy.cdm.remote.dto.oaipmh.SetSpec;
33

    
34
@Controller
35
@Api("OAI-PMH References")
36
@RequestMapping(value = "/reference/oai", params = "verb")
37
public class ReferenceOaiPmhController extends AbstractOaiPmhController<Reference, IReferenceService> {
38

    
39
    @Override
40
    protected List<String> getPropertyPaths() {
41
        return Arrays.asList(new String []{
42
                "$",
43
                "inBook.authorship",
44
                "inJournal",
45
                "inProceedings",
46
        });
47
    }
48

    
49
    private static final List<String> TAXON_INIT_STRATEGY = Arrays.asList(new String []{
50
            "titleCache",
51
            "name.titleCache",
52
            "name.nomenclaturalReference.titleCache",
53
            "$"
54
            });
55

    
56
    @Override
57
    protected void addSets(ModelAndView modelAndView) {
58
        Set<SetSpec> sets = new HashSet<SetSpec>();
59
        sets.add(SetSpec.REFERENCE);
60
        modelAndView.addObject("sets",sets);
61
    }
62

    
63
    @Override
64
    @Autowired
65
    public void setService(IReferenceService service) {
66
        this.service = service;
67
    }
68

    
69

    
70
    /* (non-Javadoc)
71
     * @see eu.etaxonomy.cdm.remote.controller.AbstractOaiPmhController#finishModelAndView(eu.etaxonomy.cdm.model.common.LSID, eu.etaxonomy.cdm.remote.dto.oaipmh.MetadataPrefix, org.springframework.web.servlet.ModelAndView)
72
     */
73
    @Override
74
    protected void finishModelAndView(LSID identifier,
75
            MetadataPrefix metadataPrefix, ModelAndView modelAndView)
76
            throws IdDoesNotExistException {
77

    
78
        if(metadataPrefix.equals(DWC)){
79
            modelAndView.addObject("entitylist", obtainCoveredTaxaList(identifier, metadataPrefix));
80
            modelAndView.setViewName("oai/getRecord.dwc");
81
        } else {
82
            super.finishModelAndView(identifier, metadataPrefix, modelAndView);
83
        }
84
    }
85

    
86
    /**
87
     * @param identifier
88
     * @param metadataPrefix
89
     * @return
90
     * @throws IdDoesNotExistException
91
     */
92
    private  List<TaxonBase> obtainCoveredTaxaList(
93
            LSID identifier, MetadataPrefix metadataPrefix)
94
            throws IdDoesNotExistException {
95

    
96
        AuditEventRecord<Reference> auditEventRecord = obtainCdmEntity(identifier);
97
        Reference reference = auditEventRecord.getAuditableObject();
98
        List<TaxonBase> list = service.listCoveredTaxa(reference, true, TAXON_INIT_STRATEGY);
99
        return list;
100
    }
101

    
102

    
103

    
104
}
(2-2/3)