refactoring taxon controllers and thus solving #2595 (portal/taxon/{uuid}/accepted...
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 20 Mar 2014 13:29:10 +0000 (13:29 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 20 Mar 2014 13:29:10 +0000 (13:29 +0000)
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonListController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonPortalController.java
cdmlib-remote/src/main/resources/log4j.properties

index 51c50b762ddd5a255c102c40e866d321dba51d9d..811e63e881c8190947f0144fd1ba51b6ca464455 100644 (file)
@@ -13,11 +13,11 @@ package eu.etaxonomy.cdm.remote.controller;
 import java.io.IOException;\r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
-import java.util.HashSet;\r
 import java.util.List;\r
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
+import javax.persistence.EntityNotFoundException;\r
 import javax.servlet.http.HttpServletRequest;\r
 import javax.servlet.http.HttpServletResponse;\r
 \r
@@ -27,6 +27,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;\r
 import org.springframework.web.bind.annotation.RequestMapping;\r
 import org.springframework.web.bind.annotation.RequestMethod;\r
+import org.springframework.web.bind.annotation.RequestParam;\r
 import org.springframework.web.servlet.ModelAndView;\r
 \r
 import eu.etaxonomy.cdm.api.service.INameService;\r
@@ -34,12 +35,12 @@ import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.taxon.Classification;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;\r
+import eu.etaxonomy.cdm.remote.controller.util.PagerParameters;\r
 \r
 /**\r
  * TODO write controller documentation\r
@@ -92,24 +93,61 @@ public class TaxonController extends BaseController<TaxonBase, ITaxonService>
      *         {@link #DEFAULT_INIT_STRATEGY}\r
      * @throws IOException\r
      */\r
+    /**\r
+     * Get the set of accepted {@link Taxon} entities for a given\r
+     * {@link TaxonBase} entity identified by the <code>{taxon-uuid}</code>.\r
+     * <p>\r
+     * URI: <b>&#x002F;{datasource-name}&#x002F;portal&#x002F;taxon&#x002F;{taxon-uuid}&#x002F;accepted</b>\r
+     *\r
+     * @param request\r
+     * @param response\r
+     * @return a Set of {@link Taxon} entities which are initialized\r
+     *         using the following initialization strategy:\r
+     *         {@link #SYNONYMY_INIT_STRATEGY}\r
+     * @throws IOException\r
+     * @Deprecated use getAcceptedFor() instead\r
+     */\r
+    @Deprecated\r
+    @RequestMapping(value = "accepted/{classification_uuid}", method = RequestMethod.GET)\r
+    public ModelAndView getAcceptedForWithClassificationFilter(\r
+                @PathVariable("uuid") UUID uuid,\r
+                @PathVariable("classification_uuid") UUID classification_uuid,\r
+                @RequestParam(value = "pageNumber", required = false) Integer pageNumber,\r
+                @RequestParam(value = "pageSize", required = false) Integer pageSize,\r
+                HttpServletRequest request,\r
+                HttpServletResponse response)\r
+                throws IOException {\r
+\r
+\r
+        return getAcceptedFor(uuid, classification_uuid, pageNumber, pageSize, request, response);\r
+    }\r
+\r
     @RequestMapping(value = "accepted", method = RequestMethod.GET)\r
-    public Set<TaxonBase> doGetAccepted(\r
+    public ModelAndView getAcceptedFor(\r
             @PathVariable("uuid") UUID uuid,\r
+            @RequestParam(value = "classificationFilter", required = false) UUID classification_uuid,\r
+            @RequestParam(value = "pageNumber", required = false) Integer pageNumber,\r
+            @RequestParam(value = "pageSize", required = false) Integer pageSize,\r
             HttpServletRequest request,\r
-            HttpServletResponse response) throws IOException {\r
-        logger.info("getAccepted() " + request.getRequestURI());\r
-        TaxonBase tb = service.load(uuid);\r
-        HashSet<TaxonBase> resultset = new HashSet<TaxonBase>();\r
-        if(tb instanceof Taxon){\r
-            //the taxon already is accepted\r
-            //FIXME take the current view into account once views are implemented!!!\r
-            resultset.add(tb);\r
-        } else {\r
-            Synonym syn = (Synonym)tb;\r
-            resultset.addAll(syn.getAcceptedTaxa());\r
-            //TODO init Synonyms\r
+            HttpServletResponse response)\r
+            throws IOException {\r
+        if(request != null){\r
+            logger.info("getAccepted() " + requestPathAndQuery(request));\r
         }\r
-        return resultset;\r
+\r
+        ModelAndView mv = new ModelAndView();\r
+\r
+        PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);\r
+        pagerParams.normalizeAndValidate(response);\r
+\r
+        try {\r
+            List<Taxon> resultset = service.listAcceptedTaxaFor(uuid, classification_uuid, pagerParams.getPageSize(), pagerParams.getPageIndex(), null, getInitializationStrategy());\r
+            mv.addObject(resultset);\r
+        } catch (EntityNotFoundException e){\r
+            HttpStatusMessage.UUID_NOT_FOUND.send(response);\r
+        }\r
+\r
+        return mv;\r
     }\r
 \r
     @RequestMapping(value = "classifications", method = RequestMethod.GET)\r
@@ -181,20 +219,5 @@ public class TaxonController extends BaseController<TaxonBase, ITaxonService>
         return mv;\r
     }\r
 \r
-    /**\r
-     * FIXME change @RequestMapping to /taxon/findBestMatchingTaxon and also move into TaxonListController\r
-     */\r
-    @RequestMapping(value = "/bestMatchingTaxon/{taxonName}", method = RequestMethod.GET)\r
-    public TaxonBase doFindBestMatchingTaxon(\r
-             @PathVariable("taxonName") String taxonName,\r
-            HttpServletRequest request,\r
-            HttpServletResponse response)throws IOException {\r
-\r
-        Taxon bestMatchingTaxon =  taxonService.findBestMatchingTaxon(taxonName);\r
-\r
-        return bestMatchingTaxon;\r
-\r
-\r
-    }\r
 \r
 }
\ No newline at end of file
index 42273504c7edf8e0f72a4c19a7311d99b6235e61..e3239eddd4d0ee7a43aee1778d14245cdf247252 100644 (file)
@@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;\r
 import org.springframework.web.bind.WebDataBinder;\r
 import org.springframework.web.bind.annotation.InitBinder;\r
+import org.springframework.web.bind.annotation.PathVariable;\r
 import org.springframework.web.bind.annotation.RequestMapping;\r
 import org.springframework.web.bind.annotation.RequestMethod;\r
 import org.springframework.web.bind.annotation.RequestParam;\r
@@ -415,4 +416,16 @@ public class TaxonListController extends IdentifiableListController<TaxonBase, I
 \r
         }\r
     }\r
+\r
+    @RequestMapping(value = "bestMatchingTaxon/{taxonName}", method = RequestMethod.GET)\r
+    public TaxonBase doFindBestMatchingTaxon(\r
+             @PathVariable("taxonName") String taxonName,\r
+            HttpServletRequest request,\r
+            HttpServletResponse response)throws IOException {\r
+\r
+        Taxon bestMatchingTaxon =  service.findBestMatchingTaxon(taxonName);\r
+\r
+        return bestMatchingTaxon;\r
+    }\r
+\r
 }
\ No newline at end of file
index 38a5252033e24c9abfc5055b2cd65d4556654ecf..60c53e0d98d40c30cfd6cc9c58e9c248c22ed94d 100644 (file)
@@ -22,7 +22,6 @@ import java.util.Map;
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
-import javax.persistence.EntityNotFoundException;\r
 import javax.servlet.http.HttpServletRequest;\r
 import javax.servlet.http.HttpServletResponse;\r
 \r
@@ -112,7 +111,7 @@ import eu.etaxonomy.cdm.remote.editor.UuidList;
  */\r
 @Controller\r
 @RequestMapping(value = {"/portal/taxon/{uuid}"})\r
-public class TaxonPortalController extends BaseController<TaxonBase, ITaxonService>\r
+public class TaxonPortalController extends TaxonController\r
 {\r
 \r
     public static final Logger logger = Logger.getLogger(TaxonPortalController.class);\r
@@ -588,47 +587,6 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
         return mv;\r
     }\r
 \r
-    /**\r
-     * Get the set of accepted {@link Taxon} entities for a given\r
-     * {@link TaxonBase} entity identified by the <code>{taxon-uuid}</code>.\r
-     * <p>\r
-     * URI: <b>&#x002F;{datasource-name}&#x002F;portal&#x002F;taxon&#x002F;{taxon-uuid}&#x002F;accepted</b>\r
-     *\r
-     * @param request\r
-     * @param response\r
-     * @return a Set of {@link Taxon} entities which are initialized\r
-     *         using the following initialization strategy:\r
-     *         {@link #SYNONYMY_INIT_STRATEGY}\r
-     * @throws IOException\r
-     */\r
-    @RequestMapping(value = "accepted/{classification_uuid}", method = RequestMethod.GET)\r
-    public ModelAndView getAccepted(\r
-                @PathVariable("uuid") UUID uuid,\r
-                @PathVariable("classification_uuid") UUID classification_uuid,\r
-                @RequestParam(value = "pageNumber", required = false) Integer pageNumber,\r
-                @RequestParam(value = "pageSize", required = false) Integer pageSize,\r
-                HttpServletRequest request,\r
-                HttpServletResponse response)\r
-                throws IOException {\r
-\r
-        if(request != null){\r
-            logger.info("getAccepted() " + requestPathAndQuery(request));\r
-        }\r
-\r
-        ModelAndView mv = new ModelAndView();\r
-\r
-        PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);\r
-        pagerParams.normalizeAndValidate(response);\r
-\r
-        try {\r
-            List<Taxon> resultset = service.listAcceptedTaxaFor(uuid, classification_uuid, pagerParams.getPageSize(), pagerParams.getPageIndex(), null, getInitializationStrategy());\r
-            mv.addObject(resultset);\r
-        } catch (EntityNotFoundException e){\r
-            HttpStatusMessage.UUID_NOT_FOUND.send(response);\r
-        }\r
-\r
-        return mv;\r
-    }\r
 \r
     /**\r
      * Get the list of {@link TaxonRelationship}s for the given\r
@@ -739,6 +697,7 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
         return p.getRecords();\r
     }\r
 \r
+    @Override\r
     @RequestMapping(value = "taxonNodes", method = RequestMethod.GET)\r
     public Set<TaxonNode>  doGetTaxonNodes(\r
             @PathVariable("uuid") UUID uuid,\r
index 8276b9f837116315e94f2233834086d5939f4796..8808b50b42f8a715ad169cac34ab4aeb1ac4207b 100644 (file)
@@ -54,8 +54,8 @@ log4j.logger.net.sf.json.JSONObject = ERROR
 ###\r
 log4j.logger.org.hibernate=WARN\r
 #     log just the SQL\r
-log4j.logger.org.hibernate.SQL=debug\r
-log4j.logger.org.hibernate.engine.QueryParameters=debug\r
+log4j.logger.org.hibernate.SQL=WARN\r
+log4j.logger.org.hibernate.engine.QueryParameters=WARN\r
 #     log search\r
 log4j.logger.org.hibernate.search = ERROR\r
 #     log JDBC bind parameters\r