KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > war > validation > FileResourceValidator


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21 package com.jaspersoft.jasperserver.war.validation;
22
23 import java.util.List JavaDoc;
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 JavaDoc clazz) {
39         return FileResourceWrapper.class.isAssignableFrom(clazz);
40     }
41
42     public void validate(Object JavaDoc arg0, Errors arg1) {
43         // TODO Auto-generated method stub
44
}
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                 // must check if the resource by this name is already added in
79
// the subflow mode
80
Object JavaDoc parentObject = wrapper.getParentFlowObject();
81                 if (parentObject != null
82                         && ReportUnitWrapper.class
83                                 .isAssignableFrom(parentObject.getClass())) {
84                     ReportUnitWrapper parent = (ReportUnitWrapper) parentObject;
85                     List JavaDoc 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 JavaDoc 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                 // When in stand alone new mode check for name uniqueness
125
List JavaDoc res = wrapper.getExistingResources();
126                 for (int i = 0; i < res.size(); i++) {
127                     String JavaDoc preExtName = (String JavaDoc) 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 JavaDoc 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             // There is only a upload field on the JSP, edit or new mode
154
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