Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/xml/JRXmlBaseWriter.java
2025-07-28 13:56:49 +05:30

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);
}
}
}