From b98db24a65e33752896ba9847122d187a6cdf315 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Fri, 9 Jul 2010 18:17:27 +0000 Subject: [PATCH] NIHVIVO-647 Server-side validation of publication form. Javascript event listeners. --- .../PersonHasPublicationValidator.java | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java index e1c6ce5c6..2ed3b613e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java @@ -2,15 +2,54 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing; +import java.util.HashMap; import java.util.Map; +import com.hp.hpl.jena.rdf.model.Literal; + +import edu.cornell.mannlib.vitro.webapp.utils.StringUtils; + public class PersonHasPublicationValidator implements N3Validator { + private static String MISSING_PUB_TYPE_ERROR = "Must specify a publication type."; + private static String MISSING_PUB_TITLE_ERROR = "Must specify a publication title."; + @Override public Map validate(EditConfiguration editConfig, EditSubmission editSub) { - // TODO Auto-generated method stub - return null; + + Map urisFromForm = editSub.getUrisFromForm(); + Map literalsFromForm = editSub.getLiteralsFromForm(); + + Map errors = new HashMap(); + + // If there's a pubUri, then we're done. The other fields are disabled and so don't get submitted. + String pubUri = urisFromForm.get("pubUri"); + if (!StringUtils.isEmpty(pubUri)) { + return null; + } + + String pubType = urisFromForm.get("pubType"); + if ("".equals(pubType)) { + pubType = null; + } + + Literal title = literalsFromForm.get("title"); + if (title != null) { + String titleValue = title.getLexicalForm(); + if (StringUtils.isEmpty(titleValue)) { + title = null; + } + } + + if (pubType == null) { + errors.put("pubType", MISSING_PUB_TYPE_ERROR); + } + if (title == null) { + errors.put("title", MISSING_PUB_TITLE_ERROR); + } + + return errors.size() != 0 ? errors : null; } }