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.awt.GraphicsEnvironment;
27 import java.util.Arrays;
28 import java.util.HashSet;
29 import java.util.Set;
30
31 import net.sf.jasperreports.engine.JRRuntimeException;
32
33
34 /**
35  * @author Teodor Danciu (teodord@users.sourceforge.net)
36  */

37 public final class JRGraphEnvInitializer
38 {
39     public static final String EXCEPTION_MESSAGE_KEY_INITIALIZATION_ERROR = "util.graphic.environment.initialization.error";
40
41     /**
42      *
43      */

44     private static Set<String> AVAILABLE_FONT_FACE_NAMES; //NOPMD
45
46     /**
47      *
48      */

49     public static synchronized void initializeGraphEnv()
50     {
51         if (AVAILABLE_FONT_FACE_NAMES == null)
52         {
53             AVAILABLE_FONT_FACE_NAMES = new HashSet<String>();
54
55             try
56             {
57                 AVAILABLE_FONT_FACE_NAMES.addAll(
58                     Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames())
59                     );
60             }
61             catch(Exception e)
62             {
63                 throw 
64                     new JRRuntimeException(
65                         EXCEPTION_MESSAGE_KEY_INITIALIZATION_ERROR,
66                         (Object[])null,
67                         e);
68             }
69         }
70     }
71
72     /**
73      *
74      */

75     public static boolean isAwtFontAvailable(String font)
76     {
77         initializeGraphEnv();
78         
79         return AVAILABLE_FONT_FACE_NAMES.contains(font);//FIXMEFONT not sure if we should check families or fonts
80     }
81
82     
83     private JRGraphEnvInitializer()
84     {
85     }
86 }
87