Statistics
| Revision:

svn-gvsig-desktop / 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 @ 37598

History | View | Annotate | Download (8.07 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 MakePluginPackageWizard createMakePluginPackageWizard(
89
                        File applicationFolder, File pluginsFolder, File installFolder)
90
                        throws MakePluginPackageWizardException {
91

    
92
                ExtensionPoint ep = extensionPoints
93
                                .add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
94
                try {
95
                        Object[] args = new Object[3];
96
                        args[0] = applicationFolder;
97
                        args[1] = pluginsFolder;
98
                        args[2] = installFolder;
99
                        return (MakePluginPackageWizard) ep.create(
100
                                        CREATE_INSTALLER_WIZARD_NAME, args);
101
                } catch (Exception e) {
102
                        throw new MakePluginPackageWizardException(
103
                                        "Error creating the wizard", e);
104
                }
105
        }
106

    
107
        public AbstractInstallPackageWizard createInstallPackageWizard(
108
                        File applicationFolder, File pluginsFolder, File installFolder)
109
                        throws InstallPackageWizardException {
110

    
111
                ExtensionPoint ep = extensionPoints
112
                                .add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
113
                try {
114
                        Object[] args = new Object[3];
115
                        args[0] = applicationFolder;
116
                        args[1] = pluginsFolder;
117
                        args[2] = installFolder;
118
                        return (AbstractInstallPackageWizard) ep.create(
119
                                        EXECUTE_INSTALLER_WIZARD_NAME, args);
120

    
121
                } catch (Exception e) {
122
                        throw new InstallPackageWizardException(
123
                                        "Error creating the wizard", e);
124
                }
125
        }
126

    
127
        public void registerMakePluginPackageWizardInstallerCreationWizard(
128
                        Class<? extends MakePluginPackageWizard> clazz) {
129
                ExtensionPoint extensionPoint = extensionPoints.add(
130
                                SWING_INSTALLER_MANAGER_EXTENSION_POINT, "");
131
                extensionPoint.append(CREATE_INSTALLER_WIZARD_NAME, "", clazz);
132
        }
133

    
134
        public void registerInstallPackageWizard(
135
                        Class<? extends AbstractInstallPackageWizard> clazz) {
136
                ExtensionPoint extensionPoint = extensionPoints.add(
137
                                SWING_INSTALLER_MANAGER_EXTENSION_POINT, "");
138
                extensionPoint.append(EXECUTE_INSTALLER_WIZARD_NAME, "", clazz);
139
        }
140

    
141
        public String getApplicationVersion() {
142
                return applicationVersion;
143
        }
144

    
145
        public void setApplicationVersion(String gvSIGVersion) {
146
                this.applicationVersion = gvSIGVersion;
147
        }
148

    
149
        public URL getDefaultDownloadURL() {
150
                if (defaultDownloadURLs.size() < 1) {
151
                        return null;
152
                }
153
                return defaultDownloadURLs.get(0);
154
        }
155

    
156
        public void setDefaultDownloadURL(String defaultDownloadURLs) {
157
                String[] urls = defaultDownloadURLs.split(";");
158
                for (int i = 0; i < urls.length; i++) {
159
                        try {
160
                                this.defaultDownloadURLs.add(new URL(urls[i]));
161
                        } catch (MalformedURLException e) {
162
                                logger.info("Malformed URL", e);
163
                        }
164
                }
165
        }
166

    
167
        public void setDefaultDownloadURL(URL defaultDownloadURL) {
168
                this.defaultDownloadURLs.clear();
169
                this.defaultDownloadURLs.add(defaultDownloadURL);
170
        }
171

    
172
        public void setDefaultDownloadURL(File defaultDownloadURLs) {
173
                InputStream is;
174
                try {
175
                        is = new FileInputStream(defaultDownloadURLs);
176
                } catch (FileNotFoundException e1) {
177
                        logger.error(
178
                                        "Can't open the file " + defaultDownloadURLs.getName(), e1);
179
                        return;
180
                }
181
                BufferedReader in = new BufferedReader(new InputStreamReader(is));
182
                String line = null;
183
                try {
184
                        for (line = in.readLine(); line != null; line = in.readLine()) {
185
                                try {
186
                                        this.addDefaultDownloadURL(new URL(line));
187
                                } catch (MalformedURLException e) {
188
                                        logger.error(
189
                                                        "Error creating the default packages download URL pointing to "
190
                                                                        + line, e);
191
                                }
192
                        }
193
                } catch (IOException e) {
194
                        logger.error("Error reading the file "
195
                                        + defaultDownloadURLs.getName(), e);
196
                }
197
        }
198

    
199
        public void addDefaultDownloadURL(URL url) {
200
                this.defaultDownloadURLs.add(url);
201
        }
202

    
203
        public List<URL> getDefaultDownloadURLs() {
204
                return this.defaultDownloadURLs;
205
        }
206

    
207
        public InstallerManager getInstallerManager() {
208
                return InstallerLocator.getInstallerManager();
209
        }
210

    
211
        public JShowPackageStatusAndAskContinuePanel createJShowPackageStatusAndAskContinuePanel(
212
                        List<PackageInfo> packages, String message) {
213
                return new DefaultJShowPackageStatusAndAskContinuePanel(this, packages,
214
                                message);
215
        }
216

    
217
        public JShowRequiredPackagesAndAskContinuePanel createJShowRequiredPackagesAndAskContinuePanel(
218
                        List<PackageInfo> packages, String message) {
219
                return new DefaultJShowRequiredPackagesAndAskContinuePanel(this,
220
                                packages, message);
221
        }
222

    
223
        public JShowUnresolvedDependenciesAndAskContinuePanel createJShowUnresolvedDependenciesAndAskContinuePanel(
224
                        Dependencies dependencies, String message) {
225
                return new DefaultJShowUnresolvedDependenciesAndAskContinuePanel(this,
226
                                dependencies, message);
227
        }
228

    
229
        public JPackageInfoPanel createPackageInfoPanel() {
230
                return new DefaultPackageInfoPanel();
231
        }
232

    
233
        public JOutputPanel createOutputPanel() {
234
                return new DefaultOutputPanel();
235
        }
236

    
237
        public JProgressPanel createProgressPanel() {
238
                return new DefaultProgressPanel();
239
        }
240

    
241
}