Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.exportto.app / org.gvsig.exportto.app.mainplugin / src / main / java / org / gvsig / export / app / extension / ExportTable.java @ 44263

History | View | Annotate | Download (5.04 KB)

1
package org.gvsig.export.app.extension;
2

    
3
import java.awt.Dimension;
4
import javax.swing.JComponent;
5
import javax.swing.JOptionPane;
6
import org.gvsig.app.ApplicationLocator;
7
import org.gvsig.app.ApplicationManager;
8
import org.gvsig.app.project.Project;
9
import org.gvsig.app.project.ProjectManager;
10
import org.gvsig.app.project.documents.table.TableDocument;
11
import org.gvsig.app.project.documents.table.TableManager;
12
import org.gvsig.export.ExportLocator;
13
import org.gvsig.export.ExportManager;
14
import org.gvsig.export.ExportProcess;
15
import org.gvsig.export.Filter;
16
import org.gvsig.export.spi.ExportServiceFactory;
17
import org.gvsig.export.swing.ExportFinishListenerAdapter;
18
import org.gvsig.export.swing.ExportSwingLocator;
19
import org.gvsig.export.swing.ExportSwingManager;
20
import org.gvsig.export.swing.JExportProcessPanel;
21
import org.gvsig.expressionevaluator.Expression;
22
import org.gvsig.fmap.dal.DALLocator;
23
import org.gvsig.fmap.dal.DataManager;
24
import org.gvsig.fmap.dal.OpenDataStoreParameters;
25
import org.gvsig.fmap.dal.feature.FeatureStore;
26
import org.gvsig.tools.ToolsLocator;
27
import org.gvsig.tools.i18n.I18nManager;
28
import org.gvsig.tools.swing.api.ToolsSwingLocator;
29
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
30
import org.slf4j.Logger;
31
import org.slf4j.LoggerFactory;
32

    
33
/**
34
 *
35
 * @author jjdelcerro
36
 */
37
@SuppressWarnings("UseSpecificCatch")
38
public class ExportTable {
39
    
40
    private static final Logger LOGGER = LoggerFactory.getLogger(ExportTable.class);
41
    
42
    public ExportTable() {
43
        
44
    }
45
    
46
    public void showExport(FeatureStore featureStore, Expression filter) {
47
        I18nManager i18n = ToolsLocator.getI18nManager();
48
        ExportManager manager = ExportLocator.getManager();
49
        ExportSwingManager swingManager = ExportSwingLocator.getSwingManager();
50

    
51
        final ExportProcess process = manager.createProcess();
52
        process.setSourceFeatureStore(featureStore);
53
        process.setContextProjection(null);
54
        process.setSourceProjection(null);
55
        process.setSourceTransformation(null);
56
        
57
        JExportProcessPanel panel = swingManager.createJExportProcessPanel(
58
            process,
59
            new Filter<ExportServiceFactory>() {
60
                @Override
61
                public boolean apply(ExportServiceFactory factory) {
62
                    return factory.hasTabularSupport();
63
                }
64
            }
65
        );
66
        panel.addFinishListener(new ExportFinishListenerAdapter() {
67
            @Override
68
            public void finished(JExportProcessPanel exportPanel) {
69
                doAddTable(process);
70
            }
71
        });
72
        JComponent component = panel.asJComponent();
73
        component.setPreferredSize(new Dimension(component.getPreferredSize().width, 530));
74
                
75
        WindowManager winmgr = ToolsSwingLocator.getWindowManager();
76
        winmgr.showWindow(
77
                panel.asJComponent(), 
78
                i18n.getTranslation("_Export_to"), 
79
                WindowManager.MODE.WINDOW
80
        );
81
    }
82

    
83
    private void doAddTable(ExportProcess process) {
84
        ApplicationManager application = ApplicationLocator.getManager();
85
        I18nManager i18n = ToolsLocator.getI18nManager();
86

    
87
        int n = application.confirmDialog(
88
                i18n.getTranslation("_Add_new_table_to_current_project"), 
89
                i18n.getTranslation("_Export"), 
90
                JOptionPane.YES_NO_OPTION, 
91
                JOptionPane.QUESTION_MESSAGE, 
92
                "AddExportedTableToProject"
93
        );
94
        if( n != JOptionPane.YES_OPTION ) {
95
            return;
96
        }
97
        try {
98
            DataManager dataManager = DALLocator.getDataManager();
99
            ProjectManager projectManager = application.getProjectManager();
100
            Project project = application.getCurrentProject();
101
            for (OpenDataStoreParameters params : process.getTargetOpenStoreParameters()) {
102
                FeatureStore store = (FeatureStore) dataManager.openStore(
103
                        params.getDataStoreName(), 
104
                        params
105
                );
106
                TableDocument tableDocument = (TableDocument) projectManager.createDocument(
107
                        TableManager.TYPENAME, 
108
                        store.getName()
109
                );
110
                tableDocument.setStore(store);
111
                project.addDocument(tableDocument);
112
            }
113
            application.messageDialog(
114
                    i18n.getTranslation("_Table_added_to_project"), 
115
                    null, 
116
                    i18n.getTranslation("_Export"), 
117
                    JOptionPane.QUESTION_MESSAGE, 
118
                    "ExportedTableAddedToProject"
119
            );
120
        } catch (Exception ex) {
121
            LOGGER.warn("Can't add exported layer to view",ex);
122
            application.messageDialog(
123
                    i18n.getTranslation("_Cant_add_exported_table_to_project"), 
124
                    null, 
125
                    i18n.getTranslation("_Export"), 
126
                    JOptionPane.WARNING_MESSAGE, 
127
                    "CantAddExportedTableToProject"
128
            );
129
        }
130
    }
131
    
132
}