|
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.
|