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.

RevLine 
[1174]1package br.gov.serpro.setup;
[3394]2
[1174]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
[3394]13    /**
14     *
15     */
16    private static final long serialVersionUID = -8164125429139606589L;
17    private Properties parameters;
18    private Properties preferences;
[1174]19    private Map<String, ResourceBundle> langResources;
20    Locale currentLocale;
[3394]21    private Applet currentApplet;
[1174]22    private static final String PREFERENCES_PATH;
23    private static final String EPASS_2000;
24
25    static {
26
[3394]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        }
[1174]32
33
[3394]34        PREFERENCES_PATH = "TESTE";
[1174]35
[3394]36    }
[1174]37
[3394]38    public Setup(Applet applet) {
[1174]39
[3394]40        this.currentApplet = applet;
41        parameters = new Properties();
42        //preferences = Do arquivo apontado por preferences_path
[1174]43
[3394]44        // Pega os parâmetros da applet
45        for (String[] parameter : getParameterInfo()) {
46            String parameterName = parameter[0];
[5152]47            String parameterValue = null;
[1174]48
[5152]49            if (this.currentApplet != null){
50                parameterValue = this.currentApplet.getParameter(parameterName);
51            }
[1174]52
[3394]53            System.out.println("parameter: "+parameterName+" value: "+parameterValue);
[3232]54
[3394]55            if (parameterValue != null && !parameterValue.equals("")) {
56                parameters.setProperty(parameterName.toLowerCase(), parameterValue);
57                if (parameterName.equalsIgnoreCase("locale")) {
[1174]58                    System.out.println("Locale recebido.");
59                }
[3394]60            } else {
[1174]61                //Defaults
[3394]62                if (parameterName.equalsIgnoreCase("debug")) {
[1174]63                    parameters.setProperty(parameterName.toLowerCase(), "false");
64                }
[3394]65                if (parameterName.equalsIgnoreCase("token")) {
66                    parameters.setProperty(parameterName.toLowerCase(), "Epass2000;" + EPASS_2000);
[1174]67                }
[3394]68                if (parameterName.equalsIgnoreCase("locale")) {
[1174]69                    System.out.println("Locale não recebido, definindo valor default.");
70                    parameters.setProperty(parameterName.toLowerCase(), "pt_BR");
71                }
72            }
[3394]73        }
[1174]74
[3394]75        //TODO: Pegar as preferências do arquivo de preferências se encontrado;
[1174]76
77        // Lang Resources
78        currentLocale = this.buildLocale(parameters.getProperty("locale"));
79        langResources = new HashMap<String, ResourceBundle>(2);
[5152]80        langResources.put("ExpressoCertMessages", ResourceBundle.getBundle("br.gov.serpro.i18n.ExpressoCertMessages", currentLocale));
[1174]81
[3394]82    }
[1174]83
[5152]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
[3394]97    public String[][] getParameterInfo() {
[1174]98
[3394]99        String[][] info = {
100            {"debug", "boolean", "Habilita mensagens de debug"},
[1174]101            {"token", "string", "Lista de tokens suportados. Formato: nome1;caminho1,nome2;caminho2"},
102            {"locale", "string", "Locale do sistema"}
[3394]103        };
[1174]104
[3394]105        return info;
106    }
[1174]107
[3394]108    public String[][] getPreferencesInfo() {
[1174]109
[3394]110        String[][] info = {
111            {"preferedToken", "string", "Token preferencial do usuário. Formato: nome;caminho"}
112        };
[1174]113
[3394]114        return info;
[1174]115
[3394]116    }
[1174]117
[3394]118    public String getParameter(String key) {
119        return parameters.getProperty(key);
120    }
[1174]121
[3394]122    public String getPreference(String key) {
123        return getPreference(key);
124    }
[1174]125
[3394]126    //TODO: implementar PreferenceNotRegisteredException
127    public void setPreference(String key, String value) {
[1174]128
[3394]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        }
[1174]138
[3394]139        if (!exists) {
[1174]140//                       throws PreferenceNotRegisteredException();
141            System.out.println("Preferência não existe!");
[3394]142        }
143    }
[1174]144
[3394]145    Locale buildLocale(String localeCode) {
[1174]146
[5386]147        String splitter = localeCode.indexOf('_') != -1 ? "_" : "-" ;
148        String[] localeItems = localeCode.split(splitter);
[1174]149        Locale locale;
[3394]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());
[1174]164        }
165
166        return locale;
167    }
168
[3394]169    public void addLanguageResource(String langResource) {
170        System.out.println("registrando recurso de linguagem " + langResource);
[5386]171        langResources.put(langResource, ResourceBundle.getBundle("br.gov.serpro.i18n."+langResource, currentLocale));
[1174]172    }
173
[3394]174    public String getLang(String langResource, String message) {
[1174]175
176        ResourceBundle resource = langResources.get(langResource);
177
178        String i18nText = new String("????");
179        try {
180            i18nText = resource.getString(message);
[3394]181        } catch (MissingResourceException e) {
[1174]182            e.printStackTrace();
183        }
184
185        return i18nText;
186
187        //return message;
188    }
189
[3394]190    // TODO: Not Implemented Yet
191    public boolean savePreferences() {
192        return false;
193    }
[1174]194}
Note: See TracBrowser for help on using the repository browser.