fix #6373 fixing MediaAutoInitializer
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / TaxonNodeController.java
index f9d85afb359d0e96d454c065696a318bc8db3763..687c0b85daed5ca20a83b0f9d510fd8ae6ebd94c 100644 (file)
@@ -1,53 +1,95 @@
-// $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 
 package eu.etaxonomy.cdm.remote.controller;
 
-import java.util.Arrays;
-import java.util.List;
+import java.io.IOException;
+import java.util.UUID;
+
+import javax.servlet.http.HttpServletResponse;
 
-import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.NodeSortMode;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.cdm.remote.controller.util.PagerParameters;
+import io.swagger.annotations.Api;
 
 /**
- * @author n.hoffmann
- * @created Apr 9, 2010
- * @version 1.0
+ *
+ * @author a.kohlbecker
+ * @date Jun 13, 2016
+ *
  */
 @Controller
+@Api("taxonNode")
 @RequestMapping(value = {"/taxonNode/{uuid}"})
-public class TaxonNodeController extends BaseController<TaxonNode, ITaxonNodeService> {
-       private static final Logger logger = Logger
-                       .getLogger(TaxonNodeController.class);
-       
-       private static final List<String> NODE_INIT_STRATEGY = Arrays.asList(new String[]{
-                       "taxon.sec", 
-                       "taxon.name"
-       });
-       
-       public TaxonNodeController(){
-               super();
-               setInitializationStrategy(NODE_INIT_STRATEGY);
-       }
-       
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.remote.controller.BaseController#setService(eu.etaxonomy.cdm.api.service.IService)
-        */
-       @Override
-       @Autowired
-       public void setService(ITaxonNodeService service) {
-               this.service = service;
-       }
+public class TaxonNodeController extends AbstractController<TaxonNode, ITaxonNodeService> {
+
+    @Override
+    @Autowired
+    public void setService(ITaxonNodeService service) {
+        this.service = service;
+    }
+
+
+    /**
+     *
+     * @param uuid
+     * @param response
+     * @return
+     * @throws IOException
+     */
+    @RequestMapping(
+            value = {"parent"},
+            method = RequestMethod.GET)
+    public TaxonNodeDto doGetParent(
+            @PathVariable("uuid") UUID uuid,
+            HttpServletResponse response
+            ) throws IOException {
+
+        return service.parentDto(uuid);
+    }
+
+    /**
+     *
+     * @param uuid
+     * @param pageIndex
+     * @param pageSize
+     * @param sortMode
+     * @param response
+     * @return
+     * @throws IOException
+     */
+    @RequestMapping(
+            value = {"childNodes"},
+            method = RequestMethod.GET)
+    public Pager<TaxonNodeDto> doPageChildNodes(
+            @PathVariable("uuid") UUID uuid,
+            @RequestParam(value = "pageNumber", required = false) Integer pageIndex,
+            @RequestParam(value = "pageSize", required = false) Integer pageSize,
+            @RequestParam(value="sortMode", defaultValue="AlphabeticalOrder") NodeSortMode sortMode,
+            @RequestParam(value="doSynonyms", defaultValue="false") Boolean doSynonyms,
+            HttpServletResponse response
+            ) throws IOException {
+
+        PagerParameters pagerParameters = new PagerParameters(pageSize, pageIndex);
+        pagerParameters.normalizeAndValidate(response);
+
+        return service.pageChildNodesDTOs(uuid, false, doSynonyms, sortMode, pagerParameters.getPageSize(), pagerParameters.getPageIndex());
+    }
 }