1 28 import java.awt.Color ; 29 import java.io.File ; 30 import java.sql.Connection ; 31 import java.sql.DriverManager ; 32 import java.sql.SQLException ; 33 import java.util.HashMap ; 34 import java.util.Map ; 35 36 import net.sf.jasperreports.engine.JRAlignment; 37 import net.sf.jasperreports.engine.JRElement; 38 import net.sf.jasperreports.engine.JRException; 39 import net.sf.jasperreports.engine.JRExporterParameter; 40 import net.sf.jasperreports.engine.JRVariable; 41 import net.sf.jasperreports.engine.JasperCompileManager; 42 import net.sf.jasperreports.engine.JasperExportManager; 43 import net.sf.jasperreports.engine.JasperFillManager; 44 import net.sf.jasperreports.engine.JasperPrint; 45 import net.sf.jasperreports.engine.JasperPrintManager; 46 import net.sf.jasperreports.engine.JasperRunManager; 47 import net.sf.jasperreports.engine.design.JRDesignBand; 48 import net.sf.jasperreports.engine.design.JRDesignExpression; 49 import net.sf.jasperreports.engine.design.JRDesignField; 50 import net.sf.jasperreports.engine.design.JRDesignGroup; 51 import net.sf.jasperreports.engine.design.JRDesignLine; 52 import net.sf.jasperreports.engine.design.JRDesignParameter; 53 import net.sf.jasperreports.engine.design.JRDesignQuery; 54 import net.sf.jasperreports.engine.design.JRDesignRectangle; 55 import net.sf.jasperreports.engine.design.JRDesignStaticText; 56 import net.sf.jasperreports.engine.design.JRDesignStyle; 57 import net.sf.jasperreports.engine.design.JRDesignTextField; 58 import net.sf.jasperreports.engine.design.JRDesignVariable; 59 import net.sf.jasperreports.engine.design.JasperDesign; 60 import net.sf.jasperreports.engine.export.JExcelApiExporter; 61 import net.sf.jasperreports.engine.export.JRCsvExporter; 62 import net.sf.jasperreports.engine.export.JRRtfExporter; 63 import net.sf.jasperreports.engine.export.JRXlsExporter; 64 import net.sf.jasperreports.engine.export.JRXlsExporterParameter; 65 import net.sf.jasperreports.engine.util.JRLoader; 66 67 68 72 public class NoXmlDesignApp 73 { 74 75 76 79 private static final String TASK_COMPILE = "compile"; 80 private static final String TASK_FILL = "fill"; 81 private static final String TASK_PRINT = "print"; 82 private static final String TASK_PDF = "pdf"; 83 private static final String TASK_XML = "xml"; 84 private static final String TASK_XML_EMBED = "xmlEmbed"; 85 private static final String TASK_HTML = "html"; 86 private static final String TASK_RTF = "rtf"; 87 private static final String TASK_XLS = "xls"; 88 private static final String TASK_JXL = "jxl"; 89 private static final String TASK_CSV = "csv"; 90 private static final String TASK_RUN = "run"; 91 private static final String TASK_WRITE_XML = "writeXml"; 92 93 94 97 public static void main(String [] args) 98 { 99 String fileName = null; 100 String taskName = null; 101 102 if(args.length == 0) 103 { 104 usage(); 105 return; 106 } 107 108 int k = 0; 109 while ( args.length > k ) 110 { 111 if ( args[k].startsWith("-T") ) 112 taskName = args[k].substring(2); 113 if ( args[k].startsWith("-F") ) 114 fileName = args[k].substring(2); 115 116 k++; 117 } 118 119 try 120 { 121 long start = System.currentTimeMillis(); 122 if (TASK_COMPILE.equals(taskName)) 123 { 124 JasperDesign jasperDesign = getJasperDesign(); 125 JasperCompileManager.compileReportToFile(jasperDesign, fileName); 126 System.err.println("Compile time : " + (System.currentTimeMillis() - start)); 127 System.exit(0); 128 } 129 else if (TASK_FILL.equals(taskName)) 130 { 131 Map parameters = new HashMap (); 133 parameters.put("ReportTitle", "Address Report"); 134 parameters.put("OrderByClause", "ORDER BY City"); 135 136 JasperFillManager.fillReportToFile(fileName, parameters, getConnection()); 137 System.err.println("Filling time : " + (System.currentTimeMillis() - start)); 138 System.exit(0); 139 } 140 else if (TASK_PRINT.equals(taskName)) 141 { 142 JasperPrintManager.printReport(fileName, true); 143 System.err.println("Printing time : " + (System.currentTimeMillis() - start)); 144 System.exit(0); 145 } 146 else if (TASK_PDF.equals(taskName)) 147 { 148 JasperExportManager.exportReportToPdfFile(fileName); 149 System.err.println("PDF creation time : " + (System.currentTimeMillis() - start)); 150 System.exit(0); 151 } 152 else if (TASK_RTF.equals(taskName)) 153 { 154 File sourceFile = new File (fileName); 155 156 JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile); 157 158 File destFile = new File (sourceFile.getParent(), jasperPrint.getName() + ".rtf"); 159 160 JRRtfExporter exporter = new JRRtfExporter(); 161 162 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 163 exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString()); 164 165 exporter.exportReport(); 166 167 System.err.println("RTF creation time : " + (System.currentTimeMillis() - start)); 168 System.exit(0); 169 } 170 else if (TASK_XML.equals(taskName)) 171 { 172 JasperExportManager.exportReportToXmlFile(fileName, false); 173 System.err.println("XML creation time : " + (System.currentTimeMillis() - start)); 174 System.exit(0); 175 } 176 else if (TASK_XML_EMBED.equals(taskName)) 177 { 178 JasperExportManager.exportReportToXmlFile(fileName, true); 179 System.err.println("XML creation time : " + (System.currentTimeMillis() - start)); 180 System.exit(0); 181 } 182 else if (TASK_HTML.equals(taskName)) 183 { 184 JasperExportManager.exportReportToHtmlFile(fileName); 185 System.err.println("HTML creation time : " + (System.currentTimeMillis() - start)); 186 System.exit(0); 187 } 188 else if (TASK_XLS.equals(taskName)) 189 { 190 File sourceFile = new File (fileName); 191 192 JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile); 193 194 File destFile = new File (sourceFile.getParent(), jasperPrint.getName() + ".xls"); 195 196 JRXlsExporter exporter = new JRXlsExporter(); 197 198 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 199 exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString()); 200 exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); 201 202 exporter.exportReport(); 203 204 System.err.println("XLS creation time : " + (System.currentTimeMillis() - start)); 205 System.exit(0); 206 } 207 else if (TASK_JXL.equals(taskName)) 208 { 209 File sourceFile = new File (fileName); 210 211 JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile); 212 213 File destFile = new File (sourceFile.getParent(), jasperPrint.getName() + ".jxl.xls"); 214 215 JExcelApiExporter exporter = new JExcelApiExporter(); 216 217 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 218 exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString()); 219 exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE); 220 221 exporter.exportReport(); 222 223 System.err.println("XLS creation time : " + (System.currentTimeMillis() - start)); 224 System.exit(0); 225 } 226 else if (TASK_CSV.equals(taskName)) 227 { 228 File sourceFile = new File (fileName); 229 230 JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile); 231 232 File destFile = new File (sourceFile.getParent(), jasperPrint.getName() + ".csv"); 233 234 JRCsvExporter exporter = new JRCsvExporter(); 235 236 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 237 exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString()); 238 239 exporter.exportReport(); 240 241 System.err.println("CSV creation time : " + (System.currentTimeMillis() - start)); 242 System.exit(0); 243 } 244 else if (TASK_RUN.equals(taskName)) 245 { 246 Map parameters = new HashMap (); 248 parameters.put("ReportTitle", "Address Report"); 249 parameters.put("OrderByClause", "ORDER BY City"); 250 251 JasperRunManager.runReportToPdfFile(fileName, parameters, getConnection()); 252 System.err.println("PDF running time : " + (System.currentTimeMillis() - start)); 253 System.exit(0); 254 } 255 else if (TASK_WRITE_XML.equals(taskName)) 256 { 257 JasperCompileManager.writeReportToXmlFile(fileName); 258 System.err.println("XML design creation time : " + (System.currentTimeMillis() - start)); 259 System.exit(0); 260 } 261 else 262 { 263 usage(); 264 System.exit(0); 265 } 266 } 267 catch (JRException e) 268 { 269 e.printStackTrace(); 270 System.exit(1); 271 } 272 catch (Exception e) 273 { 274 e.printStackTrace(); 275 System.exit(1); 276 } 277 } 278 279 280 283 private static void usage() 284 { 285 System.out.println( "NoXmlDesignApp usage:" ); 286 System.out.println( "\tjava NoXmlDesignApp -Ttask -Ffile" ); 287 System.out.println( "\tTasks : compile | fill | print | pdf | xml | xmlEmbed | html | rtf | xls | jxl | csv | run | writeXml" ); 288 } 289 290 291 294 private static Connection getConnection() throws ClassNotFoundException , SQLException 295 { 296 String driver = "org.hsqldb.jdbcDriver"; 298 String connectString = "jdbc:hsqldb:hsql://localhost"; 299 String user = "sa"; 300 String password = ""; 301 302 303 Class.forName(driver); 304 Connection conn = DriverManager.getConnection(connectString, user, password); 305 return conn; 306 } 307 308 309 312 private static JasperDesign getJasperDesign() throws JRException 313 { 314 JasperDesign jasperDesign = new JasperDesign(); 316 jasperDesign.setName("NoXmlDesignReport"); 317 jasperDesign.setPageWidth(595); 318 jasperDesign.setPageHeight(842); 319 jasperDesign.setColumnWidth(515); 320 jasperDesign.setColumnSpacing(0); 321 jasperDesign.setLeftMargin(40); 322 jasperDesign.setRightMargin(40); 323 jasperDesign.setTopMargin(50); 324 jasperDesign.setBottomMargin(50); 325 326 JRDesignStyle normalStyle = new JRDesignStyle(); 328 normalStyle.setName("Arial_Normal"); 329 normalStyle.setDefault(true); 330 normalStyle.setFontName("Arial"); 331 normalStyle.setFontSize(12); 332 normalStyle.setPdfFontName("Helvetica"); 333 normalStyle.setPdfEncoding("Cp1252"); 334 normalStyle.setPdfEmbedded(false); 335 jasperDesign.addStyle(normalStyle); 336 337 JRDesignStyle boldStyle = new JRDesignStyle(); 338 boldStyle.setName("Arial_Bold"); 339 boldStyle.setFontName("Arial"); 340 boldStyle.setFontSize(12); 341 boldStyle.setBold(true); 342 boldStyle.setPdfFontName("Helvetica-Bold"); 343 boldStyle.setPdfEncoding("Cp1252"); 344 boldStyle.setPdfEmbedded(false); 345 jasperDesign.addStyle(boldStyle); 346 347 JRDesignStyle italicStyle = new JRDesignStyle(); 348 italicStyle.setName("Arial_Italic"); 349 italicStyle.setFontName("Arial"); 350 italicStyle.setFontSize(12); 351 italicStyle.setItalic(true); 352 italicStyle.setPdfFontName("Helvetica-Oblique"); 353 italicStyle.setPdfEncoding("Cp1252"); 354 italicStyle.setPdfEmbedded(false); 355 jasperDesign.addStyle(italicStyle); 356 357 JRDesignParameter parameter = new JRDesignParameter(); 359 parameter.setName("ReportTitle"); 360 parameter.setValueClass(java.lang.String .class); 361 jasperDesign.addParameter(parameter); 362 363 parameter = new JRDesignParameter(); 364 parameter.setName("OrderByClause"); 365 parameter.setValueClass(java.lang.String .class); 366 jasperDesign.addParameter(parameter); 367 368 JRDesignQuery query = new JRDesignQuery(); 370 query.setText("SELECT * FROM Address $P!{OrderByClause}"); 371 jasperDesign.setQuery(query); 372 373 JRDesignField field = new JRDesignField(); 375 field.setName("Id"); 376 field.setValueClass(java.lang.Integer .class); 377 jasperDesign.addField(field); 378 379 field = new JRDesignField(); 380 field.setName("FirstName"); 381 field.setValueClass(java.lang.String .class); 382 jasperDesign.addField(field); 383 384 field = new JRDesignField(); 385 field.setName("LastName"); 386 field.setValueClass(java.lang.String .class); 387 jasperDesign.addField(field); 388 389 field = new JRDesignField(); 390 field.setName("Street"); 391 field.setValueClass(java.lang.String .class); 392 jasperDesign.addField(field); 393 394 field = new JRDesignField(); 395 field.setName("City"); 396 field.setValueClass(java.lang.String .class); 397 jasperDesign.addField(field); 398 399 JRDesignVariable variable = new JRDesignVariable(); 401 variable.setName("CityNumber"); 402 variable.setValueClass(java.lang.Integer .class); 403 variable.setResetType(JRVariable.RESET_TYPE_GROUP); 404 JRDesignGroup group = new JRDesignGroup(); 405 group.setName("CityGroup"); 406 variable.setResetGroup(group); 407 variable.setCalculation(JRVariable.CALCULATION_SYSTEM); 408 JRDesignExpression expression = new JRDesignExpression(); 409 expression.setValueClass(java.lang.Integer .class); 410 expression.setText("($V{CityNumber} != null)?(new Integer($V{CityNumber}.intValue() + 1)):(new Integer(1))"); 411 variable.setInitialValueExpression(expression); 412 jasperDesign.addVariable(variable); 413 414 variable = new JRDesignVariable(); 415 variable.setName("AllCities"); 416 variable.setValueClass(java.lang.String .class); 417 variable.setResetType(JRVariable.RESET_TYPE_REPORT); 418 variable.setCalculation(JRVariable.CALCULATION_SYSTEM); 419 jasperDesign.addVariable(variable); 420 421 group.setMinHeightToStartNewPage(60); 423 expression = new JRDesignExpression(); 424 expression.setValueClass(java.lang.String .class); 425 expression.setText("$F{City}"); 426 group.setExpression(expression); 427 428 JRDesignBand band = new JRDesignBand(); 429 band.setHeight(20); 430 JRDesignRectangle rectangle = new JRDesignRectangle(); 431 rectangle.setX(0); 432 rectangle.setY(4); 433 rectangle.setWidth(515); 434 rectangle.setHeight(15); 435 rectangle.setForecolor(new Color (0xC0, 0xC0, 0xC0)); 436 rectangle.setBackcolor(new Color (0xC0, 0xC0, 0xC0)); 437 band.addElement(rectangle); 438 JRDesignTextField textField = new JRDesignTextField(); 439 textField.setX(0); 440 textField.setY(4); 441 textField.setWidth(515); 442 textField.setHeight(15); 443 textField.setBackcolor(new Color (0xC0, 0xC0, 0xC0)); 444 textField.setMode(JRElement.MODE_OPAQUE); 445 textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_LEFT); 446 textField.setStyle(boldStyle); 447 expression = new JRDesignExpression(); 448 expression.setValueClass(java.lang.String .class); 449 expression.setText("\" \" + String.valueOf($V{CityNumber}) + \". \" + String.valueOf($F{City})"); 450 textField.setExpression(expression); 451 band.addElement(textField); 452 JRDesignLine line = new JRDesignLine(); 453 line.setX(0); 454 line.setY(19); 455 line.setWidth(515); 456 line.setHeight(0); 457 band.addElement(line); 458 group.setGroupHeader(band); 459 460 band = new JRDesignBand(); 461 band.setHeight(20); 462 line = new JRDesignLine(); 463 line.setX(0); 464 line.setY(-1); 465 line.setWidth(515); 466 line.setHeight(0); 467 band.addElement(line); 468 JRDesignStaticText staticText = new JRDesignStaticText(); 469 staticText.setX(400); 470 staticText.setY(0); 471 staticText.setWidth(60); 472 staticText.setHeight(15); 473 staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT); 474 staticText.setStyle(boldStyle); 475 staticText.setText("Count : "); 476 band.addElement(staticText); 477 textField = new JRDesignTextField(); 478 textField.setX(460); 479 textField.setY(0); 480 textField.setWidth(30); 481 textField.setHeight(15); 482 textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT); 483 textField.setStyle(boldStyle); 484 expression = new JRDesignExpression(); 485 expression.setValueClass(java.lang.Integer .class); 486 expression.setText("$V{CityGroup_COUNT}"); 487 textField.setExpression(expression); 488 band.addElement(textField); 489 group.setGroupFooter(band); 490 491 jasperDesign.addGroup(group); 492 493 band = new JRDesignBand(); 495 band.setHeight(50); 496 line = new JRDesignLine(); 497 line.setX(0); 498 line.setY(0); 499 line.setWidth(515); 500 line.setHeight(0); 501 band.addElement(line); 502 textField = new JRDesignTextField(); 503 textField.setBlankWhenNull(true); 504 textField.setX(0); 505 textField.setY(10); 506 textField.setWidth(515); 507 textField.setHeight(30); 508 textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER); 509 textField.setStyle(normalStyle); 510 textField.setFontSize(22); 511 expression = new JRDesignExpression(); 512 expression.setValueClass(java.lang.String .class); 513 expression.setText("$P{ReportTitle}"); 514 textField.setExpression(expression); 515 band.addElement(textField); 516 jasperDesign.setTitle(band); 517 518 band = new JRDesignBand(); 520 band.setHeight(20); 521 rectangle = new JRDesignRectangle(); 522 rectangle.setX(0); 523 rectangle.setY(5); 524 rectangle.setWidth(515); 525 rectangle.setHeight(15); 526 rectangle.setForecolor(new Color (0x33, 0x33, 0x33)); 527 rectangle.setBackcolor(new Color (0x33, 0x33, 0x33)); 528 band.addElement(rectangle); 529 staticText = new JRDesignStaticText(); 530 staticText.setX(0); 531 staticText.setY(5); 532 staticText.setWidth(55); 533 staticText.setHeight(15); 534 staticText.setForecolor(Color.white); 535 staticText.setBackcolor(new Color (0x33, 0x33, 0x33)); 536 staticText.setMode(JRElement.MODE_OPAQUE); 537 staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER); 538 staticText.setStyle(boldStyle); 539 staticText.setText("ID"); 540 band.addElement(staticText); 541 staticText = new JRDesignStaticText(); 542 staticText.setX(55); 543 staticText.setY(5); 544 staticText.setWidth(205); 545 staticText.setHeight(15); 546 staticText.setForecolor(Color.white); 547 staticText.setBackcolor(new Color (0x33, 0x33, 0x33)); 548 staticText.setMode(JRElement.MODE_OPAQUE); 549 staticText.setStyle(boldStyle); 550 staticText.setText("Name"); 551 band.addElement(staticText); 552 staticText = new JRDesignStaticText(); 553 staticText.setX(260); 554 staticText.setY(5); 555 staticText.setWidth(255); 556 staticText.setHeight(15); 557 staticText.setForecolor(Color.white); 558 staticText.setBackcolor(new Color (0x33, 0x33, 0x33)); 559 staticText.setMode(JRElement.MODE_OPAQUE); 560 staticText.setStyle(boldStyle); 561 staticText.setText("Street"); 562 band.addElement(staticText); 563 jasperDesign.setPageHeader(band); 564 565 band = new JRDesignBand(); 567 jasperDesign.setColumnHeader(band); 568 569 band = new JRDesignBand(); 571 band.setHeight(20); 572 textField = new JRDesignTextField(); 573 textField.setX(0); 574 textField.setY(4); 575 textField.setWidth(50); 576 textField.setHeight(15); 577 textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT); 578 textField.setStyle(normalStyle); 579 expression = new JRDesignExpression(); 580 expression.setValueClass(java.lang.Integer .class); 581 expression.setText("$F{Id}"); 582 textField.setExpression(expression); 583 band.addElement(textField); 584 textField = new JRDesignTextField(); 585 textField.setStretchWithOverflow(true); 586 textField.setX(55); 587 textField.setY(4); 588 textField.setWidth(200); 589 textField.setHeight(15); 590 textField.setPositionType(JRElement.POSITION_TYPE_FLOAT); 591 textField.setStyle(normalStyle); 592 expression = new JRDesignExpression(); 593 expression.setValueClass(java.lang.String .class); 594 expression.setText("$F{FirstName} + \" \" + $F{LastName}"); 595 textField.setExpression(expression); 596 band.addElement(textField); 597 textField = new JRDesignTextField(); 598 textField.setStretchWithOverflow(true); 599 textField.setX(260); 600 textField.setY(4); 601 textField.setWidth(255); 602 textField.setHeight(15); 603 textField.setPositionType(JRElement.POSITION_TYPE_FLOAT); 604 textField.setStyle(normalStyle); 605 expression = new JRDesignExpression(); 606 expression.setValueClass(java.lang.String .class); 607 expression.setText("$F{Street}"); 608 textField.setExpression(expression); 609 band.addElement(textField); 610 line = new JRDesignLine(); 611 line.setX(0); 612 line.setY(19); 613 line.setWidth(515); 614 line.setHeight(0); 615 line.setForecolor(new Color (0x80, 0x80, 0x80)); 616 line.setPositionType(JRElement.POSITION_TYPE_FLOAT); 617 band.addElement(line); 618 jasperDesign.setDetail(band); 619 620 band = new JRDesignBand(); 622 jasperDesign.setColumnFooter(band); 623 624 band = new JRDesignBand(); 626 jasperDesign.setPageFooter(band); 627 628 band = new JRDesignBand(); 630 jasperDesign.setSummary(band); 631 632 return jasperDesign; 633 } 634 635 636 } 637 | Popular Tags |