1 package com.calipso.xmleditor; 2 3 import java.util.*; 4 import org.jdom.*; 5 import org.jdom.output.*; 6 import java.io.*; 7 import java.awt.Color ; 8 9 import net.sf.jasperreports.engine.base.JRBaseReport; 10 import net.sf.jasperreports.engine.*; 11 12 public class XMLWriter { 13 14 static final String DTD_URL 15 = "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"; 16 Document doc = null; 17 18 public XMLWriter( JRBaseReport d ) { 19 20 doc = new Document(); 21 createRootElement( d ); 22 DocType docType = new DocType( 23 "jasperReport", 24 "-//JasperReports//DTD Report Design//EN", DTD_URL ); 25 doc.setDocType( docType ); 26 } 27 28 public Document getDocument() { 29 return doc; 30 } 31 32 public void saveDocument( String aFileName ) 33 throws IOException { 34 35 XMLOutputter xmlOut = new XMLOutputter(); 36 FileWriter writer = new java.io.FileWriter ( aFileName); 37 xmlOut.output( doc, writer ); 38 writer.flush(); 39 writer.close(); 40 } 41 42 void createRootElement( JRBaseReport d ) { 43 44 Element r = new Element( "jasperReport" ); 45 doc.setRootElement( r ); 46 r.setAttribute( "name", d.getName() ); 47 r.setAttribute( "columnCount", "" + d.getColumnCount() ); 48 if( d.getPrintOrder() != JRReport.PRINT_ORDER_VERTICAL ) { 49 r.setAttribute( "printOrder", "Horizontal" ); 50 } 51 r.setAttribute( "pageWidth", "" + d.getPageWidth() ); 52 r.setAttribute( "pageHeight", "" + d.getPageHeight() ); 53 if( d.getOrientation() != JRReport.ORIENTATION_PORTRAIT ) { 54 r.setAttribute( "orientation", "Landscape" ); 55 } 56 if( d.getWhenNoDataType() == JRReport.WHEN_NO_DATA_TYPE_ALL_SECTIONS_NO_DETAIL ) { 57 r.setAttribute( "whenNoDataType", "AllSectionsNoDetail" ); 58 } 59 else if( d.getWhenNoDataType() == JRReport.WHEN_NO_DATA_TYPE_BLANK_PAGE ) { 60 r.setAttribute( "whenNoDataType", "BlankPage" ); 61 } 62 r.setAttribute( "columnWidth", "" + d.getColumnWidth() ); 63 r.setAttribute( "columnSpacing", "" + d.getColumnSpacing() ); 64 r.setAttribute( "leftMargin", "" + d.getLeftMargin() ); 65 r.setAttribute( "rightMargin", "" + d.getRightMargin() ); 66 r.setAttribute( "topMargin", "" + d.getTopMargin() ); 67 r.setAttribute( "bottomMargin", "" + d.getBottomMargin() ); 68 if( d.isTitleNewPage() ) { 69 r.setAttribute( "isTitleNewPage", "true" ); 70 } 71 if( d.isSummaryNewPage() ) { 72 r.setAttribute( "isSummaryNewPage", "true" ); 73 } 74 if( d.getScriptletClass() != null ) { 75 r.setAttribute( "scriptletClass", d.getScriptletClass() ); 76 } 77 78 addReportFonts( d, r ); 79 addParameters( d, r ); 80 addQueryString( d, r ); 81 addFields( d, r ); 82 addVariables( d, r ); 83 JRGroup groups[] = d.getGroups(); 84 if( groups != null && groups.length > 0 ) { 85 addGroups( d, r ); 86 } 87 addTitle( d, r ); 88 addPageHeader( d, r ); 89 addColumnHeader( d, r ); 90 addDetail( d, r ); 91 addColumnFooter( d, r ); 92 addPageFooter( d, r ); 93 addSummary( d, r ); 94 } 95 96 void addReportFonts( JRBaseReport d, Element r ) { 97 JRReportFont fonts[] = d.getFonts(); 98 if( fonts != null ) { 99 for( int i=0;i<fonts.length;i++ ) { 100 addReportFont( r, fonts[i] ); 101 } 102 } 103 } 104 105 void addReportFont( Element parent, JRReportFont font ) { 106 Element e = new Element( "reportFont" ); 107 e.setAttribute( "name", font.getName() ); 108 if( font.isDefault() ) { 109 e.setAttribute( "isDefault", "true" ); 110 } 111 setFontAttributes( e, font ); 112 parent.addContent( e ); 113 } 114 115 void setFontAttributes( Element e, JRFont font ) { 116 e.setAttribute( "fontName", font.getFontName() ); 117 e.setAttribute( "size", "" + font.getSize() ); 118 if( font.isBold() ) { 119 e.setAttribute( "isBold", "true" ); 120 } 121 if( font.isItalic() ) { 122 e.setAttribute( "isItalic", "true" ); 123 } 124 if( font.isUnderline() ) { 125 e.setAttribute( "isUnderline", "true" ); 126 } 127 if( font.isStrikeThrough() ) { 128 e.setAttribute( "isStrikeThrough", "true" ); 129 } 130 if( font.getPdfFontName() != null 131 && font.getPdfFontName().trim().length() > 0 ) { 132 e.setAttribute( "pdfFontName", font.getPdfFontName() ); 133 } 134 if( font.getPdfEncoding() != null 135 && font.getPdfEncoding().trim().length() > 0 ) { 136 e.setAttribute( "pdfEncoding", font.getPdfEncoding() ); 137 } 138 e.setAttribute( "isPdfEmbedded", "" + font.isPdfEmbedded() ); 139 140 } 141 142 void addParameters( JRBaseReport d, Element r ) { 143 JRParameter parms[] = d.getParameters(); 144 for( int i=0;i<parms.length;i++ ) { 145 if( !parms[i].isSystemDefined() ) { 146 addParameter( r, parms[i] ); 147 } 148 } 149 } 150 151 void addParameter( Element r, JRParameter parm ) { 152 Element e = new Element( "parameter" ); 153 e.setAttribute( "name", parm.getName() ); 154 e.setAttribute( "class", parm.getValueClass().getName() ); 155 if( !parm.isForPrompting() ) { 156 e.setAttribute( "isForPrompting", "false" ); 157 } 158 r.addContent( e ); 159 condCData( e, "parameterDescription", parm.getDescription() ); 160 if( parm.getDefaultValueExpression() != null ) { 161 addExpression( e, "defaultValueExpression", 162 parm.getDefaultValueExpression()); 163 } 164 } 165 166 void addQueryString( JRBaseReport d, Element r ) { 167 Element e = new Element( "queryString" ); 168 JRQuery query = d.getQuery(); 169 170 if (query == null) return; 172 173 JRQueryChunk chunks[] = query.getChunks(); 174 if (chunks == null) return; 176 177 JRQueryChunk chunk = null; 178 StringBuffer buff = new StringBuffer (""); 179 for( int i=0;i<chunks.length;i++ ) { 180 chunk = chunks[i]; 181 if( chunk.getType() == JRQueryChunk.TYPE_TEXT ) { 182 buff.append( chunk.getText() ); 183 } 184 else { 185 buff.append( "$P{" + chunk.getText() + "}" ); 186 } 187 } 188 e.addContent( new CDATA( buff.toString() ) ); 189 r.addContent( e ); 190 } 191 192 void addFields( JRBaseReport d, Element r ) { 193 JRField[] fields = d.getFields(); 197 for (int i = 0; i < fields.length; i++) { 198 addField( r, fields[i]); 199 } 200 } 201 202 void addField( Element r, JRField field ) { 203 Element e = new Element( "field" ); 204 e.setAttribute( "name", field.getName() ); 205 e.setAttribute( "class", field.getValueClass().getName() ); 206 condCData( e, "fieldDescription", field.getDescription() ); 207 r.addContent( e ); 208 } 209 210 void addVariables( JRBaseReport d, Element r ) { 211 JRVariable vars[] = d.getVariables(); 212 for( int i=0;i<vars.length;i++ ) { 213 if( !vars[i].isSystemDefined() ) { 214 addVariable( r, vars[i] ); 215 } 216 } 217 218 227 } 228 229 void addVariable( Element r, JRVariable variable ) { 230 Element e = new Element( "variable" ); 231 e.setAttribute( "name", variable.getName() ); 232 e.setAttribute( "class", variable.getValueClass().getName() ); 233 e.setAttribute( "resetType", 234 RW.getResetTypeName( variable.getResetType() ) ); 235 JRGroup resetGroup = variable.getResetGroup(); 236 if( resetGroup != null && resetGroup.getName() != null ) { 237 e.setAttribute( "resetGroup", resetGroup.getName() ); 238 } 239 e.setAttribute( "calculation", 240 RW.getCalculationName( variable.getCalculation() ) ); 241 JRExpression exp = variable.getExpression(); 242 if( exp != null ) { 243 addExpression( e, "variableExpression", exp ); 244 } 245 exp = null; 246 exp = variable.getInitialValueExpression(); 247 if( exp != null ) { 248 addExpression( e, "initialValueExpression", exp ); 249 } 250 r.addContent( e ); 251 } 252 253 void addExpression( Element element, String nm, JRExpression exp ) { 254 Element e = new Element( nm ); 255 256 260 String expressionText = RW.getExpressionText(exp); 261 if (expressionText != null) { 262 e.addContent( RW.getExpressionText( exp ) ); 263 element.addContent( e ); 264 } 265 } 266 267 void addGroups( JRBaseReport d, Element r ) { 268 JRGroup grps[] = d.getGroups(); 269 JRGroup group = null; 270 for( int i=0;i<grps.length;i++ ) { 271 addGroup( r, grps[i] ); 272 } 273 } 274 275 void addTitle( JRBaseReport d, Element r ) { 276 if( (JRBand)d.getTitle() != null ) { 277 addFormatSection( r, "title", (JRBand)d.getTitle() ); 278 } 279 } 280 281 void addPageHeader( JRBaseReport d, Element r ) { 282 if( (JRBand)d.getPageHeader() != null ) { 283 addFormatSection( r, "pageHeader", 284 (JRBand)d.getPageHeader() ); 285 } 286 } 287 288 void addColumnHeader( JRBaseReport d, Element r ) { 289 if( (JRBand)d.getColumnHeader() != null ) { 290 addFormatSection( r, "columnHeader", 291 (JRBand)d.getColumnHeader() ); 292 } 293 } 294 295 void addDetail( JRBaseReport d, Element r ) { 296 if( (JRBand)d.getDetail() != null ) { 297 addFormatSection( r, "detail", (JRBand)d.getDetail() ); 298 } 299 } 300 301 void addColumnFooter( JRBaseReport d, Element r ) { 302 if( (JRBand)d.getColumnFooter() != null ) { 303 addFormatSection( r, "columnFooter", 304 (JRBand)d.getColumnFooter() ); 305 } 306 } 307 308 void addPageFooter( JRBaseReport d, Element r ) { 309 if( (JRBand)d.getPageFooter() != null ) { 310 addFormatSection( r, "pageFooter", 311 (JRBand)d.getPageFooter() ); 312 } 313 } 314 315 void addSummary( JRBaseReport d, Element r ) { 316 if( (JRBand)d.getSummary() != null ) { 317 addFormatSection( r, "summary", 318 (JRBand)d.getSummary() ); 319 } 320 } 321 322 void addGroup( Element r, JRGroup group ) { 323 Element e = new Element( "group" ); 324 e.setAttribute( "name", group.getName() ); 325 if( group.isStartNewColumn() ) { 326 e.setAttribute( "isStartNewColumn", "true" ); 327 } 328 if( group.isStartNewPage() ) { 329 e.setAttribute( "isStartNewPage", "true" ); 330 } 331 if( group.isResetPageNumber() ) { 332 e.setAttribute( "isResetPageNumber", "true" ); 333 } 334 if( group.isReprintHeaderOnEachPage() ) { 335 e.setAttribute( "isReprintHeaderOnEachPage", "true" ); 336 } 337 if( group.getMinHeightToStartNewPage() != 0 ) { 338 e.setAttribute( "minHeightToStartNewPage", 339 "" + group.getMinHeightToStartNewPage() ); 340 } 341 addExpression( e, "groupExpression", group.getExpression() ); 342 if( (JRBand)group.getGroupHeader() != null ) { 343 addFormatSection( e, "groupHeader", 344 (JRBand)group.getGroupHeader() ); 345 } 346 if( (JRBand)group.getGroupFooter() != null ) { 347 addFormatSection( e, "groupFooter", 348 (JRBand)group.getGroupFooter() ); 349 } 350 r.addContent( e ); 351 } 352 353 void addFormatSection( Element parent, String nm, JRBand band ) { 354 Element e = new Element( nm ); 355 parent.addContent( e ); 356 addBand( e, band ); 357 } 358 359 void addBand( Element parent, JRBand band ) { 360 Element e = new Element( "band" ); 361 parent.addContent( e ); 362 e.setAttribute( "height", "" + band.getHeight() ); 363 if( band.getPrintWhenExpression() != null ) { 364 addExpression( e, "printWhenExpression", 365 band.getPrintWhenExpression() ); 366 } 367 addElementGroupElements( e, band ); 368 } 369 370 void addElementGroup( Element parent, JRElementGroup grp ) { 371 Element e = new Element( "elementGroup" ); 372 parent.addContent( e ); 373 addElementGroupElements( e, grp ); 374 } 375 376 void addElementGroupElements( Element parent, JRElementGroup grp ) { 377 Iterator iter = grp.getChildren().iterator(); 378 Object element = null; 379 while( iter.hasNext() ) { 380 element = iter.next(); 381 if( element instanceof JRElementGroup ) { 382 addElementGroup( parent, (JRElementGroup)element ); 383 } 384 else if( element instanceof JRLine ) { 385 addLine( parent, (JRLine)element ); 386 } 387 else if( element instanceof JRRectangle ) { 388 addRectangle( parent, (JRRectangle)element ); 389 } 390 else if( element instanceof JRImage ) { 391 addImage( parent, (JRImage)element ); 392 } 393 else if( element instanceof JRStaticText ) { 394 addStaticText( parent, (JRStaticText)element ); 395 } 396 else if( element instanceof JRTextField ) { 397 addTextField( parent, (JRTextField)element ); 398 } 399 else if ( element instanceof JRSubreport ) { 400 addSubreport(parent , (JRSubreport) element ); 401 } 402 } 403 } 404 405 void addSubreport( Element parent , JRSubreport subreport) { 406 Element e = new Element("subreport"); 407 parent.addContent(e); 408 addReportElement(e,subreport); 409 for (int i = 0 ;i<subreport.getParameters().length;i++) { 410 addSubreportParameter(e,subreport.getParameters()[i]); 411 } 412 addExpression(e,"connectionExpression",subreport.getConnectionExpression()); 413 addExpression(e,"subreportExpression",subreport.getExpression()); 414 } 415 416 void addSubreportParameter(Element parent,JRSubreportParameter element) { 417 Element e= new Element("subreportParameter"); 418 parent.addContent(e); 419 e.setAttribute("name",element.getName()); 420 addExpression(e,"subreportParameterExpression",element.getExpression()); 421 } 422 423 void addLine( Element parent, JRLine line ) { 424 425 Element e = new Element( "line" ); 426 parent.addContent( e ); 427 if( line.getDirection() != JRLine.DIRECTION_TOP_DOWN ) { 428 e.setAttribute( "direction", "BottomUp" ); 429 } 430 addReportElement( e, line ); 431 addGraphicElement( e, line ); 432 } 433 434 void addRectangle( Element parent, JRRectangle rectangle ) { 435 Element e = new Element( "rectangle" ); 436 parent.addContent( e ); 437 438 addReportElement( e, rectangle ); 439 addGraphicElement( e, rectangle ); 440 } 441 442 void addImage( Element parent, JRImage image ) { 443 Element e = new Element( "image" ); 444 parent.addContent( e ); 445 446 String scale = "RetainShape"; 447 switch( image.getScaleImage() ) { 448 case JRImage.SCALE_IMAGE_CLIP: 449 scale = "Clip"; 450 break; 451 case JRImage.SCALE_IMAGE_FILL_FRAME: 452 scale = "FillFrame"; 453 break; 454 } 455 e.setAttribute( "scaleImage", scale ); 456 if( image.getHorizontalAlignment() != JRAlignment.HORIZONTAL_ALIGN_LEFT ) { 457 e.setAttribute( "hAlign", 458 RW.getHorizontalAlignmentName( image.getHorizontalAlignment() ) ); 459 } 460 if( image.getVerticalAlignment() != JRAlignment.VERTICAL_ALIGN_TOP ) { 461 e.setAttribute( "vAlign", 462 RW.getVerticalAlignmentName( image.getVerticalAlignment() ) ); 463 } 464 if( !image.isUsingCache() ) { 465 e.setAttribute( "isUsingCache", "false" ); 466 } 467 468 addReportElement( e, image ); 469 addGraphicElement( e, image ); 470 Element expElement = new Element( "imageExpression" ); 471 e.addContent( expElement ); 472 expElement.setAttribute( "class", 473 image.getExpression().getValueClass().getName() ); 474 expElement.addContent( RW.getExpressionText( image.getExpression() ) ); 475 setHyperlinkType( e, image ); 476 condCData( e, "anchorNameExpression", 477 RW.getExpressionText( image.getAnchorNameExpression() ) ); 478 condCData( e, "hyperlinkReferenceExpression", 479 RW.getExpressionText( image.getHyperlinkReferenceExpression() ) ); 480 condCData( e, "hyperlinkAnchorExpression", 481 RW.getExpressionText( image.getHyperlinkAnchorExpression() ) ); 482 condCData( e, "hyperlinkPageExpression", 483 RW.getExpressionText( image.getHyperlinkPageExpression() ) ); 484 } 485 486 void addStaticText( Element parent, JRStaticText text ) { 487 Element e = new Element( "staticText" ); 488 parent.addContent( e ); 489 addReportElement( e, text ); 490 addTextElement( e, text ); 491 Element textElement = new Element( "text" ); 492 e.addContent( textElement ); 493 textElement.addContent( text.getText() ); 494 } 495 496 void addTextField( Element parent, JRTextField field ) { 497 Element e = new Element( "textField" ); 498 parent.addContent( e ); 499 if( field.isStretchWithOverflow() ) { 500 e.setAttribute( "isStretchWithOverflow", "true" ); 501 } 502 if( field.getEvaluationTime() != JRExpression.EVALUATION_TIME_NOW ) { 503 e.setAttribute( "evaluationTime", 504 RW.getEvaluationTimeName( field.getEvaluationTime()) ); 505 } 506 JRGroup evalGroup = field.getEvaluationGroup(); 507 if( evalGroup != null && evalGroup.getName() != null ) { 508 e.setAttribute( "evaluationGroup", evalGroup.getName() ); 509 } 510 if( field.getPattern() != null 511 && field.getPattern().trim().length() > 0 ) { 512 e.setAttribute( "pattern", field.getPattern() ); 513 } 514 if( field.isBlankWhenNull() ) { 515 e.setAttribute( "isBlankWhenNull", "true" ); 516 } 517 setHyperlinkType( e, field ); 518 addReportElement( e, field ); 519 addTextElement( e, field ); 520 Element expElement = new Element( "textFieldExpression" ); 521 e.addContent( expElement ); 522 if( field.getExpression() != null ) { 523 if( field.getExpression().getValueClass() != null ) { 524 expElement.setAttribute( "class", 525 field.getExpression().getValueClass().getName() ); 526 } 527 else { 528 expElement.setAttribute( "class", "java.lang.String" ); 529 } 530 } 531 expElement.addContent( RW.getExpressionText( field.getExpression() ) ); 532 condCData( e, "anchorNameExpression", 533 RW.getExpressionText( field.getAnchorNameExpression() ) ); 534 condCData( e, "hyperlinkReferenceExpression", 535 RW.getExpressionText( field.getHyperlinkReferenceExpression() ) ); 536 condCData( e, "hyperlinkAnchorExpression", 537 RW.getExpressionText( field.getHyperlinkAnchorExpression() ) ); 538 condCData( e, "hyperlinkPageExpression", 539 RW.getExpressionText( field.getHyperlinkPageExpression() ) ); 540 } 541 542 void setHyperlinkType( Element e, JRHyperlink h ) { 543 String hlType = RW.getHyperlinkTypeName( h.getHyperlinkType() ); 544 if( !"None".equals( hlType ) ) { 545 e.setAttribute( "hyperlinkType", hlType ); 546 } 547 } 548 549 void addReportElement( Element parent, JRElement element ) { 550 Element e = new Element( "reportElement" ); 551 String s = ""; 552 switch( element.getPositionType() ) { 553 case JRElement.POSITION_TYPE_FLOAT: 554 e.setAttribute( "positionType", "Float" ); 555 break; 556 case JRElement.POSITION_TYPE_FIX_RELATIVE_TO_BOTTOM: 557 e.setAttribute( "positionType", "FixRelativeToBottom" ); 558 break; 559 } 560 if( !element.isPrintRepeatedValues() ) { 561 e.setAttribute( "isPrintRepeatedValues", "false" ); 562 } 563 if( element.getMode() == JRElement.MODE_TRANSPARENT ) { 564 e.setAttribute( "mode", "Transparent" ); 565 } 566 else { 567 e.setAttribute( "mode", "Opaque" ); 568 } 569 e.setAttribute( "x", "" + element.getX() ); 570 e.setAttribute( "y", "" + element.getY() ); 571 e.setAttribute( "width", "" + element.getWidth() ); 572 e.setAttribute( "height", "" + element.getHeight() ); 573 if( element.isRemoveLineWhenBlank() ) { 574 e.setAttribute( "isRemoveLineWhenBlank", "true" ); 575 } 576 if( element.isPrintInFirstWholeBand() ) { 577 e.setAttribute( "isPrintInFirstWholeBand", "true" ); 578 } 579 if( element.isPrintWhenDetailOverflows() ) { 580 e.setAttribute( "isPrintWhenDetailOverflows", "true" ); 581 } 582 583 JRGroup changeGroup = element.getPrintWhenGroupChanges(); 584 if (changeGroup != null) { 585 e.setAttribute("printWhenGroupChanges", changeGroup.getName()); 586 } 587 588 java.awt.Color color = element.getForecolor(); 589 if( color.getRGB() != Color.black.getRGB() ) { 590 s = Integer.toHexString( color.getRGB() ); 591 s = "#" + s.substring( 2 ); 592 e.setAttribute( "forecolor", s ); 593 } 594 color = element.getBackcolor(); 595 if( color.getRGB() != Color.white.getRGB() ) { 596 s = Integer.toHexString( color.getRGB() ); 597 s = "#" + s.substring( 2 ); 598 e.setAttribute( "backcolor", s ); 599 } 600 JRExpression exp = element.getPrintWhenExpression(); 601 if( exp != null ) { 602 addExpression( e, "printWhenExpression", 603 element.getPrintWhenExpression() ); 604 } 605 parent.addContent( e ); 606 } 607 608 void addGraphicElement( Element parent, JRGraphicElement element ) { 609 Element e = new Element( "graphicElement" ); 610 switch( element.getStretchType() ) { 611 case JRGraphicElement.STRETCH_TYPE_RELATIVE_TO_BAND_HEIGHT: 612 e.setAttribute( "stretchType", "RelativeToBandHeight" ); 613 break; 614 case JRGraphicElement.STRETCH_TYPE_RELATIVE_TO_TALLEST_OBJECT: 615 e.setAttribute( "stretchType", "RelativeToTallestObject" ); 616 break; 617 } 618 switch( element.getPen() ) { 619 case JRGraphicElement.PEN_2_POINT: 620 e.setAttribute( "pen", "2Point" ); 621 break; 622 case JRGraphicElement.PEN_4_POINT: 623 e.setAttribute( "pen", "4Point" ); 624 break; 625 case JRGraphicElement.PEN_DOTTED: 626 e.setAttribute( "pen", "Dotted" ); 627 break; 628 case JRGraphicElement.PEN_NONE: 629 e.setAttribute( "pen", "None" ); 630 break; 631 } 632 parent.addContent( e ); 633 } 634 635 void addTextElement( Element parent, JRTextElement element ) { 636 Element e = new Element( "textElement" ); 637 switch( element.getTextAlignment() ) { 638 case JRTextElement.TEXT_ALIGN_CENTER: 639 e.setAttribute( "textAlignment", "Center" ); 640 break; 641 case JRTextElement.TEXT_ALIGN_RIGHT: 642 e.setAttribute( "textAlignment", "Right" ); 643 break; 644 case JRTextElement.TEXT_ALIGN_JUSTIFIED: 645 e.setAttribute( "textAlignment", "Justified" ); 646 break; 647 } 648 switch( element.getLineSpacing() ) { 649 case JRTextElement.LINE_SPACING_DOUBLE: 650 e.setAttribute( "textAlignment", "Double" ); 651 break; 652 case JRTextElement.LINE_SPACING_1_1_2: 653 e.setAttribute( "textAlignment", "1_1_2" ); 654 break; 655 } 656 JRFont font = element.getFont(); 657 if( font != null ) { 658 Element fontElement = new Element( "font" ); 659 660 if( font instanceof JRReportFont ) { 661 JRReportFont rf = (JRReportFont)font; 662 String fontName = rf.getName(); 664 if (fontName != null) { 665 e.addContent( fontElement ); 666 fontElement.setAttribute( "reportFont", fontName ); 667 } 668 } 669 else { 670 e.addContent( fontElement ); 671 setFontAttributes( fontElement, font ); 672 } 673 } 674 parent.addContent( e ); 675 676 } 677 678 void condCData( Element e, String nm, String val ) { 679 if( val != null && val.trim().length() > 0 ) { 680 addCData( e, nm, val ); 681 } 682 } 683 684 void addCData( Element e, String nm, String val ) { 685 Element r = new Element( nm ); 686 r.addContent( new CDATA( val ) ); 687 e.addContent( r ); 688 } 689 690 } 691
| Popular Tags
|