source: branches/2.3/security/ExpressoCert/src/br/gov/serpro/setup/Setup.java @ 5152

Revision 5152, 5.9 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2165 - Erro ao enviar mensagens assinadas digitalmente.

Line 
1package br.gov.serpro.setup;
2
3import java.applet.Applet;
4import java.util.HashMap;
5import java.util.Locale;
6import java.util.Map;
7import java.util.MissingResourceException;
8import java.util.Properties;
9import java.util.ResourceBundle;
10
11public class Setup {
12
13    /**
14     *
15     */
16    private static final long serialVersionUID = -8164125429139606589L;
17    private Properties parameters;
18    private Properties preferences;
19    private Map<String, ResourceBundle> langResources;
20    Locale currentLocale;
21    private Applet currentApplet;
22    private static final String PREFERENCES_PATH;
23    private static final String EPASS_2000;
24
25    static {
26
27        if (System.getProperty("os.name").equalsIgnoreCase("linux")) {
28            EPASS_2000 = "/usr/lib/libepsng_p11.so";
29        } else {
30            EPASS_2000 = System.getenv("SystemRoot").replaceAll("\\\\", "/") + "/system32/ngp11v211.dll";
31        }
32
33
34        PREFERENCES_PATH = "TESTE";
35
36    }
37
38    public Setup(Applet applet) {
39
40        this.currentApplet = applet;
41        parameters = new Properties();
42        //preferences = Do arquivo apontado por preferences_path
43
44        // Pega os parâmetros da applet
45        for (String[] parameter : getParameterInfo()) {
46            String parameterName = parameter[0];
47            String parameterValue = null;
48
49            if (this.currentApplet != null){
50                parameterValue = this.currentApplet.getParameter(parameterName);
51            }
52
53            System.out.println("parameter: "+parameterName+" value: "+parameterValue);
54
55            if (parameterValue != null && !parameterValue.equals("")) {
56                parameters.setProperty(parameterName.toLowerCase(), parameterValue);
57                if (parameterName.equalsIgnoreCase("locale")) {
58                    System.out.println("Locale recebido.");
59                }
60            } else {
61                //Defaults
62                if (parameterName.equalsIgnoreCase("debug")) {
63                    parameters.setProperty(parameterName.toLowerCase(), "false");
64                }
65                if (parameterName.equalsIgnoreCase("token")) {
66                    parameters.setProperty(parameterName.toLowerCase(), "Epass2000;" + EPASS_2000);
67                }
68                if (parameterName.equalsIgnoreCase("locale")) {
69                    System.out.println("Locale não recebido, definindo valor default.");
70                    parameters.setProperty(parameterName.toLowerCase(), "pt_BR");
71                }
72            }
73        }
74
75        //TODO: Pegar as preferências do arquivo de preferências se encontrado;
76
77        // Lang Resources
78        currentLocale = this.buildLocale(parameters.getProperty("locale"));
79        langResources = new HashMap<String, ResourceBundle>(2);
80        langResources.put("ExpressoCertMessages", ResourceBundle.getBundle("br.gov.serpro.i18n.ExpressoCertMessages", currentLocale));
81
82    }
83
84    public boolean setParameter(String parameter, String value){
85
86        if (parameter != null && value != null){
87
88            if (parameter.equals("debug") || parameter.equals("token") || parameter.equals("locale")){
89                this.parameters.setProperty(parameter, value);
90                return true;
91            }
92        }
93
94        return false;
95    }
96
97    public String[][] getParameterInfo() {
98
99        String[][] info = {
100            {"debug", "boolean", "Habilita mensagens de debug"},
101            {"token", "string", "Lista de tokens suportados. Formato: nome1;caminho1,nome2;caminho2"},
102            {"locale", "string", "Locale do sistema"}
103        };
104
105        return info;
106    }
107
108    public String[][] getPreferencesInfo() {
109
110        String[][] info = {
111            {"preferedToken", "string", "Token preferencial do usuário. Formato: nome;caminho"}
112        };
113
114        return info;
115
116    }
117
118    public String getParameter(String key) {
119        return parameters.getProperty(key);
120    }
121
122    public String getPreference(String key) {
123        return getPreference(key);
124    }
125
126    //TODO: implementar PreferenceNotRegisteredException
127    public void setPreference(String key, String value) {
128
129        boolean exists = false;
130        while (!exists) {
131            for (String[] preference : getPreferencesInfo()) {
132                if (key.equalsIgnoreCase(preference[1])) {
133                    exists = true;
134                    preferences.setProperty(key, value);
135                }
136            }
137        }
138
139        if (!exists) {
140//                       throws PreferenceNotRegisteredException();
141            System.out.println("Preferência não existe!");
142        }
143    }
144
145    Locale buildLocale(String localeCode) {
146
147        String[] localeItems = localeCode.split("_");
148        Locale locale;
149
150        switch (localeItems.length) {
151            case 1:
152                locale = new Locale(localeItems[0]);
153                break;
154            case 2:
155                locale = new Locale(localeItems[0], localeItems[1]);
156                break;
157            case 3:
158                locale = new Locale(localeItems[0], localeItems[1], localeItems[2]);
159                break;
160            default:
161                locale = new Locale("pt", "BR");
162                System.out.println("Locale code error, setting default locale: " + locale.toString());
163        }
164
165        return locale;
166    }
167
168    public void addLanguageResource(String langResource) {
169        System.out.println("registrando recurso de linguagem " + langResource);
170        langResources.put(langResource, ResourceBundle.getBundle(langResource, currentLocale));
171    }
172
173    public String getLang(String langResource, String message) {
174
175        ResourceBundle resource = langResources.get(langResource);
176
177        String i18nText = new String("????");
178        try {
179            i18nText = resource.getString(message);
180        } catch (MissingResourceException e) {
181            e.printStackTrace();
182        }
183
184        return i18nText;
185
186        //return message;
187    }
188
189    // TODO: Not Implemented Yet
190    public boolean savePreferences() {
191        return false;
192    }
193}
Note: See TracBrowser for help on using the repository browser.