From: <yo...@us...> - 2009-11-16 21:31:20
|
Revision: 270 http://treebase.svn.sourceforge.net/treebase/?rev=270&view=rev Author: youjun Date: 2009-11-16 21:31:12 +0000 (Mon, 16 Nov 2009) Log Message: ----------- add OAIPMHValidator Modified Paths: -------------- trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/command/OAIPMHCommand.java trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/controller/OAIPMHController.java trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/util/IdentifyUtil.java trunk/oai-pmh_data_provider/data_provider_web/src/main/webapp/WEB-INF/top-servlet.xml trunk/oai-pmh_data_provider/data_provider_web/src/test/resources/top-servlet.xml Added Paths: ----------- trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/validator/OAIPMHValidator.java Modified: trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/command/OAIPMHCommand.java =================================================================== --- trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/command/OAIPMHCommand.java 2009-11-15 21:14:10 UTC (rev 269) +++ trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/command/OAIPMHCommand.java 2009-11-16 21:31:12 UTC (rev 270) @@ -1,5 +1,9 @@ package org.treebase.oai.web.command; - +/** + * + * @author youjun + * class transfer page/query input data to controller + */ public class OAIPMHCommand { private String from; @@ -17,13 +21,15 @@ this.verb = verb; } public String getFrom() { - return from; + if(from!=null&&from.trim()!="")return from; + return "1995-11-04T00:00:00Z"; } public void setFrom(String from) { this.from = from; } public String getUntil() { - return until; + if(until != null && until.trim()!="") return until; + return ""; } public void setUntil(String until) { this.until = until; Modified: trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/controller/OAIPMHController.java =================================================================== --- trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/controller/OAIPMHController.java 2009-11-15 21:14:10 UTC (rev 269) +++ trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/controller/OAIPMHController.java 2009-11-16 21:31:12 UTC (rev 270) @@ -80,18 +80,20 @@ Map model=errors.getModel(); model.put("requestParams", params); model.put("identify", this.identify); + + if(errors.getErrorCount()>0){ + if(errors.hasFieldErrors("metadataPrefix")) + return new ModelAndView("cannotDisseminateFormat.vm",model); + if(errors.hasFieldErrors("verb")) + return new ModelAndView("badVerb.vm",model); + if(errors.hasFieldErrors("identifier")) + return new ModelAndView("idDoesNotExist.vm",model); + } - Method method=null; - - if(IdentifyUtil.badMetadataPrefix(params)) - - return new ModelAndView("cannotDisseminateFormat.vm",model); - try{ method=this.getClass().getMethod(params.getVerb(), new Class[]{OAIPMHCommand.class, Map.class}); - }catch(NoSuchMethodException nsme){ - + }catch(NoSuchMethodException nsme){ return new ModelAndView("badVerb.vm",model); }catch(NullPointerException e){ return (new ModelAndView("badArgument.vm",model)); @@ -175,8 +177,8 @@ return (new ModelAndView("badArgument.vm",model)); } catch (NullPointerException e){ - - return (new ModelAndView("idDoesNotExist.vm",model)); + //id is optional for ListMetadataFormats + //return (new ModelAndView("idDoesNotExist.vm",model)); } Modified: trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/util/IdentifyUtil.java =================================================================== --- trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/util/IdentifyUtil.java 2009-11-15 21:14:10 UTC (rev 269) +++ trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/util/IdentifyUtil.java 2009-11-16 21:31:12 UTC (rev 270) @@ -14,18 +14,8 @@ * @author youjun * */ -public class IdentifyUtil { - - // check if the MetadataPrefix in the params is supported by the service +public class IdentifyUtil { - public static boolean badMetadataPrefix(OAIPMHCommand params){ - if (params.getMetadataPrefix().toLowerCase()=="oai_dc") - return false; - if (params.getMetadataPrefix().toLowerCase()=="dryad") - return false; - return true; - } - // return a studyID by parsing params.identifier public static long parseID(OAIPMHCommand params) @@ -40,7 +30,7 @@ public static Date parseGranularity(String granularity, String time ) throws ParseException { - + if(time=="")return new Date(); SimpleDateFormat sdf = new SimpleDateFormat(granularity); Date utcDate = sdf.parse(time); return utcToLocal(utcDate); Added: trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/validator/OAIPMHValidator.java =================================================================== --- trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/validator/OAIPMHValidator.java (rev 0) +++ trunk/oai-pmh_data_provider/data_provider_web/src/main/java/org/treebase/oai/web/validator/OAIPMHValidator.java 2009-11-16 21:31:12 UTC (rev 270) @@ -0,0 +1,32 @@ +package org.treebase.oai.web.validator; + +import org.springframework.validation.Errors; +import org.springframework.validation.ValidationUtils; +import org.springframework.validation.Validator; +import org.treebase.oai.web.command.OAIPMHCommand; + +public class OAIPMHValidator implements Validator { + + public boolean supports(Class pClass) { + return OAIPMHCommand.class.equals(pClass); + } + + public void validate(Object pValidatable, Errors pError) { + // ValidationUtils.rejectIfEmpty(e, "name", "name.empty"); + OAIPMHCommand command = (OAIPMHCommand) pValidatable; + String verb = command.getVerb().trim(); + String fPrefix = command.getMetadataPrefix().trim(); + + ValidationUtils.rejectIfEmptyOrWhitespace(pError, "verb", "empyt verb"); + if(verb=="GetRecord") + ValidationUtils.rejectIfEmptyOrWhitespace(pError, "identifier", "empyt id"); + + // check format prefix + + if(verb=="GetRecord"||verb=="ListIdentifiers"||verb=="ListRecords") + if(fPrefix!="oai_dc"&fPrefix!="dryad") + pError.rejectValue("metadataPrefix","cannotDisseminateFormat"); + + } + +} Modified: trunk/oai-pmh_data_provider/data_provider_web/src/main/webapp/WEB-INF/top-servlet.xml =================================================================== --- trunk/oai-pmh_data_provider/data_provider_web/src/main/webapp/WEB-INF/top-servlet.xml 2009-11-15 21:14:10 UTC (rev 269) +++ trunk/oai-pmh_data_provider/data_provider_web/src/main/webapp/WEB-INF/top-servlet.xml 2009-11-16 21:31:12 UTC (rev 270) @@ -26,6 +26,9 @@ <property name="submissionService"><ref bean="submissionService"></ref></property> <property name="studyService"><ref bean="studyService"></ref></property> <property name="identify"><ref bean="top.identify"></ref></property> + <property name="validator"> + <bean class="org.treebase.oai.web.validator.OAIPMHValidator"/> + </property> </bean> Modified: trunk/oai-pmh_data_provider/data_provider_web/src/test/resources/top-servlet.xml =================================================================== --- trunk/oai-pmh_data_provider/data_provider_web/src/test/resources/top-servlet.xml 2009-11-15 21:14:10 UTC (rev 269) +++ trunk/oai-pmh_data_provider/data_provider_web/src/test/resources/top-servlet.xml 2009-11-16 21:31:12 UTC (rev 270) @@ -26,6 +26,9 @@ <property name="submissionService"><ref bean="submissionService"></ref></property> <property name="studyService"><ref bean="studyService"></ref></property> <property name="identify"><ref bean="top.identify"></ref></property> + <property name="validator"> + <bean class="org.treebase.oai.web.validator.OAIPMHValidator"/> + </property> </bean> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |