*print redlist status from congruent concept relations
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / BaseController.java
index 698881f7ff0dd6c622be793a547ac8a0c7b8f78a..80202e8e5eb4727085bbde5992ab1752a04bd673 100644 (file)
@@ -29,6 +29,7 @@ import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.io.FilenameUtils;\r
 import org.apache.commons.lang.StringUtils;\r
 import org.hibernate.mapping.Map;\r
 import org.apache.commons.io.FilenameUtils;\r
 import org.apache.commons.lang.StringUtils;\r
 import org.hibernate.mapping.Map;\r
+import org.springframework.beans.factory.annotation.Autowired;\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.WebDataBinder;\r
 import org.springframework.web.bind.annotation.InitBinder;\r
 import org.springframework.web.bind.annotation.PathVariable;\r
@@ -42,6 +43,7 @@ import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
 import eu.etaxonomy.cdm.remote.editor.UUIDPropertyEditor;\r
 \r
 /**\r
 import eu.etaxonomy.cdm.remote.editor.UUIDPropertyEditor;\r
 \r
 /**\r
@@ -133,7 +135,7 @@ public abstract class BaseController<T extends CdmBase, SERVICE extends IService
                if(objectFromProperty != null){\r
 \r
                        if( Collection.class.isAssignableFrom(objectFromProperty.getClass())){\r
                if(objectFromProperty != null){\r
 \r
                        if( Collection.class.isAssignableFrom(objectFromProperty.getClass())){\r
-                               // Map types cannot be returend as list or in a pager!\r
+                               // Map types cannot be returned as list or in a pager!\r
                                \r
                                Collection c = (Collection)objectFromProperty;\r
                                if(start != null){\r
                                \r
                                Collection c = (Collection)objectFromProperty;\r
                                if(start != null){\r
@@ -143,6 +145,8 @@ public abstract class BaseController<T extends CdmBase, SERVICE extends IService
                                        modelAndView.addObject(sub_c);\r
                                        \r
                                } else {\r
                                        modelAndView.addObject(sub_c);\r
                                        \r
                                } else {\r
+                                       //FIXME use real paging mechanism of according service class instead of subCollection()\r
+                                       //FIXME use BaseListController.normalizeAndValidatePagerParameters(pageNumber, pageSize, response);\r
                                        pageSize = (pageSize == null ? DEFAULT_PAGE_SIZE : pageSize);\r
                                        pageNumber = (pageNumber == null ? 0 : pageNumber);\r
                                        start = pageNumber * pageSize;\r
                                        pageSize = (pageSize == null ? DEFAULT_PAGE_SIZE : pageSize);\r
                                        pageNumber = (pageNumber == null ? 0 : pageNumber);\r
                                        start = pageNumber * pageSize;\r
@@ -294,13 +298,17 @@ public abstract class BaseController<T extends CdmBase, SERVICE extends IService
                Object result = null; \r
                try {\r
                        PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(instance, baseName);\r
                Object result = null; \r
                try {\r
                        PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(instance, baseName);\r
+                       if(propertyDescriptor == null){\r
+                               throw new NoSuchMethodException("No such method: " + instance.getClass().getSimpleName() + ".get" + baseName);\r
+                       }\r
                        Method method = propertyDescriptor.getReadMethod();\r
                        \r
                        Class<?> returnType = method.getReturnType();\r
                        \r
                        if(CdmBase.class.isAssignableFrom(returnType) \r
                                        || Collection.class.isAssignableFrom(returnType) \r
                        Method method = propertyDescriptor.getReadMethod();\r
                        \r
                        Class<?> returnType = method.getReturnType();\r
                        \r
                        if(CdmBase.class.isAssignableFrom(returnType) \r
                                        || Collection.class.isAssignableFrom(returnType) \r
-                                       || Map.class.isAssignableFrom(returnType)){\r
+                                       || Map.class.isAssignableFrom(returnType)\r
+                                       || INomenclaturalReference.class.isAssignableFrom(returnType)){\r
                                \r
                                result = method.invoke(instance, (Object[])null);\r
                                \r
                                \r
                                result = method.invoke(instance, (Object[])null);\r
                                \r