102 lines
4.9 KiB
Java
102 lines
4.9 KiB
Java
package net.sf.jasperreports.engine.xml;
|
|
|
|
import java.io.IOException;
|
|
import net.sf.jasperreports.engine.JRConditionalStyle;
|
|
import net.sf.jasperreports.engine.JRLineBox;
|
|
import net.sf.jasperreports.engine.JRPen;
|
|
import net.sf.jasperreports.engine.JRStyle;
|
|
import net.sf.jasperreports.engine.JRStyleContainer;
|
|
import net.sf.jasperreports.engine.util.JRXmlWriteHelper;
|
|
|
|
public abstract class JRXmlBaseWriter {
|
|
protected JRXmlWriteHelper writer;
|
|
|
|
protected void useWriter(JRXmlWriteHelper aWriter) {
|
|
this.writer = aWriter;
|
|
}
|
|
|
|
protected void writeStyle(JRStyle style) throws IOException {
|
|
this.writer.startElement("style");
|
|
this.writer.addEncodedAttribute("name", style.getName());
|
|
this.writer.addAttribute("isDefault", style.isDefault());
|
|
writeStyleReferenceAttr((JRStyleContainer)style);
|
|
this.writer.addAttribute("mode", style.getOwnMode(), JRXmlConstants.getModeMap());
|
|
this.writer.addAttribute("forecolor", style.getOwnForecolor());
|
|
this.writer.addAttribute("backcolor", style.getOwnBackcolor());
|
|
this.writer.addAttribute("fill", style.getOwnFill(), JRXmlConstants.getFillMap());
|
|
this.writer.addAttribute("radius", style.getOwnRadius());
|
|
this.writer.addAttribute("scaleImage", style.getOwnScaleImage(), JRXmlConstants.getScaleImageMap());
|
|
this.writer.addAttribute("hAlign", style.getOwnHorizontalAlignment(), JRXmlConstants.getHorizontalAlignMap());
|
|
this.writer.addAttribute("vAlign", style.getOwnVerticalAlignment(), JRXmlConstants.getVerticalAlignMap());
|
|
this.writer.addAttribute("rotation", style.getOwnRotation(), JRXmlConstants.getRotationMap());
|
|
this.writer.addAttribute("lineSpacing", style.getOwnLineSpacing(), JRXmlConstants.getLineSpacingMap());
|
|
this.writer.addAttribute("markup", style.getOwnMarkup());
|
|
this.writer.addEncodedAttribute("pattern", style.getOwnPattern());
|
|
this.writer.addAttribute("isBlankWhenNull", style.isOwnBlankWhenNull());
|
|
this.writer.addEncodedAttribute("fontName", style.getOwnFontName());
|
|
this.writer.addAttribute("fontSize", style.getOwnFontSize());
|
|
this.writer.addAttribute("isBold", style.isOwnBold());
|
|
this.writer.addAttribute("isItalic", style.isOwnItalic());
|
|
this.writer.addAttribute("isUnderline", style.isOwnUnderline());
|
|
this.writer.addAttribute("isStrikeThrough", style.isOwnStrikeThrough());
|
|
this.writer.addEncodedAttribute("pdfFontName", style.getOwnPdfFontName());
|
|
this.writer.addEncodedAttribute("pdfEncoding", style.getOwnPdfEncoding());
|
|
this.writer.addAttribute("isPdfEmbedded", style.isOwnPdfEmbedded());
|
|
writePen(style.getLinePen());
|
|
writeBox(style.getLineBox());
|
|
if (toWriteConditionalStyles()) {
|
|
JRConditionalStyle[] conditionalStyles = style.getConditionalStyles();
|
|
if (!(style instanceof JRConditionalStyle) && conditionalStyles != null)
|
|
for (int i = 0; i < conditionalStyles.length; i++)
|
|
writeConditionalStyle(conditionalStyles[i]);
|
|
}
|
|
this.writer.closeElement();
|
|
}
|
|
|
|
protected void writeStyleReferenceAttr(JRStyleContainer styleContainer) {
|
|
if (styleContainer.getStyle() != null) {
|
|
this.writer.addEncodedAttribute("style", styleContainer.getStyle().getName());
|
|
} else if (styleContainer.getStyleNameReference() != null) {
|
|
this.writer.addEncodedAttribute("style", styleContainer.getStyleNameReference());
|
|
}
|
|
}
|
|
|
|
protected abstract boolean toWriteConditionalStyles();
|
|
|
|
protected void writeConditionalStyle(JRConditionalStyle style) throws IOException {
|
|
this.writer.startElement("conditionalStyle");
|
|
this.writer.writeExpression("conditionExpression", style.getConditionExpression(), false);
|
|
writeStyle((JRStyle)style);
|
|
this.writer.closeElement();
|
|
}
|
|
|
|
protected void writePen(JRPen pen) throws IOException {
|
|
writePen("pen", pen);
|
|
}
|
|
|
|
private void writePen(String element, JRPen pen) throws IOException {
|
|
this.writer.startElement(element);
|
|
this.writer.addAttribute("lineWidth", pen.getOwnLineWidth());
|
|
this.writer.addAttribute("lineStyle", pen.getOwnLineStyle(), JRXmlConstants.getLineStyleMap());
|
|
this.writer.addAttribute("lineColor", pen.getOwnLineColor());
|
|
this.writer.closeElement(true);
|
|
}
|
|
|
|
protected void writeBox(JRLineBox box) throws IOException {
|
|
if (box != null) {
|
|
this.writer.startElement("box");
|
|
this.writer.addAttribute("padding", box.getOwnPadding());
|
|
this.writer.addAttribute("topPadding", box.getOwnTopPadding());
|
|
this.writer.addAttribute("leftPadding", box.getOwnLeftPadding());
|
|
this.writer.addAttribute("bottomPadding", box.getOwnBottomPadding());
|
|
this.writer.addAttribute("rightPadding", box.getOwnRightPadding());
|
|
writePen("pen", (JRPen)box.getPen());
|
|
writePen("topPen", (JRPen)box.getTopPen());
|
|
writePen("leftPen", (JRPen)box.getLeftPen());
|
|
writePen("bottomPen", (JRPen)box.getBottomPen());
|
|
writePen("rightPen", (JRPen)box.getRightPen());
|
|
this.writer.closeElement(true);
|
|
}
|
|
}
|
|
}
|