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

Revision 5386, 6.0 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2451 - Erro no login com certificado, verificação cas.

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 splitter = localeCode.indexOf('_') != -1 ? "_" : "-" ;
148        String[] localeItems = localeCode.split(splitter);
149        Locale locale;
150
151        switch (localeItems.length) {
152            case 1:
153                locale = new Locale(localeItems[0]);
154                break;
155            case 2:
156                locale = new Locale(localeItems[0], localeItems[1]);
157                break;
158            case 3:
159                locale = new Locale(localeItems[0], localeItems[1], localeItems[2]);
160                break;
161            default:
162                locale = new Locale("pt", "BR");
163                System.out.println("Locale code error, setting default locale: " + locale.toString());
164        }
165
166        return locale;
167    }
168
169    public void addLanguageResource(String langResource) {
170        System.out.println("registrando recurso de linguagem " + langResource);
171        langResources.put(langResource, ResourceBundle.getBundle("br.gov.serpro.i18n."+langResource, currentLocale));
172    }
173
174    public String getLang(String langResource, String message) {
175
176        ResourceBundle resource = langResources.get(langResource);
177
178        String i18nText = new String("????");
179        try {
180            i18nText = resource.getString(message);
181        } catch (MissingResourceException e) {
182            e.printStackTrace();
183        }
184
185        return i18nText;
186
187        //return message;
188    }
189
190    // TODO: Not Implemented Yet
191    public boolean savePreferences() {
192        return false;
193    }
194}
Note: See TracBrowser for help on using the repository browser.