1 21 package com.jaspersoft.jasperserver.war.validation; 22 23 import java.util.List ; 24 25 import org.springframework.validation.Errors; 26 import org.springframework.validation.Validator; 27 28 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource; 29 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference; 30 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource; 31 import com.jaspersoft.jasperserver.war.common.JasperServerConst; 32 import com.jaspersoft.jasperserver.war.common.JasperServerUtil; 33 import com.jaspersoft.jasperserver.war.dto.FileResourceWrapper; 34 import com.jaspersoft.jasperserver.war.dto.ReportUnitWrapper; 35 36 public class FileResourceValidator implements Validator { 37 38 public boolean supports(Class clazz) { 39 return FileResourceWrapper.class.isAssignableFrom(clazz); 40 } 41 42 public void validate(Object arg0, Errors arg1) { 43 } 45 46 public void validateNaming(FileResourceWrapper wrapper, Errors errors) { 47 if (wrapper.getFileResource().getLabel() == null 48 || wrapper.getFileResource().getLabel().trim().length() == 0) { 49 errors.rejectValue("fileResource.label", null, 50 "Resource label must not be empty"); 51 } else { 52 if (wrapper.getFileResource().getLabel().length() > 100) { 53 errors 54 .rejectValue("fileResource.label", null, 55 "Resource label should not be longer than 100 characters"); 56 } else if (!JasperServerUtil.regExValidateLabel(wrapper 57 .getFileResource().getLabel())) { 58 errors.rejectValue("fileResource.label", null, 59 "Resource label contains invalid characters"); 60 } 61 } 62 if (wrapper.getFileResource().getName() == null 63 || wrapper.getFileResource().getName().trim().length() == 0) { 64 errors.rejectValue("fileResource.name", null, 65 "Resource name must not be empty"); 66 } else { 67 wrapper.getFileResource().setName( 68 wrapper.getFileResource().getName().trim()); 69 if (wrapper.getFileResource().getName().length() > 100) { 70 errors 71 .rejectValue("fileResource.name", null, 72 "Resource name should not be longer than 100 characters"); 73 } else if (!JasperServerUtil.regExValidateName(wrapper 74 .getFileResource().getName())) { 75 errors.rejectValue("fileResource.name", null, 76 "Resource name contains invalid characters"); 77 } else if (wrapper.isSubflowMode()) { 78 Object parentObject = wrapper.getParentFlowObject(); 81 if (parentObject != null 82 && ReportUnitWrapper.class 83 .isAssignableFrom(parentObject.getClass())) { 84 ReportUnitWrapper parent = (ReportUnitWrapper) parentObject; 85 List resources = parent.getReportUnit().getResources(); 86 if (resources != null && !resources.isEmpty()) 87 for (int i = 0; i < resources.size(); i++) { 88 ResourceReference resRef = (ResourceReference) resources 89 .get(i); 90 Resource res = null; 91 if (resRef.isLocal()) 92 res = resRef.getLocalResource(); 93 else 94 res = resRef.getReferenceLookup(); 95 if (wrapper.getFileResource().getName().equals( 96 res.getName())) { 97 errors 98 .rejectValue("fileResource.name", null, 99 "A Resource is already added with this name"); 100 break; 101 } 102 } 103 List controls = parent.getReportUnit().getInputControls(); 104 if (controls != null && !controls.isEmpty()) 105 for (int i = 0; i < controls.size(); i++) { 106 ResourceReference resRef = (ResourceReference) controls 107 .get(i); 108 Resource res = null; 109 if (resRef.isLocal()) 110 res = resRef.getLocalResource(); 111 else 112 res = resRef.getReferenceLookup(); 113 if (wrapper.getFileResource().getName().equals( 114 res.getName())) { 115 errors 116 .rejectValue("fileResource.name", null, 117 "An Input Control is already added with this name"); 118 break; 119 } 120 } 121 } 122 } else if (wrapper.isNewMode() 123 && wrapper.getExistingResources() != null) { 124 List res = wrapper.getExistingResources(); 126 for (int i = 0; i < res.size(); i++) { 127 String preExtName = (String ) res.get(i); 128 if (preExtName.equalsIgnoreCase(wrapper.getFileResource() 129 .getName().trim())) { 130 errors 131 .rejectValue("fileResource.name", null, 132 "A Resource with the chosen name already exists"); 133 break; 134 } 135 } 136 } 137 138 if (FileResource.TYPE_RESOURCE_BUNDLE.equals(wrapper.getFileResource().getFileType())) { 139 String name = wrapper.getFileResource().getName(); 140 if (!name.endsWith(".properties")) 141 errors.rejectValue("fileResource.name", null, "A resource bundle name must end in \".properties\""); 142 } 143 } 144 if (wrapper.getFileResource().getDescription() != null 145 && wrapper.getFileResource().getDescription().length() > 250) 146 errors 147 .rejectValue("fileResource.description", null, 148 "Description should not be longer than 250 characters"); 149 } 150 151 public void validateUpload(FileResourceWrapper wrapper, Errors errors) { 152 if (!wrapper.isSubflowMode()) { 153 if (!wrapper.isLocated()) { 155 if (wrapper.getNewData() == null 156 || wrapper.getNewData().length == 0) 157 errors 158 .rejectValue("newData", null, 159 "File was not uploaded"); 160 } 161 } else { 162 if (wrapper.getSource() == null) { 163 errors.rejectValue("source", null, 164 "Please select a file source"); 165 } else { 166 if (wrapper.getSource().equals( 167 JasperServerConst.FIELD_CHOICE_FILE_SYSTEM)) { 168 if (!wrapper.isLocated() 169 && (wrapper.getFileResource().getData() == null || wrapper 170 .getFileResource().getData().length == 0)) { 171 errors.rejectValue("newData", null, 172 "File was not uploaded"); 173 } 174 } else { 175 if (!wrapper.isLocated() 176 && (wrapper.getNewUri() == null || wrapper 177 .getNewUri().trim().length() == 0)) { 178 errors.rejectValue("newUri", null, 179 "Please select a repository folder"); 180 } 181 } 182 183 } 184 } 185 } 186 } 187 | Popular Tags |