Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.h2spatial / org.gvsig.h2spatial.h2gis132 / org.gvsig.h2spatial.h2gis132.app / org.gvsig.h2spatial.h2gis132.app.mainplugin / src / main / java / org / gvsig / h2spatial / restore / Restore.java @ 45960

History | View | Annotate | Download (4.7 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.h2spatial.restore;
7

    
8
import org.gvsig.h2spatial.backup.*;
9
import java.io.BufferedReader;
10
import java.io.File;
11
import java.io.FileInputStream;
12
import java.io.InputStreamReader;
13
import java.io.Reader;
14
import java.nio.charset.StandardCharsets;
15
import java.sql.Connection;
16
import java.sql.DriverManager;
17
import java.sql.SQLException;
18
import java.sql.Statement;
19
import java.util.ArrayList;
20
import java.util.List;
21
import java.util.logging.Level;
22
import javax.swing.JOptionPane;
23
import org.apache.commons.io.FileUtils;
24
import org.apache.commons.io.FilenameUtils;
25
import org.apache.commons.io.IOUtils;
26
import org.apache.commons.io.output.FileWriterWithEncoding;
27
import org.gvsig.app.ApplicationLocator;
28
import org.gvsig.app.ApplicationManager;
29
import org.gvsig.fmap.dal.DALLocator;
30
import org.gvsig.fmap.dal.DataManager;
31
import org.gvsig.fmap.dal.store.h2.H2SpatialLibrary;
32
import org.gvsig.fmap.dal.store.h2.H2SpatialUtils;
33
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer;
34
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
35
import org.gvsig.fmap.dal.swing.DALSwingLocator;
36
import org.gvsig.fmap.dal.swing.DataSwingManager;
37
import org.gvsig.tools.ToolsLocator;
38
import org.gvsig.tools.i18n.I18nManager;
39
import org.gvsig.tools.swing.api.ToolsSwingLocator;
40
import org.gvsig.tools.swing.api.ToolsSwingManager;
41
import org.gvsig.tools.swing.api.pickercontroller.FilePickerController;
42
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
43
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
45

    
46
/**
47
 *
48
 * @author fdiaz
49
 */
50
public class Restore extends RestoreView {
51
    
52
    private static final Logger LOGGER = LoggerFactory.getLogger(Restore.class);
53
    private FilePickerController pickerBackupFile;
54
    private FilePickerController pickerDatabaseFile;
55

    
56

    
57
    public Restore() {
58
        
59
        initComponents();
60
    }
61
    
62
    private void initComponents() {
63
        
64
        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
65
        this.pickerBackupFile = toolsSwingManager.createFilePickerController(txtBackupFile, btnBackupFile);
66
        this.pickerDatabaseFile = toolsSwingManager.createFilePickerController(txtDatabaseFile, btnDatabaseFile);
67
        
68
    }
69
    
70
    private void translate() {
71
        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
72
        
73
        toolsSwingManager.translate(lblBackupFile);
74
        toolsSwingManager.translate(lblDatabaseFile);
75

    
76
    }
77
    
78
    public void restoreBackup(){
79
        ApplicationManager application = ApplicationLocator.getApplicationManager();
80
        I18nManager i18n = ToolsLocator.getI18nManager();
81

    
82
        Connection conn = null;
83
        Statement st =null;
84
        try {
85
            
86
            String h2DatabaseFile = H2SpatialUtils.removeH2FileNameExtension(pickerDatabaseFile.get().getAbsolutePath().replace("\\", "/"));
87
            File[] h2Files = H2SpatialUtils.getH2Files(new File(h2DatabaseFile));
88
            for (File h2File : h2Files) {
89
                if (h2File.exists()) {
90
                    application.messageDialog(
91
                            i18n.getTranslation("_The_target_file_already_exists"),
92
                            i18n.getTranslation("_Restore"),
93
                            JOptionPane.WARNING_MESSAGE
94
                    );
95
                    return;
96

    
97
                }
98
            }
99
            conn = DriverManager.getConnection("jdbc:h2:"+h2DatabaseFile+";MODE=PostgreSQL;SCHEMA=PUBLIC;ALLOW_LITERALS=ALL", "sa", "");
100

    
101
            st = conn.createStatement();
102
            st.execute("RUNSCRIPT FROM '"+pickerBackupFile.get().getAbsolutePath().replace("\\", "/")+"'"); //+"' CHARSET '"+StandardCharsets.UTF_8.name()+"'");
103
            
104
        } catch (Exception ex) {
105
            LOGGER.warn("Can't restore backup.", ex);
106
            application.messageDialog(
107
                    i18n.getTranslation("_Cant_restore_backup")+"\n\n"+
108
                    i18n.getTranslation("_see_error_log_for_more_information"), 
109
                    i18n.getTranslation("_Restore"), 
110
                    JOptionPane.WARNING_MESSAGE
111
            );
112
        } finally {
113
            if(st != null){
114
                try {
115
                    st.close();
116
                } catch (SQLException ex) {
117
                    LOGGER.debug("Can't close statement", ex);
118
                }
119
            }
120
            if(conn != null){
121
                try {
122
                    conn.close();
123
                } catch (SQLException ex) {
124
                    LOGGER.debug("Can't close connection", ex);
125
                }
126
            }
127
        }
128
    }
129
}