Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / org.gvsig.installer / org.gvsig.installer.swing / org.gvsig.installer.swing.impl / src / main / java / org / gvsig / installer / swing / impl / DefaultSwingInstallerManager.java @ 37822

History | View | Annotate | Download (7.99 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22

    
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2010 {Prodevelop}   {Task}
26
 */
27

    
28
package org.gvsig.installer.swing.impl;
29

    
30
import java.io.BufferedReader;
31
import java.io.File;
32
import java.io.FileInputStream;
33
import java.io.FileNotFoundException;
34
import java.io.IOException;
35
import java.io.InputStream;
36
import java.io.InputStreamReader;
37
import java.net.MalformedURLException;
38
import java.net.URL;
39
import java.util.ArrayList;
40
import java.util.List;
41

    
42
import org.gvsig.i18n.Messages;
43
import org.gvsig.installer.lib.api.Dependencies;
44
import org.gvsig.installer.lib.api.InstallerLocator;
45
import org.gvsig.installer.lib.api.InstallerManager;
46
import org.gvsig.installer.lib.api.PackageInfo;
47
import org.gvsig.installer.swing.api.JProgressPanel;
48
import org.gvsig.installer.swing.api.SwingInstallerManager;
49
import org.gvsig.installer.swing.api.creation.MakePluginPackageWizard;
50
import org.gvsig.installer.swing.api.creation.MakePluginPackageWizardException;
51
import org.gvsig.installer.swing.api.creation.JOutputPanel;
52
import org.gvsig.installer.swing.api.creation.JPackageInfoPanel;
53
import org.gvsig.installer.swing.api.execution.AbstractInstallPackageWizard;
54
import org.gvsig.installer.swing.api.execution.InstallPackageWizardException;
55
import org.gvsig.installer.swing.api.execution.JShowPackageStatusAndAskContinuePanel;
56
import org.gvsig.installer.swing.api.execution.JShowRequiredPackagesAndAskContinuePanel;
57
import org.gvsig.installer.swing.api.execution.JShowUnresolvedDependenciesAndAskContinuePanel;
58
import org.gvsig.installer.swing.impl.creation.panel.DefaultOutputPanel;
59
import org.gvsig.installer.swing.impl.creation.panel.DefaultPackageInfoPanel;
60
import org.gvsig.installer.swing.impl.panel.DefaultProgressPanel;
61
import org.gvsig.tools.ToolsLocator;
62
import org.gvsig.tools.extensionpoint.ExtensionPoint;
63
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
64
import org.slf4j.Logger;
65
import org.slf4j.LoggerFactory;
66

    
67
/**
68
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
69
 */
70
public class DefaultSwingInstallerManager implements SwingInstallerManager {
71

    
72
        private static Logger logger = LoggerFactory
73
                        .getLogger(DefaultSwingInstallerManager.class);
74

    
75
        private static final String SWING_INSTALLER_MANAGER_EXTENSION_POINT = "SwingInstallerManagerExtensionPoint";
76
        private static final String CREATE_INSTALLER_WIZARD_NAME = "CreateInstallerWizard";
77
        private static final String EXECUTE_INSTALLER_WIZARD_NAME = "ExecuteInstallerWizard";
78
        private ExtensionPointManager extensionPoints = ToolsLocator
79
                        .getExtensionPointManager();
80

    
81
        private String applicationVersion = "1.0.0";
82
        private List<URL> defaultDownloadURLs = new ArrayList<URL>();
83

    
84
        public String getText(String key) {
85
                return Messages.getText(key);
86
        }
87

    
88
        public void registerMakePluginPackageWizardInstallerCreationWizard(
89
                        Class<? extends MakePluginPackageWizard> clazz) {
90
                ExtensionPoint extensionPoint = extensionPoints.add(
91
                                SWING_INSTALLER_MANAGER_EXTENSION_POINT, "");
92
                extensionPoint.append(CREATE_INSTALLER_WIZARD_NAME, "", clazz);
93
        }
94

    
95
        public void registerInstallPackageWizard(
96
                        Class<? extends AbstractInstallPackageWizard> clazz) {
97
                ExtensionPoint extensionPoint = extensionPoints.add(
98
                                SWING_INSTALLER_MANAGER_EXTENSION_POINT, "");
99
                extensionPoint.append(EXECUTE_INSTALLER_WIZARD_NAME, "", clazz);
100
        }
101

    
102
        public String getApplicationVersion() {
103
                return applicationVersion;
104
        }
105

    
106
        public void setApplicationVersion(String gvSIGVersion) {
107
                this.applicationVersion = gvSIGVersion;
108
        }
109

    
110
        public URL getDefaultDownloadURL() {
111
                if (defaultDownloadURLs.size() < 1) {
112
                        return null;
113
                }
114
                return defaultDownloadURLs.get(0);
115
        }
116

    
117
        public void setDefaultDownloadURL(String defaultDownloadURLs) {
118
                String[] urls = defaultDownloadURLs.split(";");
119
                for (int i = 0; i < urls.length; i++) {
120
                        try {
121
                                this.defaultDownloadURLs.add(new URL(urls[i]));
122
                        } catch (MalformedURLException e) {
123
                                logger.info("Malformed URL", e);
124
                        }
125
                }
126
        }
127

    
128
        public void setDefaultDownloadURL(URL defaultDownloadURL) {
129
                this.defaultDownloadURLs.clear();
130
                this.defaultDownloadURLs.add(defaultDownloadURL);
131
        }
132

    
133
        public void setDefaultDownloadURL(File defaultDownloadURLs) {
134
                InputStream is;
135
                try {
136
                        is = new FileInputStream(defaultDownloadURLs);
137
                } catch (FileNotFoundException e1) {
138
                        logger.error(
139
                                        "Can't open the file " + defaultDownloadURLs.getName(), e1);
140
                        return;
141
                }
142
                BufferedReader in = new BufferedReader(new InputStreamReader(is));
143
                String line = null;
144
                try {
145
                        for (line = in.readLine(); line != null; line = in.readLine()) {
146
                                try {
147
                                        this.addDefaultDownloadURL(new URL(line));
148
                                } catch (MalformedURLException e) {
149
                                        logger.error(
150
                                                        "Error creating the default packages download URL pointing to "
151
                                                                        + line, e);
152
                                }
153
                        }
154
                } catch (IOException e) {
155
                        logger.error("Error reading the file "
156
                                        + defaultDownloadURLs.getName(), e);
157
                }
158
        }
159

    
160
        public void addDefaultDownloadURL(URL url) {
161
                this.defaultDownloadURLs.add(url);
162
        }
163

    
164
        public List<URL> getDefaultDownloadURLs() {
165
                return this.defaultDownloadURLs;
166
        }
167

    
168
        public InstallerManager getInstallerManager() {
169
                return InstallerLocator.getInstallerManager();
170
        }
171

    
172
        public JShowPackageStatusAndAskContinuePanel createJShowPackageStatusAndAskContinuePanel(
173
                        List<PackageInfo> packages, String message) {
174
                return new DefaultJShowPackageStatusAndAskContinuePanel(this, packages,
175
                                message);
176
        }
177

    
178
        public JShowRequiredPackagesAndAskContinuePanel createJShowRequiredPackagesAndAskContinuePanel(
179
                        List<PackageInfo> packages, String message) {
180
                return new DefaultJShowRequiredPackagesAndAskContinuePanel(this,
181
                                packages, message);
182
        }
183

    
184
        public JShowUnresolvedDependenciesAndAskContinuePanel createJShowUnresolvedDependenciesAndAskContinuePanel(
185
                        Dependencies dependencies, String message) {
186
                return new DefaultJShowUnresolvedDependenciesAndAskContinuePanel(this,
187
                                dependencies, message);
188
        }
189

    
190
        public JPackageInfoPanel createPackageInfoPanel() {
191
                return new DefaultPackageInfoPanel();
192
        }
193

    
194
        public JOutputPanel createOutputPanel() {
195
                return new DefaultOutputPanel();
196
        }
197

    
198
        public JProgressPanel createProgressPanel() {
199
                return new DefaultProgressPanel();
200
        }
201

    
202
        public AbstractInstallPackageWizard createInstallPackageWizard(
203
                        File applicationDirectory, File installFolder)
204
                        throws InstallPackageWizardException {
205
                ExtensionPoint ep = extensionPoints
206
                                .add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
207
                try {
208
                        Object[] args = new Object[2];
209
                        args[0] = applicationDirectory;
210
                        args[1] = installFolder;
211
                        return (AbstractInstallPackageWizard) ep.create(
212
                                        EXECUTE_INSTALLER_WIZARD_NAME, args);
213

    
214
                } catch (Exception e) {
215
                        throw new InstallPackageWizardException(
216
                                        "Error creating the wizard", e);
217
                }
218
        }
219

    
220
        public MakePluginPackageWizard createMakePluginPackageWizard(
221
                        File applicationDirectory, File installFolder)
222
                        throws MakePluginPackageWizardException {
223
                ExtensionPoint ep = extensionPoints
224
                                .add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
225
                try {
226
                        Object[] args = new Object[2];
227
                        args[0] = applicationDirectory;
228
                        args[1] = installFolder;
229
                        return (MakePluginPackageWizard) ep.create(
230
                                        CREATE_INSTALLER_WIZARD_NAME, args);
231
                } catch (Exception e) {
232
                        throw new MakePluginPackageWizardException(
233
                                        "Error creating the wizard", e);
234
                }
235
        }
236

    
237
}