KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > xmleditor > XMLWriter


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 JavaDoc;
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 JavaDoc 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 JavaDoc aFileName )
33             throws IOException {
34
35         XMLOutputter xmlOut = new XMLOutputter();
36         FileWriter writer = new java.io.FileWriter JavaDoc( 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         // queryString is optional in DTD
171
if (query == null) return;
172
173         JRQueryChunk chunks[] = query.getChunks();
174         // queryString is optional in DTD
175
if (chunks == null) return;
176
177         JRQueryChunk chunk = null;
178         StringBuffer JavaDoc buff = new StringBuffer JavaDoc("");
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         // can't use field map because we need to maintain field order
194
// due to a bug in the Microsoft's @#$% SQLServer JDBC Driver
195
// "[Microsoft][SQLServer JDBC Driver]ResultSet can not re-read row data for column X"
196
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 /* Iterator iter = d.getVariablesMap().values().iterator();
219         JRVariable variable = null;
220         while( iter.hasNext() ) {
221             variable = (JRVariable)iter.next();
222             if( !variable.isSystemDefined() ) {
223                 addVariable( r, variable );
224             }
225         }
226 */

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 JavaDoc nm, JRExpression exp ) {
254         Element e = new Element( nm );
255
256         // "variableExpression" and "initialValueExpression" are optional for variable
257
// however, this is also called for "groupExpression" which isn't optional
258
// if groupExpression is null, we will generate invalid XML
259

260         String JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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                 // unsure if this fix is correct or just masking the real problem
663
String JavaDoc 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 JavaDoc nm, String JavaDoc val ) {
679         if( val != null && val.trim().length() > 0 ) {
680             addCData( e, nm, val );
681         }
682     }
683
684     void addCData( Element e, String JavaDoc nm, String JavaDoc val ) {
685         Element r = new Element( nm );
686         r.addContent( new CDATA( val ) );
687         e.addContent( r );
688     }
689
690 }
691
Free Books   Free Magazines  
Popular Tags