1 package org.infoglue.cms.util.validators; 2 3 import java.io.ByteArrayInputStream ; 4 import java.io.InputStream ; 5 import java.util.Iterator ; 6 import java.util.Set ; 7 8 import org.apache.commons.validator.Field; 9 import org.apache.commons.validator.Msg; 10 import org.apache.commons.validator.Validator; 11 import org.apache.commons.validator.ValidatorResources; 12 import org.apache.commons.validator.ValidatorResult; 13 import org.apache.commons.validator.ValidatorResults; 14 import org.infoglue.cms.entities.content.ContentVersionVO; 15 import org.infoglue.cms.entities.management.ContentTypeDefinitionVO; 16 import org.infoglue.cms.exception.ConstraintException; 17 import org.infoglue.cms.util.ConstraintExceptionBuffer; 18 19 public class ContentVersionValidator { 20 23 public ContentVersionValidator() {} 24 25 28 public ConstraintExceptionBuffer validate(ContentTypeDefinitionVO contentType, ContentVersionVO contentVersionVO) { 29 try { 30 ContentVersionBean bean = new ContentVersionBean(contentType, contentVersionVO); 31 ValidatorResources resources = loadResources(contentType); 32 Validator validator = new Validator(resources, "requiredForm"); 33 validator.setOnlyReturnErrors(true); 34 validator.setParameter(Validator.BEAN_PARAM, bean); 35 ValidatorResults results = validator.validate(); 36 if(results.isEmpty()) 37 return new ConstraintExceptionBuffer(); 38 else 39 return populateConstraintExceptionBuffer(results); 40 } catch(Exception e) { 41 return new ConstraintExceptionBuffer(); 42 } 43 } 44 45 48 private static ConstraintExceptionBuffer populateConstraintExceptionBuffer(ValidatorResults results) { 49 ConstraintExceptionBuffer ceb = new ConstraintExceptionBuffer(); 50 Set s = results.getPropertyNames(); 51 for(Iterator i=s.iterator(); i.hasNext(); ) { 52 ValidatorResult r = results.getValidatorResult((String ) i.next()); 53 Field field = r.getField(); 54 String name = "ContentVersion" + "." + field.getKey(); 55 for(Iterator messages=field.getMessages().values().iterator(); messages.hasNext();) { 56 Msg m = (Msg) messages.next(); 57 ceb.add(new ConstraintException(name, m.getKey())); 58 } 59 } 60 return ceb; 61 } 62 63 66 private ValidatorResources loadResources(ContentTypeDefinitionVO contentType) { 67 try { 68 InputStream is = readValidatorXML(contentType); 69 return new ValidatorResources(is); 70 } catch(Exception e) { 71 System.out.println(e.toString()); 72 } 73 return null; 74 } 75 76 79 private InputStream readValidatorXML(ContentTypeDefinitionVO contentTypeDefinition) throws Exception 80 { 81 String xml = contentTypeDefinition.getSchemaValue(); 82 String validationSchema = xml.substring(xml.indexOf("<form-validation>"), xml.indexOf("</form-validation>") + 18); 83 84 return new ByteArrayInputStream (validationSchema.getBytes("UTF-8")); 85 } 86 } 87 | Popular Tags |