Project

General

Profile

Download (2.83 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 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.cdm.remote.controller;
10

    
11
import java.io.IOException;
12
import java.util.Arrays;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import javax.servlet.http.HttpServletRequest;
17
import javax.servlet.http.HttpServletResponse;
18

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

    
26
import eu.etaxonomy.cdm.api.service.ITermService;
27
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
28
import eu.etaxonomy.cdm.model.term.OrderedTermBase;
29
import io.swagger.annotations.Api;
30

    
31
/**
32
 * @author a.kohlbecker
33
 * @since 22.07.2010
34
 *
35
 */
36
@Controller
37
@Api("term")
38
@RequestMapping(value = {"/term/{uuid}"})
39
public class TermController
40
        extends AbstractIdentifiableController<DefinedTermBase, ITermService> {
41

    
42
    private static final List<String> TERM_COMPARE_INIT_STRATEGY = Arrays.asList(new String []{
43
            "vocabulary"
44
    });
45

    
46
    @Autowired
47
    @Override
48
    public void setService(ITermService service) {
49
        this.service = service;
50
    }
51

    
52
    /**
53
     * TODO write controller method documentation
54
     *
55
     * @param request
56
     * @param response
57
     * @return
58
     * @throws IOException
59
     */
60
    @RequestMapping(method = RequestMethod.GET,	value = "compareTo/{uuidThat}")
61
    public ModelAndView doCompare(
62
            @PathVariable("uuid") UUID uuid,
63
            @PathVariable("uuidThat") UUID uuidThat,
64
            HttpServletRequest request, HttpServletResponse response) throws IOException {
65
        ModelAndView mv = new ModelAndView();
66
        DefinedTermBase<?> thisTerm = service.load(uuid, TERM_COMPARE_INIT_STRATEGY);
67
        DefinedTermBase<?> thatTerm = service.load(uuidThat, TERM_COMPARE_INIT_STRATEGY);
68
        if(thisTerm.getVocabulary().equals(thatTerm.getVocabulary())){
69
            if(OrderedTermBase.class.isAssignableFrom(thisTerm.getClass())){
70
                Integer result = ((OrderedTermBase)thisTerm).compareTo((OrderedTermBase)thatTerm);
71
                mv.addObject(result);
72
                return mv;
73
            }else{
74
                response.sendError(400, "Only ordered term types can be compared");
75
                return mv;
76
            }
77
        }else{
78
            response.sendError(400, "Terms of different vocabuaries can not be compared");
79
            return mv;
80
        }
81
    }
82
}
(64-64/70)