1 28 package net.sf.jasperreports.engine.xml; 29 30 import java.util.Map ; 31 32 import net.sf.jasperreports.engine.JRFont; 33 import net.sf.jasperreports.engine.JRReportFont; 34 import net.sf.jasperreports.engine.design.JRDesignFont; 35 import net.sf.jasperreports.engine.design.JasperDesign; 36 37 import org.xml.sax.Attributes ; 38 39 40 44 public abstract class JRFontFactory extends JRBaseFactory 45 { 46 47 48 51 private static final String ATTRIBUTE_reportFont = "reportFont"; 52 private static final String ATTRIBUTE_fontName = "fontName"; 53 private static final String ATTRIBUTE_isBold = "isBold"; 54 private static final String ATTRIBUTE_isItalic = "isItalic"; 55 private static final String ATTRIBUTE_isUnderline = "isUnderline"; 56 private static final String ATTRIBUTE_isStrikeThrough = "isStrikeThrough"; 57 private static final String ATTRIBUTE_size = "size"; 58 private static final String ATTRIBUTE_pdfFontName = "pdfFontName"; 59 private static final String ATTRIBUTE_pdfEncoding = "pdfEncoding"; 60 private static final String ATTRIBUTE_isPdfEmbedded = "isPdfEmbedded"; 61 62 63 66 public abstract JRFont getFont(); 67 68 69 72 public Object createObject(Attributes atts) 73 { 74 JRFont font = getFont(); 75 JRXmlLoader xmlLoader = (JRXmlLoader)digester.peek(digester.getCount() - 1); 76 JasperDesign jasperDesign = (JasperDesign)digester.peek(digester.getCount() - 2); 77 78 if (atts.getValue(ATTRIBUTE_reportFont) != null) 79 { 80 Map fontsMap = jasperDesign.getFontsMap(); 81 82 if ( !fontsMap.containsKey(atts.getValue(ATTRIBUTE_reportFont)) ) 83 { 84 xmlLoader.addError(new Exception ("Unknown report font : " + atts.getValue(ATTRIBUTE_reportFont))); 85 } 86 87 font.setReportFont((JRReportFont)fontsMap.get(atts.getValue(ATTRIBUTE_reportFont))); 88 } 89 90 if (atts.getValue(ATTRIBUTE_fontName) != null) 91 font.setFontName(atts.getValue(ATTRIBUTE_fontName)); 92 93 if (atts.getValue(ATTRIBUTE_isBold) != null) 94 font.setBold(Boolean.valueOf(atts.getValue(ATTRIBUTE_isBold))); 95 96 if (atts.getValue(ATTRIBUTE_isItalic) != null) 97 font.setItalic(Boolean.valueOf(atts.getValue(ATTRIBUTE_isItalic))); 98 99 if (atts.getValue(ATTRIBUTE_isUnderline) != null) 100 font.setUnderline(Boolean.valueOf(atts.getValue(ATTRIBUTE_isUnderline))); 101 102 if (atts.getValue(ATTRIBUTE_isStrikeThrough) != null) 103 font.setStrikeThrough(Boolean.valueOf(atts.getValue(ATTRIBUTE_isStrikeThrough))); 104 105 if (atts.getValue(ATTRIBUTE_size) != null) 106 font.setFontSize(Integer.parseInt(atts.getValue(ATTRIBUTE_size))); 107 108 if (atts.getValue(ATTRIBUTE_pdfFontName) != null) 109 font.setPdfFontName(atts.getValue(ATTRIBUTE_pdfFontName)); 110 111 if (atts.getValue(ATTRIBUTE_pdfEncoding) != null) 112 font.setPdfEncoding(atts.getValue(ATTRIBUTE_pdfEncoding)); 113 114 if (atts.getValue(ATTRIBUTE_isPdfEmbedded) != null) 115 font.setPdfEmbedded(Boolean.valueOf(atts.getValue(ATTRIBUTE_isPdfEmbedded))); 116 117 return font; 118 } 119 120 121 124 public static class TextElementFontFactory extends JRFontFactory 125 { 126 public JRFont getFont() 127 { 128 return (JRFont)digester.peek(); 129 } 130 } 131 132 133 136 public static class ChartFontFactory extends JRFontFactory 137 { 138 public JRFont getFont() 139 { 140 return new JRDesignFont(); 141 } 142 } 143 144 145 } 146 | Popular Tags |