Revision 37887 branches/v2_0_0_prep/libraries/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.impl/src/main/java/org/gvsig/exportto/swing/impl/DefaultExporttoSwingProviderManager.java

View differences:

DefaultExporttoSwingProviderManager.java
22 22
package org.gvsig.exportto.swing.impl;
23 23

  
24 24
import java.util.ArrayList;
25
import java.util.HashMap;
25 26
import java.util.Iterator;
26 27
import java.util.List;
28
import java.util.Map;
27 29

  
28 30
import org.cresques.cts.IProjection;
29 31
import org.slf4j.Logger;
30 32
import org.slf4j.LoggerFactory;
31 33

  
34
import org.gvsig.exportto.swing.impl.preferences.DefaultExporttoPreferencesComponent;
35
import org.gvsig.exportto.swing.preferences.ExporttoSwingPreferencesComponent;
32 36
import org.gvsig.exportto.swing.spi.ExporttoSwingProvider;
33 37
import org.gvsig.exportto.swing.spi.ExporttoSwingProviderFactory;
34 38
import org.gvsig.exportto.swing.spi.ExporttoSwingProviderManager;
35 39
import org.gvsig.fmap.dal.feature.FeatureStore;
36
import org.gvsig.i18n.Messages;
37 40
import org.gvsig.tools.ToolsLocator;
38 41
import org.gvsig.tools.dynobject.DynObject;
39 42
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
......
65 68
    private static final String PARAMETER_FEATURESTORE = "FeatureStore";
66 69
    private static final String PARAMETER_PROJECTION = "Projection";
67 70

  
71
    private Map<ExporttoSwingProviderFactory, Boolean> providerStatus;
72

  
68 73
    public DefaultExporttoSwingProviderManager() {
69 74
        super();
75
        providerStatus = new HashMap<ExporttoSwingProviderFactory, Boolean>();
70 76
    }
71 77

  
72 78
    public ProviderServices createProviderServices(Service service) {
......
125 131
        return providers;
126 132
    }
127 133

  
134
    public List<ExporttoSwingProviderFactory> getProviderFactories() {
135
        return getProviderFactories(null);
136
    }
137

  
138
    public List<ExporttoSwingProviderFactory> getProviderFactories(
139
        int[] providerTypes) {
140
        ExtensionPointManager extensionPointManager =
141
            ToolsLocator.getExtensionPointManager();
142
        ExtensionPoint extensionPoint =
143
            extensionPointManager.get(this.getRegistryKey());
144
        List<ExporttoSwingProviderFactory> providers =
145
            new ArrayList<ExporttoSwingProviderFactory>();
146
        if (extensionPoint != null) {
147
            @SuppressWarnings("unchecked")
148
            Iterator<Extension> it = extensionPoint.iterator();
149
            while (it.hasNext()) {
150
                Extension extension = it.next();
151
                try {
152
                    ExporttoSwingProviderFactory exporttoSwingProviderFactory =
153
                        (ExporttoSwingProviderFactory) extension.create();
154
                    if (providerTypes == null || providerTypes.length == 0) {
155
                        providers.add(exporttoSwingProviderFactory);
156
                    } else {
157
                        boolean areSupported = true;
158
                        for (int i = 0; i < providerTypes.length; i++) {
159
                            if (!exporttoSwingProviderFactory
160
                                .support(providerTypes[i])) {
161
                                areSupported = false;
162
                                break;
163
                            }
164
                        }
165
                        if (areSupported) {
166
                            providers.add(exporttoSwingProviderFactory);
167
                        }
168
                    }
169
                } catch (InstantiationException e) {
170
                    LOG.error(
171
                        "Not possible to create the exportto provider factory",
172
                        e);
173
                } catch (IllegalAccessException e) {
174
                    LOG.error(
175
                        "Not possible to create the exportto provider factory",
176
                        e);
177
                } catch (ServiceException e) {
178
                    LOG.error(
179
                        "Not possible to check if the provider support a format",
180
                        e);
181
                }
182
            }
183
        }
184
        return providers;
185
    }
186

  
128 187
    protected String getRegistryDescription() {
129 188
        return PROVIDERS_DESCRIPTION;
130 189
    }
......
188 247
    }
189 248

  
190 249
    public String getDescription(String providerName) {
191
        if (providerName == null) {
192
            return Messages.getText("exporer_to");
193
        }
194
        ExtensionPointManager extensionPointManager =
195
            ToolsLocator.getExtensionPointManager();
196
        ExtensionPoint extensionPoint =
197
            extensionPointManager.get(this.getRegistryKey());
198 250
        try {
199
            Object object = extensionPoint.create(providerName);
200
            if (object != null) {
201
                return Messages.getText(((ExporttoSwingProviderFactory) object)
202
                    .getDescription());
203
            }
204
        } catch (InstantiationException e) {
205
            LOG.error("Not possible to get the exportto provider factory", e);
206
        } catch (IllegalAccessException e) {
207
            LOG.error("Not possible to get the exportto provider factory", e);
251
            return getExporttoSwingProviderFactory(providerName)
252
                .getDescription();
253
        } catch (ServiceException e) {
254
            throw new RuntimeException(e);
208 255
        }
209
        return Messages.getText("exporer_to_format",
210
            new String[] { providerName });
211 256
    }
257

  
258
    public boolean isProviderEnabled(ExporttoSwingProviderFactory factory) {
259
        Boolean status = providerStatus.get(factory);
260
        return status == null ? true : status.booleanValue();
261
    }
262

  
263
    public void enableProvider(ExporttoSwingProviderFactory factory, boolean value) {
264
        providerStatus.put(factory, Boolean.valueOf(value));
265
    }
266

  
267
    public ExporttoSwingProviderFactory getExporttoSwingProviderFactory(
268
        String name) throws ServiceException {
269
        return (ExporttoSwingProviderFactory) getProviderFactory(name);
270
    }
271

  
272
    public ExporttoSwingPreferencesComponent createExporttoSwingProvidersPreferences() {
273
        return new DefaultExporttoPreferencesComponent();
274
    }
212 275
}

Also available in: Unified diff