source: branches/2.2/security/ExpressoCert/src/br/gov/serpro/setup/Setup.java @ 3232

Revision 3232, 5.5 KB checked in by rafaelraymundo, 14 years ago (diff)

Ticket #1237 - Atualizados componentes de suporte ao uso do Certificado Digital.

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