Revision 37891 branches/v2_0_0_prep/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/org.gvsig.newlayer.lib.impl/src/main/java/org/gvsig/newlayer/impl/DefaultNewLayerManager.java

View differences:

DefaultNewLayerManager.java
21 21
 */
22 22
package org.gvsig.newlayer.impl;
23 23

  
24

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

  
30 31
import javax.swing.ImageIcon;
31 32

  
33
import org.slf4j.Logger;
34
import org.slf4j.LoggerFactory;
35

  
32 36
import org.gvsig.fmap.mapcontext.MapContext;
33 37
import org.gvsig.newlayer.NewLayerManager;
34 38
import org.gvsig.newlayer.NewLayerProviderFactory;
35 39
import org.gvsig.newlayer.NewLayerService;
36 40
import org.gvsig.newlayer.NewLayerWizard;
41
import org.gvsig.newlayer.impl.preferences.DefaultNewLayerPreferencesComponent;
42
import org.gvsig.newlayer.preferences.NewLayerPreferencesComponent;
37 43
import org.gvsig.tools.ToolsLocator;
38 44
import org.gvsig.tools.extensionpoint.ExtensionPoint;
39 45
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
40 46
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
41
import org.slf4j.Logger;
42
import org.slf4j.LoggerFactory;
47
import org.gvsig.tools.service.ServiceException;
43 48

  
44 49
/**
45 50
 * Default {@link NewLayerManager} implementation.
......
49 54
 */
50 55
public class DefaultNewLayerManager implements NewLayerManager {
51 56

  
52
	private static final Logger LOG =
53
        LoggerFactory.getLogger(DefaultNewLayerManager.class);
54
	
55
	final static private String EP_NEWLAYER_NAME = "NewLayer.manager.providers";
56
	final static private String EP_NEWLAYER_DESCRIPTION = "NewLayer providers";    
57
    
58
	public NewLayerService createNewLayerService(MapContext mapContext) {
59
		return new DefaultNewLayerService(this, mapContext);
60
	}
57
    private static final Logger LOG = LoggerFactory
58
        .getLogger(DefaultNewLayerManager.class);
61 59

  
62
	public void registerProvider(NewLayerProviderFactory factory) {
63
		ExtensionPointManager epmgr = ToolsLocator.getExtensionPointManager();
64
		ExtensionPoint ep = epmgr.add(EP_NEWLAYER_NAME,EP_NEWLAYER_DESCRIPTION);
65
		ep.append(factory.getName(), factory.getDescription(), factory);
66
	}
60
    final static private String EP_NEWLAYER_NAME = "NewLayer.manager.providers";
61
    final static private String EP_NEWLAYER_DESCRIPTION = "NewLayer providers";
67 62

  
68
	public List<NewLayerProviderFactory> getProviders(STORETYPE filter) {
69
		ExtensionPointManager epmgr = ToolsLocator.getExtensionPointManager();
70
		ExtensionPoint ep = epmgr.add(EP_NEWLAYER_NAME,EP_NEWLAYER_DESCRIPTION);
71
		List<NewLayerProviderFactory> providers = new ArrayList<NewLayerProviderFactory>();
72
		Iterator it = ep.iterator();
63
    private Map<NewLayerProviderFactory, Boolean> providerStatus;
73 64

  
74
			while (it.hasNext()) {
75
				Extension extension = (Extension) it.next();
76
				NewLayerProviderFactory factory;
77
				try {
78
					factory = (NewLayerProviderFactory) extension.create();
79
				} catch (InstantiationException e) {
80
					LOG.warn("Can't create NewLayerProviderFactory "+ extension.getName(), e);
81
					continue;
82
				} catch (IllegalAccessException e) {
83
					LOG.warn("Can't create NewLayerProviderFactory "+ extension.getName(), e);
84
					continue;
85
				}
86
//				if (filter == STORETYPE.TABULAR){
87
//					if (!factory.isSpatial()){
88
//						providers.add(factory);
89
//					}
90
//				} else {
91
					providers.add(factory);
92
//				}
93
			}
65
    /**
66
     * Empty constructor.
67
     */
68
    public DefaultNewLayerManager() {
69
        providerStatus = new HashMap<NewLayerProviderFactory, Boolean>();
70
    }
94 71

  
95
		return providers;
96
	}
72
    public NewLayerService createNewLayerService(MapContext mapContext) {
73
        return new DefaultNewLayerService(this, mapContext);
74
    }
97 75

  
98
	public NewLayerWizard createNewLayerWizard(NewLayerService service) {
99
        URL iconURL = getClass().getClassLoader().getResource("org/gvsig/newlayer/lib/impl/images/newlayericon.png");
76
    public void registerProvider(NewLayerProviderFactory factory) {
77
        ExtensionPoint ep = getNewLayerProvidersExtensionPoint();
78
        ep.append(factory.getName(), factory.getDescription(), factory);
79
    }
80

  
81
    public NewLayerWizard createNewLayerWizard(NewLayerService service) {
82
        URL iconURL =
83
            getClass().getClassLoader().getResource(
84
                "org/gvsig/newlayer/lib/impl/images/newlayericon.png");
100 85
        ImageIcon logo = null;
101
        if (iconURL != null){
102
        	logo = new ImageIcon(iconURL);
86
        if (iconURL != null) {
87
            logo = new ImageIcon(iconURL);
103 88
        }
104 89

  
105
		return new DefaultNewLayerWizard(logo, service);
106
	}
90
        return new DefaultNewLayerWizard(logo, service);
91
    }
92

  
93
    public NewLayerProviderFactory getNewLayerProviderFactory(
94
        String providerName) throws ServiceException {
95
        ExtensionPoint ep = getNewLayerProvidersExtensionPoint();
96
        try {
97
            return (NewLayerProviderFactory) ep.create(providerName);
98
        } catch (InstantiationException e) {
99
            throw new RuntimeException(e);
100
        } catch (IllegalAccessException e) {
101
            throw new RuntimeException(e);
102
        }
103
    }
104

  
105
    public void enableProvider(NewLayerProviderFactory factory, Boolean value) {
106
        providerStatus.put(factory, Boolean.valueOf(value));
107
    }
108

  
109
    public NewLayerPreferencesComponent createNewLayerProvidersPreferences() {
110
        return new DefaultNewLayerPreferencesComponent();
111
    }
112

  
113
    public List<NewLayerProviderFactory> getProviders() {
114
        ExtensionPoint ep = getNewLayerProvidersExtensionPoint();
115
        List<NewLayerProviderFactory> providers =
116
            new ArrayList<NewLayerProviderFactory>();
117
        @SuppressWarnings("unchecked")
118
        Iterator<Extension> it = ep.iterator();
119

  
120
        while (it.hasNext()) {
121
            Extension extension = (Extension) it.next();
122
            NewLayerProviderFactory factory;
123
            try {
124
                factory = (NewLayerProviderFactory) extension.create();
125
            } catch (InstantiationException e) {
126
                LOG.warn(
127
                    "Can't create NewLayerProviderFactory "
128
                        + extension.getName(), e);
129
                continue;
130
            } catch (IllegalAccessException e) {
131
                LOG.warn(
132
                    "Can't create NewLayerProviderFactory "
133
                        + extension.getName(), e);
134
                continue;
135
            }
136
            providers.add(factory);
137
        }
138

  
139
        return providers;
140
    }
141

  
142
    private ExtensionPoint getNewLayerProvidersExtensionPoint() {
143
        ExtensionPointManager epmgr = ToolsLocator.getExtensionPointManager();
144
        return
145
            epmgr.add(EP_NEWLAYER_NAME, EP_NEWLAYER_DESCRIPTION);
146
    }
147

  
148
    public List<NewLayerProviderFactory> getProviders(STORETYPE filter) {
149
        // TODO use filters
150
        // if (filter == STORETYPE.TABULAR){
151
        // if (!factory.isSpatial()){
152
        // providers.add(factory);
153
        // }
154
        // } else {
155
        // }
156
        return getProviders();
157
    }
158

  
159
    public boolean isProviderEnabled(NewLayerProviderFactory factory) {
160
        Boolean status = providerStatus.get(factory);
161
        return status == null ? true : status.booleanValue();
162
    }
163

  
107 164
}

Also available in: Unified diff