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 @ 44753

History | View | Annotate | Download (5.3 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.FeatureQuery;
26
import org.gvsig.fmap.dal.feature.FeatureStore;
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.i18n.I18nManager;
29
import org.gvsig.tools.swing.api.ToolsSwingLocator;
30
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
31
import org.slf4j.Logger;
32
import org.slf4j.LoggerFactory;
33

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

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

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