Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.wcs / org.gvsig.wcs.app / org.gvsig.wcs.app.mainplugin / src / main / java / org / gvsig / wcs / app / mainplugin / WCSAddLayerPanel.java @ 8803

History | View | Annotate | Download (7.16 KB)

1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2018 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.wcs.app.mainplugin;
24

    
25
import java.awt.BorderLayout;
26
import java.io.File;
27

    
28
import javax.swing.JOptionPane;
29

    
30
import org.slf4j.Logger;
31
import org.slf4j.LoggerFactory;
32

    
33
import org.gvsig.andami.Launcher;
34
import org.gvsig.app.ApplicationLocator;
35
import org.gvsig.app.ApplicationManager;
36
import org.gvsig.app.gui.WizardPanel;
37
import org.gvsig.app.project.documents.view.toc.actions.LayerErrorsPanel;
38
import org.gvsig.fmap.dal.DALLocator;
39
import org.gvsig.fmap.dal.DataManager;
40
import org.gvsig.fmap.dal.DataStoreParameters;
41
import org.gvsig.fmap.dal.exception.DataException;
42
import org.gvsig.fmap.dal.raster.api.RasterCache;
43
import org.gvsig.fmap.dal.raster.api.RasterStore;
44
import org.gvsig.fmap.mapcontext.MapContext;
45
import org.gvsig.fmap.mapcontext.MapContextLocator;
46
import org.gvsig.fmap.mapcontext.MapContextManager;
47
import org.gvsig.fmap.mapcontext.layers.FLayer;
48
import org.gvsig.tools.ToolsLocator;
49
import org.gvsig.tools.dispose.DisposeUtils;
50
import org.gvsig.tools.dynobject.DynObject;
51
import org.gvsig.tools.i18n.I18nManager;
52
import org.gvsig.tools.identitymanagement.UnauthorizedException;
53
import org.gvsig.tools.swing.api.ToolsSwingLocator;
54
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
55
import org.gvsig.wcs.provider.WCSRasterProviderParameters;
56
import org.gvsig.wcs.swing.api.WCSParametersPanel;
57
import org.gvsig.wcs.swing.api.WCSSwingLocator;
58

    
59
/**
60
 * @author fdiaz
61
 *
62
 */
63
public class WCSAddLayerPanel extends WizardPanel {
64

    
65
    /**
66
     *
67
     */
68
    private static final long serialVersionUID = 208280947322242604L;
69
    private WCSParametersPanel panel = null;
70
    private static final Logger logger = LoggerFactory.getLogger(WCSAddLayerPanel.class);
71

    
72
    /**
73
     *
74
     */
75
    public WCSAddLayerPanel() {
76
        // TODO Auto-generated constructor stub
77
    }
78

    
79
    /*
80
     * (non-Javadoc)
81
     *
82
     * @see org.gvsig.app.gui.WizardPanel#initWizard()
83
     */
84
    @Override
85
    public void initWizard() {
86
        I18nManager i18nManager = ToolsLocator.getI18nManager();
87
        setTabName(i18nManager.getTranslation("WCS"));
88

    
89
        this.setLayout(new BorderLayout());
90
        panel = WCSSwingLocator.getManager().createWCSParametersPanel();
91

    
92
        if (this.getMapCtrl() == null) {
93
            throw new IllegalArgumentException("MapControl need");
94
        }
95
        MapContext mapContext = this.getMapContext();
96
        panel.setPreferredProjection(mapContext.getProjection());
97

    
98

    
99
        this.add(panel.asJComponent(), BorderLayout.CENTER);
100
    }
101

    
102
    /*
103
     * (non-Javadoc)
104
     *
105
     * @see org.gvsig.app.gui.WizardPanel#execute()
106
     */
107
    @Override
108
    public void execute() {
109
        if (this.getMapCtrl() == null) {
110
            throw new IllegalArgumentException("MapControl need");
111
        }
112
        final MapContext mapContext = this.getMapContext();
113

    
114

    
115
        Thread task = new Thread(new Runnable() {
116

    
117
            @Override
118
            public void run() {
119
                FLayer layer = createSingleLayer(panel.getParameters());
120
                getMapCtrl().addLayer(layer);
121
                mapContext.invalidate();
122
            }
123
        });
124
        task.start();
125
        logger.info("LayersTree added");
126

    
127
    }
128

    
129
    private FLayer createSingleLayer(final DataStoreParameters parameters) {
130
        final MapContextManager manager = MapContextLocator.getMapContextManager();
131

    
132
        FLayer layer = null;
133
        String layerName = (String)parameters.getDynValue(WCSRasterProviderParameters.WCS_COVERAGENAME_PARAMETER_NAME);
134
        try {
135
            DataManager dataManager = DALLocator.getDataManager();
136
            RasterStore store = (RasterStore) dataManager.openStore(parameters.getDataStoreName(), parameters);
137

    
138
            if (panel.isTiled()) {
139
                DynObject tileParameters = dataManager.createStoreParameters("TileCache");
140

    
141
                File rootFolder = new File(Launcher.getAppHomeDir() + File.separator + "gvsig_rcache");
142

    
143
                if (tileParameters.getDynClass().getDynField("rootFolder") != null) {
144
                    tileParameters.setDynValue("rootFolder", rootFolder);
145
                }
146

    
147
                try {
148
                    store.useCache("TileCache", tileParameters);
149
                    if (panel.refreshLocalCache()) {
150
                        RasterCache cache = store.getCache();
151
                        cache.deleteAll();
152
                    }
153
                } catch (DataException e) {
154
                    logger.warn("Can't cache the layer.", e);
155
                }
156

    
157
            }
158

    
159
            layer = manager.createLayer(layerName, store);
160
            DisposeUtils.disposeQuietly(store);
161
            return layer;
162
        } catch (UnauthorizedException e) {
163
            I18nManager i18nManager = ToolsLocator.getI18nManager();
164
            ApplicationManager application = ApplicationLocator.getManager();
165
            String resource = ""; // FIXME: coger el server de los parametros
166
            application.messageDialog(
167
                i18nManager.getTranslation("_User_0_is_not_authorized_to_1_on_resource_2_3", new String[] {
168
                    e.getIdentity().getID(), e.getActionName(), e.getResourceName(), resource }),
169
                i18nManager.getTranslation("_Unauthorized_access"), JOptionPane.WARNING_MESSAGE);
170
            logger.warn("Unauthorized access to layer '" + layerName + "'.", e);
171
        } catch (Exception e) {
172
            LayerErrorsPanel panel = new LayerErrorsPanel(layerName, e);
173
            panel.setLayer(layer);
174

    
175
            I18nManager i18nManager = ToolsLocator.getI18nManager();
176
            ToolsSwingLocator.getWindowManager().showWindow(panel,
177
                i18nManager.getTranslation("_Problems_loading_the_layer"), WindowManager.MODE.WINDOW);
178
            logger.warn("Can't load layer '" + layerName + "'.", e);
179

    
180
        }
181
        return null;
182

    
183
    }
184

    
185
    /*
186
     * (non-Javadoc)
187
     *
188
     * @see org.gvsig.app.gui.WizardPanel#close()
189
     */
190
    @Override
191
    public void close() {
192
        this.dispose();
193
    }
194

    
195
    /**
196
     * Dispose filters and explorer
197
     */
198
    public void dispose() {
199
        panel.dispose();
200
    }
201

    
202
    @Override
203
    public DataStoreParameters[] getParameters() {
204
        return null;
205

    
206
//        List<WCSRasterProviderParameters> parametersList = this.panel.getParameters().getAllChildren();
207
//        return parametersList.toArray(new DataStoreParameters[parametersList.size()]);
208
    }
209

    
210

    
211
}