Statistics
| Revision:

svn-gvsig-desktop / tags / v2_0_0_Build_2060 / extensions / org.gvsig.installer / org.gvsig.installer.swing / org.gvsig.installer.swing.impl / src / main / java / org / gvsig / installer / swing / impl / DefaultSwingInstallerManager.java @ 39380

History | View | Annotate | Download (8.59 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.lib.api.Version;
48
import org.gvsig.installer.swing.api.JProgressPanel;
49
import org.gvsig.installer.swing.api.SwingInstallerManager;
50
import org.gvsig.installer.swing.api.creation.JOutputPanel;
51
import org.gvsig.installer.swing.api.creation.JPackageInfoPanel;
52
import org.gvsig.installer.swing.api.creation.MakePluginPackageWizard;
53
import org.gvsig.installer.swing.api.creation.MakePluginPackageWizardException;
54
import org.gvsig.installer.swing.api.execution.AbstractInstallPackageWizard;
55
import org.gvsig.installer.swing.api.execution.InstallPackageWizardException;
56
import org.gvsig.installer.swing.api.execution.JShowPackageStatusAndAskContinuePanel;
57
import org.gvsig.installer.swing.api.execution.JShowRequiredPackagesAndAskContinuePanel;
58
import org.gvsig.installer.swing.api.execution.JShowUnresolvedDependenciesAndAskContinuePanel;
59
import org.gvsig.installer.swing.impl.creation.panel.DefaultOutputPanel;
60
import org.gvsig.installer.swing.impl.creation.panel.DefaultPackageInfoPanel;
61
import org.gvsig.installer.swing.impl.panel.DefaultProgressPanel;
62
import org.gvsig.tools.ToolsLocator;
63
import org.gvsig.tools.extensionpoint.ExtensionPoint;
64
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
65
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;
67

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

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

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

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

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

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

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

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

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

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

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

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

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

    
161
        public void addDefaultDownloadURL(URL url) {
162
                if( !this.defaultDownloadURLs.contains(url)) {
163
                        this.defaultDownloadURLs.add(url);
164
                }
165
        }
166
        
167
        public void addDefaultDownloadURL(String url) throws MalformedURLException {
168
                Version version = getInstallerManager().createVersion();
169
                String versionFormat = version.getMajor() + "." + version.getMinor()
170
                                + "." + version.getRevision();
171
                url = url.replace("$version", versionFormat);
172
                url = url.replace("<%Version%>", versionFormat);
173
                url = url.replace("$build", Integer.toString(version.getBuild()));
174
                url = url.replace("<%Build%>", Integer.toString(version.getBuild()));
175
                addDefaultDownloadURL(new URL(url));
176
        }
177

    
178
        public List<URL> getDefaultDownloadURLs() {
179
                return this.defaultDownloadURLs;
180
        }
181

    
182
        public InstallerManager getInstallerManager() {
183
                return InstallerLocator.getInstallerManager();
184
        }
185

    
186
        public JShowPackageStatusAndAskContinuePanel createJShowPackageStatusAndAskContinuePanel(
187
                        List<PackageInfo> packages, String message) {
188
                return new DefaultJShowPackageStatusAndAskContinuePanel(this, packages,
189
                                message);
190
        }
191

    
192
        public JShowRequiredPackagesAndAskContinuePanel createJShowRequiredPackagesAndAskContinuePanel(
193
                        List<PackageInfo> packages, String message) {
194
                return new DefaultJShowRequiredPackagesAndAskContinuePanel(this,
195
                                packages, message);
196
        }
197

    
198
        public JShowUnresolvedDependenciesAndAskContinuePanel createJShowUnresolvedDependenciesAndAskContinuePanel(
199
                        Dependencies dependencies, String message) {
200
                return new DefaultJShowUnresolvedDependenciesAndAskContinuePanel(this,
201
                                dependencies, message);
202
        }
203

    
204
        public JPackageInfoPanel createPackageInfoPanel() {
205
                return new DefaultPackageInfoPanel();
206
        }
207

    
208
        public JOutputPanel createOutputPanel() {
209
                return new DefaultOutputPanel();
210
        }
211

    
212
        public JProgressPanel createProgressPanel() {
213
                return new DefaultProgressPanel();
214
        }
215

    
216
        public AbstractInstallPackageWizard createInstallPackageWizard(
217
                        File applicationDirectory, File installFolder)
218
                        throws InstallPackageWizardException {
219
                ExtensionPoint ep = extensionPoints
220
                                .add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
221
                try {
222
                        Object[] args = new Object[2];
223
                        args[0] = applicationDirectory;
224
                        args[1] = installFolder;
225
                        return (AbstractInstallPackageWizard) ep.create(
226
                                        EXECUTE_INSTALLER_WIZARD_NAME, args);
227

    
228
                } catch (Exception e) {
229
                        throw new InstallPackageWizardException(
230
                                        "Error creating the wizard", e);
231
                }
232
        }
233

    
234
        public MakePluginPackageWizard createMakePluginPackageWizard(
235
                        File applicationDirectory, File installFolder)
236
                        throws MakePluginPackageWizardException {
237
                ExtensionPoint ep = extensionPoints
238
                                .add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
239
                try {
240
                        Object[] args = new Object[2];
241
                        args[0] = applicationDirectory;
242
                        args[1] = installFolder;
243
                        return (MakePluginPackageWizard) ep.create(
244
                                        CREATE_INSTALLER_WIZARD_NAME, args);
245
                } catch (Exception e) {
246
                        throw new MakePluginPackageWizardException(
247
                                        "Error creating the wizard", e);
248
                }
249
        }
250

    
251
}