Statistics
| Revision:

gvsig-projects-pool / org.gvsig.online / trunk / org.gvsig.online / org.gvsig.online.swing / org.gvsig.online.swing.scribejava / src / main / java / org / gvsig / online / swing / scribejava / keycloak / UserIdentificationKeycloakConfig.java @ 9516

History | View | Annotate | Download (6.46 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.online.swing.scribejava.keycloak;
7

    
8
import java.awt.event.ActionEvent;
9
import javax.json.JsonObject;
10
import org.apache.commons.lang3.StringUtils;
11
import org.gvsig.json.JsonObjectBuilder;
12
import org.gvsig.online.lib.api.OnlineLocator;
13
import org.gvsig.online.lib.api.OnlineUserIdentificationRequester;
14
import org.gvsig.online.lib.api.OnlineUserIdentificationRequester.OnlineUserIdentificationRequesterConfig;
15
import org.gvsig.online.lib.spi.AbstractOnlineUserIdentificationRequesterConfig;
16
import org.gvsig.tools.ToolsLocator;
17
import org.gvsig.tools.dynobject.DynStruct;
18
import org.gvsig.tools.persistence.PersistenceManager;
19
import org.gvsig.tools.persistence.Persistent;
20
import org.gvsig.tools.persistence.PersistentState;
21
import org.gvsig.tools.persistence.exception.PersistenceException;
22
import org.gvsig.tools.swing.api.ToolsSwingLocator;
23
import org.gvsig.tools.swing.api.windowmanager.Dialog;
24
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
25
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
26
import org.gvsig.tools.util.LabeledValue;
27

    
28
/**
29
 *
30
 * @author jjdelcerro
31
 */
32
public class UserIdentificationKeycloakConfig 
33
        extends AbstractOnlineUserIdentificationRequesterConfig
34
        implements OnlineUserIdentificationRequesterConfig, Persistent, LabeledValue<OnlineUserIdentificationRequesterConfig>
35
    {
36
    
37
    private static final String PERSISTENT_DEFINITION_NAME = "UserIdentificationKeycloakConfig";
38
    
39
    private String realm;
40
    private String baseurl;
41
    private int localPort;
42

    
43
    public UserIdentificationKeycloakConfig() {
44
        super((UserIdentificationKeycloakFactory)null, null);
45
    }
46
    
47
    public UserIdentificationKeycloakConfig(UserIdentificationKeycloakFactory factory, String urlOnline) {
48
        super(factory,urlOnline);
49
        this.localPort = 8888;
50
        this.realm = null;
51
        this.baseurl = null;
52
    }
53
    
54
    public UserIdentificationKeycloakFactory getFactory() {
55
        return (UserIdentificationKeycloakFactory) super.getFactory();
56
    }
57

    
58
    public int getLocalPort() {
59
        return localPort;
60
    }
61

    
62
    public String getBaseurl() {
63
        return baseurl;
64
    }
65

    
66
    public String getRealm() {
67
        return realm;
68
    }
69

    
70
    public void setBaseurl(String baseurl) {
71
        this.baseurl = baseurl;
72
    }
73

    
74
    public void setLocalPort(int localPort) {
75
        this.localPort = localPort;
76
    }
77

    
78
    public void setRealm(String realm) {
79
        this.realm = realm;
80
    }
81

    
82
    @Override
83
    public OnlineUserIdentificationRequester createUserIdentificationRequester() {
84
        if( StringUtils.isBlank(realm) ) {
85
            return null;
86
        }
87
        if( StringUtils.isBlank(baseurl) ) {
88
            return null;
89
        }
90
        if( localPort<1024  ) {
91
            return null;
92
        }
93
        return new UserIdentificationKeycloak(this);
94
    }
95

    
96
    @Override
97
    public boolean hasIdentificationConfig() {
98
        return true;
99
    }
100

    
101
    @Override
102
    public boolean requestIdentificationConfig() {
103
        WindowManager_v2 winmgr = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
104
        UserIdentificationKeycloakConfigPanel panel = new UserIdentificationKeycloakConfigPanel();
105
        panel.put(this);
106
        Dialog dialog = winmgr.createDialog(
107
                panel,
108
                "Configuracion de Keycloak",
109
                null, 
110
                WindowManager_v2.BUTTONS_OK_CANCEL
111
        );
112
        dialog.addActionListener((ActionEvent e) -> {
113
            if( dialog.getAction()==WindowManager_v2.BUTTON_OK ) {
114
                panel.fetch(this);
115
            }
116
        });
117
        dialog.show(WindowManager.MODE.DIALOG);
118
        return dialog.getAction()==WindowManager_v2.BUTTON_OK;
119
    }
120

    
121
    @Override
122
    public void fromJson(JsonObject json) {
123
        super.fromJson(json);
124
        this.realm = json.getString("realm", null);
125
        this.baseurl = json.getString("baseurl", null);
126
        this.localPort = json.getInt("localPort", 0);                
127
    }
128

    
129
    @Override
130
    public JsonObjectBuilder toJsonBuilder() {
131
        JsonObjectBuilder builder = super.toJsonBuilder();
132
        builder.add("realm", this.realm);
133
        builder.add("baseurl", this.baseurl);
134
        builder.add("localPort", this.localPort);
135
        return null;
136
    }
137

    
138
    @Override
139
    public void saveToState(PersistentState state) throws PersistenceException {
140
        state.set("factory",this.factory.getName());
141
        state.set("urlOnline",this.urlOnline);
142
        state.set("baseurl",this.baseurl);
143
        state.set("realm",this.realm);
144
        state.set("localPort",this.localPort);
145
    }
146

    
147
    @Override
148
    public void loadFromState(PersistentState state) throws PersistenceException {
149
        String factoryName = state.getString("factory");
150
        this.factory = OnlineLocator.getOnlineManager().getUserIdentificationRequester(factoryName);
151
        this.urlOnline = state.getString("urlOnline");
152
        this.baseurl = state.getString("baseurl");
153
        this.realm = state.getString("realm");
154
        this.localPort = state.getInt("localPort");
155
    }
156
    
157
    public static void selfRegister() {
158
        PersistenceManager manager = ToolsLocator.getPersistenceManager();
159
        if (manager.getDefinition(PERSISTENT_DEFINITION_NAME) == null) {
160
            DynStruct definition = manager.addDefinition(
161
                    UserIdentificationKeycloakConfig.class,
162
                    PERSISTENT_DEFINITION_NAME, 
163
                    "UserIdentificationKeycloakConfig persistence definition", null, null
164
            );            
165
            definition.addDynFieldString("factory");
166
            definition.addDynFieldString("urlOnline");
167
            definition.addDynFieldString("baseurl");
168
            definition.addDynFieldString("realm");
169
            definition.addDynFieldInt("localPort");
170
        }
171
    }
172

    
173
    @Override
174
    public String getLabel() {
175
        return String.format("%s - %s", this.baseurl, this.realm);
176
    }
177

    
178
    @Override
179
    public OnlineUserIdentificationRequesterConfig getValue() {
180
        return this;
181
    }
182

    
183
    @Override
184
    public String toString() {
185
        return String.format(
186
           "Factory: %s\ngvSIG online URL: %s\nKeycloak URL:%s\nRealm: %s\nLocal port:%d", 
187
           this.getFactory().getName(),
188
           this.getUrlOnline(),
189
           this.getBaseurl(),
190
           this.getRealm(),
191
           this.getLocalPort()
192
        );
193
    }
194
        
195
    
196
}