/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/metaobj/trunk/metaobj-util/tool-lib/src/java/org/sakaiproject/metaobj/shared/control/XmlValidator.java $ * $Id: XmlValidator.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2004, 2005, 2006, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.metaobj.shared.control; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.component.cover.ComponentManager; import org.sakaiproject.metaobj.shared.mgt.StructuredArtifactValidationService; import org.sakaiproject.metaobj.shared.model.ElementBean; import org.sakaiproject.metaobj.shared.model.ValidationError; import org.sakaiproject.metaobj.utils.mvc.impl.ValidatorBase; import org.springframework.validation.Errors; public class XmlValidator extends ValidatorBase { protected final Log logger = LogFactory.getLog(getClass()); protected String parentPrefix = ""; //private FileNameValidator fileNameValidator; public XmlValidator() { } public XmlValidator(String parentPrefix) { this.parentPrefix = parentPrefix; } public boolean supports(Class clazz) { return (ElementBean.class.isAssignableFrom(clazz)); } public void validate(Object obj, Errors errors) { validate(obj, errors, false); } public void validate(Object obj, Errors errors, boolean checkListNumbers) { ElementBean elementBean = (ElementBean) obj; StructuredArtifactValidationService service = getStructuredArtifactValidationService(); List errorList = service.validate(elementBean); for (Iterator i = errorList.iterator(); i.hasNext();) { ValidationError error = (ValidationError) i.next(); errors.rejectValue(error.getFieldName(), error.getErrorCode(), error.getErrorInfo(), error.getDefaultMessage()); } } protected StructuredArtifactValidationService getStructuredArtifactValidationService() { return (StructuredArtifactValidationService) ComponentManager.getInstance().get(StructuredArtifactValidationService.class); } /* protected void validateDisplayName(ElementBean elementBean, Errors errors) { // don't care about display name here } protected void validateElement(Element rootElement, SchemaNode childSchema, Object value, Errors errors) { validateChildElement(rootElement.getChild(childSchema.getName()), childSchema, value, errors); } protected void validateChildElement(Element childElement, SchemaNode childSchema, Object value, Errors errors) { if (childElement != null) { String stringValue = null; if (value != null && value instanceof String) { stringValue = (String) value; value = childSchema.getActualNormalizedValue(stringValue); } childElement.setText(childSchema.getSchemaNormalizedValue(value)); } else if (childSchema.getMinOccurs() > 0) { errors.rejectValue(childSchema.getName(), "required value {0}", new Object[]{childSchema.getName()}, MessageFormat.format("required value {0}", new Object[]{childSchema.getName()})); } } protected boolean checkWrappedField(SchemaNode childSchema, ElementBean elementBean, Errors errors) { Class childClass = elementBean.getType(childSchema.getName()); Object value = elementBean.get(childSchema.getName()); if (!(value instanceof FieldValueWrapper)) { return false; } FieldValueWrapper beanValue = (FieldValueWrapper) elementBean.get(childSchema.getName()); if (beanValue.getValue() == null) { if (childSchema.getMinOccurs() > 0) { throw new NormalizationException("Required field", "required field {0}", new Object[]{childSchema.getName()}); } else { elementBean.getBaseElement().removeChild(childSchema.getName()); return true; } } // check date... this.pushNestedPath(childSchema.getName(), errors); beanValue.validate(errors); this.popNestedPath(errors); Element dateElement = elementBean.getBaseElement().getChild(childSchema.getName()); if (dateElement == null) { dateElement = new Element(childSchema.getName()); elementBean.getBaseElement().addContent(dateElement); } dateElement.setText(childSchema.getSchemaNormalizedValue(beanValue.getValue())); return true; } // public FileNameValidator getFileNameValidator() { // return fileNameValidator; // } // // public void setFileNameValidator(FileNameValidator fileNameValidator) { // this.fileNameValidator = fileNameValidator; // } */ }