KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > war > common > JasperServerUtil


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.common;
22
23 import java.sql.Connection JavaDoc;
24 import java.sql.DriverManager JavaDoc;
25 import java.sql.SQLException JavaDoc;
26 import java.text.DateFormat JavaDoc;
27 import java.text.SimpleDateFormat JavaDoc;
28 import java.util.Locale JavaDoc;
29 import java.util.regex.Matcher JavaDoc;
30 import java.util.regex.Pattern JavaDoc;
31 import java.util.regex.PatternSyntaxException JavaDoc;
32
33 import javax.naming.InitialContext JavaDoc;
34 import javax.naming.NamingException JavaDoc;
35 import javax.servlet.http.HttpServletRequest JavaDoc;
36 import javax.sql.DataSource JavaDoc;
37
38 import net.sf.jasperreports.engine.JRException;
39 import net.sf.jasperreports.engine.JRExporterParameter;
40 import net.sf.jasperreports.engine.JasperPrint;
41 import net.sf.jasperreports.engine.export.JRHtmlExporter;
42 import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
43
44 import org.apache.commons.logging.Log;
45 import org.apache.commons.logging.LogFactory;
46 import org.springframework.context.MessageSource;
47 import org.springframework.context.i18n.LocaleContextHolder;
48 import org.springframework.web.servlet.support.RequestContextUtils;
49 import org.springframework.webflow.RequestContext;
50
51 import com.jaspersoft.jasperserver.api.common.domain.ExecutionContext;
52 import com.jaspersoft.jasperserver.api.common.domain.impl.ExecutionContextImpl;
53 import com.jaspersoft.jasperserver.api.metadata.common.domain.Folder;
54 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.FolderImpl;
55 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService;
56 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit;
57 import com.jaspersoft.jasperserver.api.metadata.user.domain.Role;
58 import com.jaspersoft.jasperserver.api.metadata.user.domain.User;
59
60 /**
61  * @author aztec
62  * @version $Id: JasperServerUtil.java 4151 2006-08-08 09:24:10Z inedelcu $
63  */

64 public class JasperServerUtil {
65
66     private static final Log log = LogFactory.getLog(JasperServerUtil.class);
67
68     /*
69      * method to return a DB-Connection to the
70      * JasperServer Database
71      */

72     public static Connection JavaDoc getJSDatabaseConnection () throws ClassNotFoundException JavaDoc, SQLException JavaDoc, NamingException JavaDoc {
73         boolean sqlExcpn = false;
74         Connection JavaDoc con = null;
75         try {
76             InitialContext JavaDoc cxt = new InitialContext JavaDoc();
77             DataSource JavaDoc ds = (DataSource JavaDoc)cxt.lookup(JasperServerConstImpl.getJSDataSrc());
78             con = ds.getConnection();
79             return con;
80         } catch(Exception JavaDoc _ex) {
81             if (log.isErrorEnabled())
82                 log.error(_ex, _ex);
83             sqlExcpn = true;
84         } finally {
85             if(sqlExcpn) {
86                 Class.forName(JasperServerConstImpl.getJSConnector());
87                 con = DriverManager.getConnection(JasperServerConstImpl.getJSUrl(),
88                     JasperServerConstImpl.getJSDbUser(),
89                     JasperServerConstImpl.getJSDbPasswd());
90                 return con;
91             }
92         }
93         return con;
94     }
95
96     /*
97      * method to export a Jasper Report to a Html type
98      * arguments: JasperPrint, StringBuffer
99      * retunrs: JRHtmlExporter
100      */

101     public static JRHtmlExporter exportJRToHtml(JasperPrint jasperPrint, StringBuffer JavaDoc reportContent) throws JRException {
102         JRHtmlExporter exporter = new JRHtmlExporter();
103         exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
104         exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, reportContent);
105         //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");
106
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
107         exporter.setParameter(JRExporterParameter.PAGE_INDEX, new Integer JavaDoc(0));
108         exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, "");
109         exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");
110         exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "");
111         exporter.exportReport();
112         return exporter;
113     }
114
115     /*
116      * method to parse-out the file name alone
117      * from the full path. this is an added method
118      * if the filename is returned with PATH info
119      */

120     public String JavaDoc parseFileName(String JavaDoc fullName) {
121         int lastIndex = fullName.lastIndexOf(System.getProperty("file.separator"));
122         fullName = fullName.substring(lastIndex+1);
123         return fullName;
124     }
125
126     /*
127      * method to update report unit fields
128      * argument: reportunitbean
129      * returns: boolean
130      * this method has 2b modfd as RU can itself be sent (to avoid URI being NULL)
131      */

132     public static boolean createNewReportUnit(RepositoryService repository,
133             ReportUnit unit) throws Exception JavaDoc {
134         repository.saveResource(null, unit);
135         return true;
136     }
137
138     /** Creates a new folder in the repository
139      * @param repository Instance of the Repository service
140      * @param folderName The Folder name to be created
141      * @param parentUri The parent uri fo the folder to be created
142      * @throws Exception Lets any thrown exceptions bubble
143      */

144      public static Folder createNewFolder(RepositoryService repository,
145         String JavaDoc folderName,String JavaDoc parentUri) throws Exception JavaDoc {
146         Folder folder=new FolderImpl();
147         folder.setName(folderName);
148         folder.setLabel(folderName);
149         folder.setParentFolder(parentUri);
150         repository.saveFolder(null,folder);
151         return folder;
152     }
153
154     /*
155      * function to upload the files into repository
156      * arguments string
157      * returns boolean
158      */

159     public static boolean uploadToRepository(ReportUnit rpunit, String JavaDoc fileName) throws Exception JavaDoc {
160
161 /* OutputStream os = new FileOutputStream(JasperServerConstImpl.getJSReposPath() + fileName + JasperServerConst.FILE_JASPER_EXTN);
162         JasperCompileManager.compileReportToStream(new ByteArrayInputStream(rpunit.getJrxml()), os);
163         os.flush(); os.close();
164
165         os = new FileOutputStream(JasperServerConstImpl.getJSReposPath() + fileName + JasperServerConst.FILE_JRXML_EXTN);
166         os.write(rpunit.getJrxml());
167         os.flush(); os.close();
168 */

169         return true;
170     }
171
172     private static final Pattern JavaDoc PATTERN_NAME = Pattern.compile("[a-zA-Z]+([a-zA-Z0-9])*(((\\_)|(\\.)){1}[a-zA-Z0-9]+)*");
173
174     /*
175      * function to validate name
176      * allows only valid word characters and doesn't allow
177      * any space or any special characters for this field
178      * arguments string
179      * returns boolean
180      */

181      public static boolean regExValidateName(String JavaDoc inp) throws PatternSyntaxException JavaDoc {
182          Matcher JavaDoc mat = PATTERN_NAME.matcher(inp.trim());
183          return mat.matches();
184      }
185
186     /*
187      * function to validate label
188      * allows only valid word characters and doesn't allow
189      * any special characters for this field (allows space)
190      * arguments string
191      * returns boolean
192      */

193      public static boolean regExValidateLabel(String JavaDoc inp) throws PatternSyntaxException JavaDoc {
194
195          Pattern JavaDoc pat = Pattern.compile("([a-zA-Z]+([a-zA-Z0-9])*(((\\s)|(\\_)){1}[a-zA-Z0-9]+)*)");
196          Matcher JavaDoc mat = pat.matcher(inp.trim());
197          if(mat.matches())
198             return true;
199          else
200             return false;
201      }
202
203     /*
204      * function to validate emailaddress
205      * allows only @ and . as special characters
206      * @param string
207      * @return boolean
208      */

209      public static boolean regExValidateEmail(String JavaDoc email) throws PatternSyntaxException JavaDoc {
210
211          Pattern JavaDoc pat = Pattern.compile("([a-zA-Z]+[a-zA-Z0-9]*(((\\_)|(\\.)){1}[a-zA-Z0-9]+)*@{1}([a-zA-Z]{1,}[a-zA-Z0-9]*(((\\-)|(\\_)){1}[a-zA-Z0-9]+)*((\\.)[a-zA-Z]{2,5}){1,}))");
212          Matcher JavaDoc mat = pat.matcher(email.trim());
213          if(mat.matches())
214             return true;
215          else
216             return false;
217      }
218
219     /*
220      * function to validate folderNames
221      * @param
222      * @return
223      * assumption: new folders are created under / - root directory
224      */

225     public static boolean regExValidateFolder(String JavaDoc folderName) throws PatternSyntaxException JavaDoc {
226         return regExValidateName(folderName.trim());
227     }
228
229
230     /*
231      * function to validate jndi Service Name
232      * @param
233      * @return
234      * assumption: pattern is 'jndiName' or 'jdbc:jndiName' or 'jdbc/jndiName'
235      */

236     public static boolean regExValidateJndiServiceName(String JavaDoc jndiName) throws PatternSyntaxException JavaDoc {
237          Pattern JavaDoc pat = Pattern.compile("([a-zA-Z]+(((\\:)|(\\/)){1}[a-zA-Z0-9]+)*)");
238          Matcher JavaDoc mat = pat.matcher(jndiName.trim());
239          if(mat.matches())
240             return true;
241          else
242             return false;
243     }
244
245     /*
246      * function to validate jndi Service Name
247      * @param
248      * @return
249      * assumption: pattern is 'jndiName' or 'jdbc:jndiName' or 'jdbc/jndiName'
250      */

251     public static boolean regExValidateDbDriver(String JavaDoc driverName) throws PatternSyntaxException JavaDoc {
252          Pattern JavaDoc pat = Pattern.compile("([a-zA-Z]+((\\.){1}[a-zA-Z0-9]+)*)");
253          Matcher JavaDoc mat = pat.matcher(driverName.trim());
254          if(mat.matches())
255             return true;
256          else
257             return false;
258     }
259
260     /*
261      * function to validate JDBC URL
262      * @param
263      * @return
264      * assumption: pattern is strictly jdbc:dbname://(com.jasper.jsoft)(192.168.192.29(9))(:)(port#)/dbname - MYSQL/HSQLDB
265      * assumption: pattern is strictly jdbc:oracle:thin:@(com.jasper.jsoft)(192.168.192.29(9))(:)(port#)/dbname - ORACLE
266      */

267     public static boolean regExValidateJdbcURL(String JavaDoc jdbcUrl) throws PatternSyntaxException JavaDoc {
268
269         //allow user to enter any free-text
270
return true;
271
272     /*
273         Pattern pat = Pattern.compile("(jdbc:{1}([a-zA-Z]{3,}:){1,}(((\\/)(\\/))|(\\@)){1}(([0-9]{2,3}((\\.){1}[0-9]{2,3}){3}){1}|([a-zA-Z]+[a-zA-Z0-9]*((\\.){1}[a-zA-Z]+[a-zA-Z0-9]*)*){1}){1}((\\:){1}[0-9]{2,4})*((\\/)|(\\:)){1}[a-zA-Z]+[a-zA-Z0-9]*)");
274         Matcher mat = pat.matcher(jdbcUrl.trim());
275         if(mat.matches())
276             return true;
277         else
278             return false;
279     */

280
281     }
282
283     /*
284      * function to validate REPORT NAME
285      * @param
286      * @return
287      */

288     public static boolean regExValidateReportName(String JavaDoc reportName) throws PatternSyntaxException JavaDoc {
289
290          Pattern JavaDoc pat = Pattern.compile("[a-zA-Z0-9]+((\\_){1}[a-zA-Z0-9]+)*");
291          Matcher JavaDoc mat = pat.matcher(reportName.trim());
292          if(mat.matches())
293             return true;
294          else
295             return false;
296     }
297
298     public static ExecutionContext getExecutionContext(HttpServletRequest JavaDoc request) {
299          return getExecutionContext(RequestContextUtils.getLocale(request));
300      }
301
302      public static ExecutionContext getExecutionContext(Locale JavaDoc locale) {
303          ExecutionContextImpl context = new ExecutionContextImpl();
304          context.setLocale(locale);
305          return context;
306      }
307
308         public static ExecutionContext getExecutionContext(RequestContext context) {
309             return getExecutionContext(LocaleContextHolder.getLocale());
310         }
311
312      /*
313       * function to trim the fields of objects
314       * before final save into the Repository
315       * @param
316       * @return
317       */

318      public static void trimDTOFieldSpaces(Object JavaDoc object) {
319
320          if(object instanceof User) {
321              User user = (User)object;
322              user.setUsername(user.getUsername().trim());
323              user.setFullName(user.getFullName().trim());
324              user.setEmailAddress(user.getEmailAddress().trim());
325          } else if(object instanceof Role) {
326              Role role = (Role)object;
327              role.setRoleName(role.getRoleName().trim());
328          } else {
329              //code can handle similar DTO objects
330
}
331
332      }
333
334     public static DateFormat JavaDoc createCalendarDateFormat(MessageSource messages, Locale JavaDoc locale) {
335         String JavaDoc pattern = messages.getMessage("date.format", null, locale);
336         return new SimpleDateFormat JavaDoc(pattern);
337     }
338
339     public static DateFormat JavaDoc createCalendarDateFormat(MessageSource messages) {
340         return createCalendarDateFormat(messages, LocaleContextHolder.getLocale());
341     }
342
343     public static DateFormat JavaDoc createCalendarDateTimeFormat(MessageSource messages, Locale JavaDoc locale) {
344         String JavaDoc pattern = messages.getMessage("datetime.format", null, locale);
345         return new SimpleDateFormat JavaDoc(pattern);
346     }
347
348     public static DateFormat JavaDoc createCalendarDateTimeFormat(MessageSource messages) {
349         return createCalendarDateTimeFormat(messages, LocaleContextHolder.getLocale());
350     }
351 }
352
Popular Tags