1 21 package com.jaspersoft.jasperserver.war.validation; 22 23 import java.util.Iterator ; 24 import java.util.List ; 25 26 import org.springframework.validation.Errors; 27 import org.springframework.validation.Validator; 28 29 import com.jaspersoft.jasperserver.api.common.domain.ValidationError; 30 import com.jaspersoft.jasperserver.api.common.domain.ValidationErrors; 31 import com.jaspersoft.jasperserver.api.engine.scheduling.domain.ReportJob; 32 import com.jaspersoft.jasperserver.api.engine.scheduling.service.ReportSchedulingService; 33 34 38 public class ReportJobValidator implements Validator { 39 40 private ReportSchedulingService schedulingService; 41 42 public ReportSchedulingService getSchedulingService() { 43 return schedulingService; 44 } 45 46 public void setSchedulingService(ReportSchedulingService schedulingService) { 47 this.schedulingService = schedulingService; 48 } 49 50 public boolean supports(Class clazz) { 51 return ReportJob.class.isAssignableFrom(clazz); 52 } 53 54 public void validateJobDetails(ReportJob job, Errors errors) { 55 validate(job, errors, new String []{"label", "description"}); 56 } 57 58 public void validateJobTrigger(ReportJob job, Errors errors) { 59 validate(job, errors, new String []{"trigger"}); 60 } 61 62 public void validateJobOutput(ReportJob job, Errors errors) { 63 validate(job, errors, new String []{"baseOutputFilename", "outputFormats", "contentRepositoryDestination", "mailNotification"}); 64 } 65 66 public void validate(Object obj, Errors errors) { 67 validate((ReportJob) obj, errors, null); 68 } 69 70 protected void validate(ReportJob job, Errors errors, String [] fieldPrefixes) { 71 ValidationErrors validationErrors = schedulingService.validateJob(null, job); setErrors(errors, validationErrors, fieldPrefixes); 73 } 74 75 protected void setErrors(Errors errors, ValidationErrors validationErrors, String [] fieldPrefixes) { 76 if (validationErrors.isError()) { 77 List errorList = validationErrors.getErrors(); 78 for (Iterator it = errorList.iterator(); it.hasNext();) { 79 ValidationError error = (ValidationError) it.next(); 80 if (matches(error, fieldPrefixes)) { 81 setError(errors, error); 82 } 83 } 84 } 85 } 86 87 protected boolean matches(ValidationError error, String [] fieldPrefixes) { 88 String field = error.getField(); 89 if (fieldPrefixes == null || field == null) { 90 return true; 91 } 92 boolean match = false; 93 for (int i = 0; !match && i < fieldPrefixes.length; i++) { 94 String prefix = fieldPrefixes[i]; 95 match |= field.startsWith(prefix); 96 } 97 return match; 98 } 99 100 protected void setError(Errors errors, ValidationError error) { 101 if (error.getField() == null) { 102 errors.reject(error.getErrorCode(), error.getErrorArguments(), error.getDefaultMessage()); 103 } else { 104 errors.rejectValue(error.getField(), error.getErrorCode(), error.getErrorArguments(), error.getDefaultMessage()); 105 } 106 } 107 108 } 109 | Popular Tags |