include trunk updates
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / ext / ExternalBhleController.java
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.ext;
11
12 import java.io.IOException;
13 import java.util.List;
14
15 import javax.servlet.http.HttpServletRequest;
16 import javax.servlet.http.HttpServletResponse;
17
18 import org.apache.commons.lang.ObjectUtils;
19 import org.apache.log4j.Logger;
20 import org.springframework.stereotype.Controller;
21 import org.springframework.web.bind.annotation.RequestMapping;
22 import org.springframework.web.bind.annotation.RequestMethod;
23 import org.springframework.web.bind.annotation.RequestParam;
24 import org.springframework.web.servlet.ModelAndView;
25
26 import eu.etaxonomy.cdm.database.UpdatableRoutingDataSource;
27 import eu.etaxonomy.cdm.ext.dc.DublinCoreSchemaAdapter;
28 import eu.etaxonomy.cdm.ext.sru.SruServiceWrapper;
29 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
30
31 /**
32 * The ExternalGeoController class is a Spring MVC Controller.
33 * <p>
34 * The syntax of the mapped service URIs contains the the {datasource-name} path element.
35 * The available {datasource-name}s are defined in a configuration file which
36 * is loaded by the {@link UpdatableRoutingDataSource}. If the
37 * UpdatableRoutingDataSource is not being used in the actual application
38 * context any arbitrary {datasource-name} may be used.
39 * <p>
40 * @author a.kohlbecker
41 * @date 18.06.2009
42 *
43 */
44 @Controller
45 @RequestMapping(value = { "/ext/bhl-e/" })
46 public class ExternalBhleController {
47
48 public static final Logger logger = Logger.getLogger(ExternalBhleController.class);
49
50 public static String baseUrl = "http://gso.gbv.de/sru/DB=2.1/";
51
52 SruServiceWrapper sruServiceWrapper;
53
54 /**
55 *
56 */
57 public ExternalBhleController() {
58 sruServiceWrapper = new SruServiceWrapper();
59 sruServiceWrapper.setBaseUrl(baseUrl);
60 sruServiceWrapper.addSchemaAdapter(new DublinCoreSchemaAdapter());
61 }
62
63
64 @RequestMapping(value = { "grib/sru" }, method = RequestMethod.GET)
65 public ModelAndView doSearchRetrieve(
66 @RequestParam(value = "query", required = true) String cqlQuery,
67 HttpServletRequest request,
68 HttpServletResponse response)
69 throws IOException {
70
71 logger.info("doSearchRetrieve( " + "query=\"" + ObjectUtils.toString(cqlQuery) + "\")");
72 ModelAndView mv = new ModelAndView();
73
74 List<ReferenceBase> referenceList = sruServiceWrapper.doSearchRetrieve(cqlQuery, "dc");
75
76 mv.addObject(referenceList);
77 return mv;
78 }
79
80 }