Revision 47841 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.api/src/main/java/org/gvsig/downloader/spi/AbstractDownloaderAuthenticationConfig.java

View differences:

AbstractDownloaderAuthenticationConfig.java
14 14
import org.gvsig.downloader.DownloaderManager;
15 15
import org.gvsig.json.Json;
16 16
import org.gvsig.json.JsonObjectBuilder;
17
import org.gvsig.tools.ToolsLocator;
18
import org.gvsig.tools.dynobject.DynStruct;
19
import org.gvsig.tools.persistence.PersistenceManager;
20
import org.gvsig.tools.persistence.PersistentState;
21
import org.gvsig.tools.persistence.exception.PersistenceException;
17 22

  
18 23
/**
19 24
 *
......
23 28
        implements DownloaderAuthenticationConfig
24 29
    {
25 30

  
26
    protected String providerName;
27
    protected DownloaderAuthenticationFactory factory;
31
    protected final String providerName;
32
    private DownloaderAuthenticationFactory factory;
28 33
    protected String serviceUrl;
29 34

  
30
    protected AbstractDownloaderAuthenticationConfig(DownloaderAuthenticationFactory factory, String serviceUrl) {
35
    protected AbstractDownloaderAuthenticationConfig(String providerName, DownloaderAuthenticationFactory factory, String serviceUrl) {
36
        this(providerName);
31 37
        this.factory = factory;
32 38
        this.serviceUrl = this.getUrlWithoutQuery(serviceUrl);
33
        this.providerName = factory.getProviderName();
34 39
    }
35 40

  
41
    protected AbstractDownloaderAuthenticationConfig(String providerName) {
42
        this.providerName = providerName;
43
        if(StringUtils.isBlank(this.providerName)){
44
            throw new IllegalArgumentException("providerName can't be blank");
45
        }
46
        this.factory = null;
47
        this.serviceUrl = null;
48
    }
49

  
36 50
//    public AbstractDownloaderAuthenticationConfig(String providerName, String baseUrl) {
37 51
//        this(
38 52
//                DownloaderLocator.getDownloaderManager().getAuthenticationType(providerName),
......
47 61

  
48 62
    @Override
49 63
    public DownloaderAuthenticationFactory getFactory() {
64
        if( this.factory == null ) {
65
            DownloaderManager manager = DownloaderLocator.getDownloaderManager();
66
            this.factory = manager.getDownloaderAuthenticationFactory(this.providerName);
67
        } 
68
        
50 69
        return this.factory;
51 70
    }
52 71

  
......
77 96

  
78 97
    @Override
79 98
    public void fromJson(JsonObject json) {
80
        DownloaderManager manager = DownloaderLocator.getDownloaderManager();
81
        
82
//        if( json.containsKey("type") ) {
83
//            String url = json.getString(CONFIG_URLONLINE_NAME,null);
84
//            if( url!=null ) {
85
//                this.urlOnline = url;
86
//            }
87
//        } else {
88
            this.serviceUrl = json.getString(CONFIG_SERVICEURL_NAME,null);
89
//        }
99
        this.serviceUrl = json.getString(CONFIG_SERVICEURL_NAME,null);
90 100
        String providerName = json.getString(CONFIG_PROVIDERNAME_NAME, null);
91 101
        if( providerName != null ) {
92 102
            if( !StringUtils.equalsIgnoreCase(this.providerName, providerName) ) {
93 103
                throw new IllegalArgumentException("this json can't be restored in a config of '"+this.providerName+"' (need a '"+providerName+"')");
94 104
            }
95 105
        }
96
        if( this.factory == null ) {
97
            this.factory = manager.getDownloaderAuthenticationFactory(this.providerName);
98
        } 
99 106
    }
100 107

  
101 108
    @Override
102 109
    public JsonObjectBuilder toJsonBuilder() {
103 110
        JsonObjectBuilder builder = Json.createObjectBuilder();
104 111
        builder.add(CONFIG_PROVIDERNAME_NAME, this.getFactory().getProviderName());
105
//        builder.add("urlOnline",this.getUrlOnline());
112
        builder.add("serviceUrl",this.serviceUrl);
106 113
        
107 114
        return builder;        
108 115
    }
......
124 131
        }
125 132
    }
126 133
    
134
    public static void selfRegister() {
135
        PersistenceManager manager = ToolsLocator.getPersistenceManager();
136
        if (manager.getDefinition(PERSISTENT_DEFINITION_NAME) == null) {
137
            DynStruct definition = manager.addDefinition(DownloaderAuthenticationConfig.class,
138
                    PERSISTENT_DEFINITION_NAME, 
139
                    "DownloaderAuthenticationConfig persistence definition", null, null
140
            );            
141
            definition.addDynFieldString(CONFIG_PROVIDERNAME_NAME);
142
            definition.addDynFieldString(CONFIG_SERVICEURL_NAME);
143
        }
144
    }
145

  
146
    @Override
147
    public void saveToState(PersistentState state) throws PersistenceException {
148
        state.set(CONFIG_PROVIDERNAME_NAME,this.providerName);
149
        state.set(CONFIG_SERVICEURL_NAME,this.serviceUrl);
150
    }
151

  
152
    @Override
153
    public void loadFromState(PersistentState state) throws PersistenceException {
154
        String providerName = state.getString(CONFIG_PROVIDERNAME_NAME);
155
        if( providerName != null ) {
156
            if( !StringUtils.equalsIgnoreCase(this.providerName, providerName) ) {
157
                throw new IllegalArgumentException("this state can't be restored in a config of '"+this.providerName+"' (need a '"+providerName+"')");
158
            }
159
        }
160
        
161
        this.serviceUrl = state.getString(CONFIG_SERVICEURL_NAME);
162
    }
127 163
    
164
    
165
    
128 166
}

Also available in: Unified diff