1
24 package net.sf.jasperreports.engine.util;
25
26 import java.io.InvalidObjectException;
27 import java.text.AttributedCharacterIterator;
28 import java.util.HashMap;
29 import java.util.Map;
30
31 import net.sf.jasperreports.engine.JRConstants;
32
33
34
37 public final class JRTextAttribute extends AttributedCharacterIterator.Attribute
38 {
39
42 private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
43
44 private static final Map<String,JRTextAttribute> instanceMap = new HashMap<String,JRTextAttribute>(4);
45
46
49 public static final JRTextAttribute PDF_FONT_NAME = new JRTextAttribute("PDF_FONT_NAME");
50 public static final JRTextAttribute PDF_ENCODING = new JRTextAttribute("PDF_ENCODING");
51 public static final JRTextAttribute IS_PDF_EMBEDDED = new JRTextAttribute("IS_PDF_EMBEDDED");
52 public static final JRTextAttribute FONT_SIZE = new JRTextAttribute("FONT_SIZE");
53
54
57 public static final JRTextAttribute HYPERLINK = new JRTextAttribute("HYPERLINK");
58
59
62 public static final JRTextAttribute SEARCH_HIGHLIGHT = new JRTextAttribute("SEARCH_HIGHLIGHT");
63
64 public static final JRTextAttribute FONT_INFO = new JRTextAttribute("FONT_INFO");
65
66
69 private JRTextAttribute(String name)
70 {
71 super(name);
72
73 if (this.getClass() == JRTextAttribute.class)
74 {
75 instanceMap.put(name, this);
76 }
77 }
78
79
82 @Override
83 protected Object readResolve() throws InvalidObjectException
84 {
85 if (this.getClass() != JRTextAttribute.class)
86 {
87 throw new InvalidObjectException("Subclass didn't correctly implement readResolve");
88 }
89
90 JRTextAttribute instance = instanceMap.get(getName());
91 if (instance != null)
92 {
93 return instance;
94 }
95
96 throw new InvalidObjectException("Unknown attribute name");
97 }
98
99 }
100