1 /*
2  * JasperReports - Free Java Reporting Library.
3  * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4  * http://www.jaspersoft.com
5  *
6  * Unless you have purchased a commercial license agreement from Jaspersoft,
7  * the following license terms apply:
8  *
9  * This program is part of JasperReports.
10  *
11  * JasperReports is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * JasperReports is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23  */

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 /**
35  * @author Teodor Danciu (teodord@users.sourceforge.net)
36  */

37 public final class JRTextAttribute extends AttributedCharacterIterator.Attribute
38 {
39     /**
40      *
41      */

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     /**
47      *
48      */

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     /**
55      *
56      */

57     public static final JRTextAttribute HYPERLINK = new JRTextAttribute("HYPERLINK");
58
59     /**
60      *
61      */

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     /**
67      *
68      */

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     /**
80      * Resolves instances being deserialized to the predefined constants.
81     */

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