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

History | View | Annotate | Download (8.56 KB)

1 32269 jpiera
/* gvSIG. Geographic Information System of the Valencian Government
2 33729 cordinyana
 *
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 32269 jpiera
23
/*
24 33729 cordinyana
 * AUTHORS (In addition to CIT):
25
 * 2010 {Prodevelop}   {Task}
26
 */
27
28 32269 jpiera
package org.gvsig.installer.swing.impl;
29
30 37498 fdiaz
import java.io.BufferedReader;
31 32565 jpiera
import java.io.File;
32 37498 fdiaz
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 37417 fdiaz
import java.net.MalformedURLException;
38 34003 cordinyana
import java.net.URL;
39 37417 fdiaz
import java.util.ArrayList;
40 35767 jjdelcerro
import java.util.List;
41 32565 jpiera
42 33119 jpiera
import org.gvsig.i18n.Messages;
43 37409 fdiaz
import org.gvsig.installer.lib.api.Dependencies;
44 34005 cordinyana
import org.gvsig.installer.lib.api.InstallerLocator;
45
import org.gvsig.installer.lib.api.InstallerManager;
46 35767 jjdelcerro
import org.gvsig.installer.lib.api.PackageInfo;
47 37169 nfrancisco
import org.gvsig.installer.swing.api.JProgressPanel;
48 32269 jpiera
import org.gvsig.installer.swing.api.SwingInstallerManager;
49 32565 jpiera
import org.gvsig.installer.swing.api.creation.MakePluginPackageWizard;
50
import org.gvsig.installer.swing.api.creation.MakePluginPackageWizardException;
51 37169 nfrancisco
import org.gvsig.installer.swing.api.creation.JOutputPanel;
52
import org.gvsig.installer.swing.api.creation.JPackageInfoPanel;
53 34925 nfrancisco
import org.gvsig.installer.swing.api.execution.AbstractInstallPackageWizard;
54 32565 jpiera
import org.gvsig.installer.swing.api.execution.InstallPackageWizardException;
55 35767 jjdelcerro
import org.gvsig.installer.swing.api.execution.JShowPackageStatusAndAskContinuePanel;
56 35979 jjdelcerro
import org.gvsig.installer.swing.api.execution.JShowRequiredPackagesAndAskContinuePanel;
57 37409 fdiaz
import org.gvsig.installer.swing.api.execution.JShowUnresolvedDependenciesAndAskContinuePanel;
58 37169 nfrancisco
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 32269 jpiera
import org.gvsig.tools.ToolsLocator;
62
import org.gvsig.tools.extensionpoint.ExtensionPoint;
63
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
64 37417 fdiaz
import org.slf4j.Logger;
65
import org.slf4j.LoggerFactory;
66 32269 jpiera
67
/**
68
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
69
 */
70 33729 cordinyana
public class DefaultSwingInstallerManager implements SwingInstallerManager {
71
72 37417 fdiaz
        private static Logger logger = LoggerFactory.getLogger(DefaultSwingInstallerManager.class);
73
74 33729 cordinyana
    private static final String SWING_INSTALLER_MANAGER_EXTENSION_POINT =
75
        "SwingInstallerManagerExtensionPoint";
76
    private static final String CREATE_INSTALLER_WIZARD_NAME =
77
        "CreateInstallerWizard";
78
    private static final String EXECUTE_INSTALLER_WIZARD_NAME =
79
        "ExecuteInstallerWizard";
80 34925 nfrancisco
    private ExtensionPointManager extensionPoints =
81
        ToolsLocator.getExtensionPointManager();
82 33729 cordinyana
83 33743 cordinyana
    private String applicationVersion = "1.0.0";
84 37417 fdiaz
    private List<URL> defaultDownloadURLs = new ArrayList<URL>();
85 33686 cordinyana
86 33729 cordinyana
    public String getText(String key) {
87
        return Messages.getText(key);
88
    }
89 32269 jpiera
90 33729 cordinyana
    public MakePluginPackageWizard createMakePluginPackageWizard(
91 33743 cordinyana
        File applicationFolder, File pluginsFolder, File installFolder)
92
        throws MakePluginPackageWizardException {
93 34967 nfrancisco
94 33729 cordinyana
        ExtensionPoint ep =
95
            extensionPoints.add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
96
        try {
97 33743 cordinyana
            Object[] args = new Object[3];
98
            args[0] = applicationFolder;
99
            args[1] = pluginsFolder;
100
            args[2] = installFolder;
101 33729 cordinyana
            return (MakePluginPackageWizard) ep.create(
102
                CREATE_INSTALLER_WIZARD_NAME, args);
103
        } catch (Exception e) {
104
            throw new MakePluginPackageWizardException(
105
                "Error creating the wizard", e);
106
        }
107
    }
108 32269 jpiera
109 34925 nfrancisco
    public AbstractInstallPackageWizard createInstallPackageWizard(
110 33743 cordinyana
        File applicationFolder, File pluginsFolder, File installFolder)
111
        throws InstallPackageWizardException {
112 34967 nfrancisco
113 33729 cordinyana
        ExtensionPoint ep =
114
            extensionPoints.add(SWING_INSTALLER_MANAGER_EXTENSION_POINT);
115
        try {
116 33743 cordinyana
            Object[] args = new Object[3];
117
            args[0] = applicationFolder;
118
            args[1] = pluginsFolder;
119
            args[2] = installFolder;
120 34925 nfrancisco
            return (AbstractInstallPackageWizard) ep.create(
121 33729 cordinyana
                EXECUTE_INSTALLER_WIZARD_NAME, args);
122 34967 nfrancisco
123 33729 cordinyana
        } catch (Exception e) {
124
            throw new InstallPackageWizardException(
125
                "Error creating the wizard", e);
126
        }
127
    }
128 32269 jpiera
129 33729 cordinyana
    public void registerMakePluginPackageWizardInstallerCreationWizard(
130 33736 cordinyana
        Class<? extends MakePluginPackageWizard> clazz) {
131 33729 cordinyana
        ExtensionPoint extensionPoint =
132
            extensionPoints.add(SWING_INSTALLER_MANAGER_EXTENSION_POINT, "");
133
        extensionPoint.append(CREATE_INSTALLER_WIZARD_NAME, "", clazz);
134
    }
135 32269 jpiera
136 33736 cordinyana
    public void registerInstallPackageWizard(
137 34925 nfrancisco
        Class<? extends AbstractInstallPackageWizard> clazz) {
138 33729 cordinyana
        ExtensionPoint extensionPoint =
139
            extensionPoints.add(SWING_INSTALLER_MANAGER_EXTENSION_POINT, "");
140
        extensionPoint.append(EXECUTE_INSTALLER_WIZARD_NAME, "", clazz);
141
    }
142 33686 cordinyana
143 33743 cordinyana
    public String getApplicationVersion() {
144
        return applicationVersion;
145 33686 cordinyana
    }
146
147 33743 cordinyana
    public void setApplicationVersion(String gvSIGVersion) {
148
        this.applicationVersion = gvSIGVersion;
149 33686 cordinyana
    }
150
151 34003 cordinyana
    public URL getDefaultDownloadURL() {
152 37417 fdiaz
            if (defaultDownloadURLs.size()<1){
153
                    return null;
154
            }
155
        return defaultDownloadURLs.get(0);
156 34003 cordinyana
    }
157
158 37417 fdiaz
    public void setDefaultDownloadURL(String defaultDownloadURLs) {
159
            String[] urls = defaultDownloadURLs.split(";");
160
            for (int i = 0; i < urls.length; i++) {
161
                        try {
162
                                this.defaultDownloadURLs.add(new URL(urls[i]));
163
                        } catch (MalformedURLException e) {
164
                                logger.info("Malformed URL", e);
165
                        }
166
                }
167
    }
168
169 34003 cordinyana
    public void setDefaultDownloadURL(URL defaultDownloadURL) {
170 37417 fdiaz
            this.defaultDownloadURLs.clear();
171
        this.defaultDownloadURLs.add(defaultDownloadURL);
172 34003 cordinyana
    }
173 37417 fdiaz
174 37498 fdiaz
    public void setDefaultDownloadURL(File defaultDownloadURLs) {
175
            InputStream is;
176
                try {
177
                        is = new FileInputStream(defaultDownloadURLs);
178
                } catch (FileNotFoundException e1) {
179
                        logger.error("Can't open the file "+defaultDownloadURLs.getName(), e1);
180
                        return;
181
                }
182
            BufferedReader in = new BufferedReader(new InputStreamReader(is));
183
            String line = null;
184
            try {
185
                        for (line = in.readLine(); line != null; line = in.readLine()) {
186
                                try {
187
                                        this.addDefaultDownloadURL(new URL(line));
188
                                } catch (MalformedURLException e) {
189
                                        logger.error(
190
                                                        "Error creating the default packages download URL pointing to "
191
                                                                        + line, e);
192
                                }
193
                        }
194
                } catch (IOException e) {
195
                        logger.error(
196
                                        "Error reading the file "
197
                                                        + defaultDownloadURLs.getName(), e);
198
                }
199
    }
200
201 37417 fdiaz
    public void addDefaultDownloadURL(URL url) {
202
        this.defaultDownloadURLs.add(url);
203
    }
204 34003 cordinyana
205 37417 fdiaz
    public List<URL> getDefaultDownloadURLs() {
206
        return this.defaultDownloadURLs;
207
    }
208
209 34005 cordinyana
    public InstallerManager getInstallerManager() {
210
        return InstallerLocator.getInstallerManager();
211
    }
212 35767 jjdelcerro
213
        public JShowPackageStatusAndAskContinuePanel createJShowPackageStatusAndAskContinuePanel(
214
                        List<PackageInfo> packages, String message) {
215
                return new DefaultJShowPackageStatusAndAskContinuePanel(this, packages, message);
216
        }
217 35979 jjdelcerro
218
        public JShowRequiredPackagesAndAskContinuePanel createJShowRequiredPackagesAndAskContinuePanel(
219
                        List<PackageInfo> packages, String message) {
220
                return new DefaultJShowRequiredPackagesAndAskContinuePanel(this, packages, message);
221
        }
222
223 37409 fdiaz
        public JShowUnresolvedDependenciesAndAskContinuePanel createJShowUnresolvedDependenciesAndAskContinuePanel(
224
                        Dependencies dependencies, String message) {
225
                return new DefaultJShowUnresolvedDependenciesAndAskContinuePanel(this, dependencies, message);
226
        }
227
228 37169 nfrancisco
        public JPackageInfoPanel createPackageInfoPanel() {
229
        return new DefaultPackageInfoPanel();
230
        }
231
232
        public JOutputPanel createOutputPanel() {
233
        return new DefaultOutputPanel();
234
    }
235
236
    public JProgressPanel createProgressPanel() {
237
        return new DefaultProgressPanel();
238
    }
239
240 32269 jpiera
}