Revision 41620

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.lib/org.gvsig.installer.lib.api/src/main/java/org/gvsig/installer/lib/api/InstallerManager.java
413 413
	public List<File> getLocalAddonRepositories();
414 414

  
415 415
	/**
416
	 * Adds an addon repository path to the manager list.
416
	 * Adds an addon local repository location to the manager list,
417
         * and register the type of addons for this repository.
417 418
	 * 
418 419
	 * @param path
419 420
	 *            of the repository
421
         * @param type
422
         *            of addons in this repository
420 423
	 */
424
	public void addLocalAddonRepository(File path, String type);
425
        
426
        /**
427
         * @deprecated use addLocalAddonRepository(File path, String type)
428
         */
421 429
	public void addLocalAddonRepository(File path);
422 430

  
431
        /**
432
         * Retrieve the default type of addons for the file.
433
         * Use the registry of local addon repositories to identify the
434
         * type for this file.
435
         * 
436
         * @param file
437
         * @return 
438
         */
439
        public String getDefaultLocalRepositoryType(File file);
440
                
423 441
	/**
424 442
	 * Gets a List of all the addon folders. An addon folder is a folder inside
425 443
	 * any addon repository with a package.info file inside. (addons
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.lib/org.gvsig.installer.lib.impl/src/main/java/org/gvsig/installer/lib/impl/DefaultInstallerManager.java
10 10
 *
11 11
 * This program is distributed in the hope that it will be useful,
12 12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 14
 * GNU General Public License for more details.
15 15
 *
16 16
 * You should have received a copy of the GNU General Public License
17 17
 * along with this program; if not, write to the Free Software
18 18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
19
 * MA 02110-1301, USA.
20 20
 *
21 21
 * For any additional information, do not hesitate to contact us
22 22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
......
25 25
 * AUTHORS (In addition to CIT):
26 26
 * 2010 {Prodevelop}   {Task}
27 27
 */
28

  
29 28
package org.gvsig.installer.lib.impl;
30 29

  
31 30
import java.io.File;
31
import java.io.FileInputStream;
32
import java.io.FileNotFoundException;
32 33
import java.io.IOException;
33 34
import java.io.InputStream;
34 35
import java.net.URL;
35 36
import java.text.MessageFormat;
36 37
import java.util.ArrayList;
38
import java.util.Collection;
37 39
import java.util.HashSet;
40
import java.util.Iterator;
38 41
import java.util.List;
39 42
import java.util.Set;
43
import java.util.logging.Level;
44
import java.util.logging.Logger;
45
import org.apache.commons.lang3.StringUtils;
40 46

  
41 47
import org.gvsig.installer.lib.api.DependenciesCalculator;
42 48
import org.gvsig.installer.lib.api.Dependency;
......
62 68
import org.gvsig.tools.service.AbstractManager;
63 69
import org.gvsig.tools.service.Service;
64 70
import org.gvsig.tools.service.ServiceException;
65
import org.gvsig.tools.service.spi.NotRegisteredException;
66
import org.gvsig.tools.service.spi.ParametersException;
67 71

  
68 72
/**
69 73
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
70 74
 */
71 75
public class DefaultInstallerManager extends AbstractManager implements
72
		InstallerManager {
76
        InstallerManager {
73 77

  
74
	private static final String INSTALLER_MANAGER_EXTENSION_POINT = "InstallerManagerExtensionPoint";
75
	private static final String INSTALLER_CREATION_SERVICE_NAME = "InstallerCreationService";
76
	private static final String INSTALLER_EXECUTION_SERVICE_NAME = "InstallerExecutionService";
77
	private ExtensionPointManager extensionPoints = ToolsLocator
78
			.getExtensionPointManager();
78
    private static class LocalRepositoryLocation {
79 79

  
80
	private String packageSetNameFormat = "gvSIG-desktop-{0}-{1}-{2}-{4}-{5}-{6}-{7}.gvspks";
81
	private String packageNameFormat = "gvSIG-desktop-{0}-{1}-{2}-{4}-{5}-{6}-{7}.gvspkg";
82
	private String packageIndexNameFormat = "gvSIG-desktop-{0}-{1}-{2}-{4}-{5}-{6}-{7}.gvspki";
80
        private File location;
81
        private Set<String> types;
83 82

  
84
	private URL BaseDownloadURL = null;
85
	private Version version = null;
86
	private Set<File> repositoriesPaths = null;
87
	private File defaultRepositoriesPath = null;
83
        public LocalRepositoryLocation(File localtion, String type) {
84
            this.location = localtion;
85
            this.types = new HashSet<String>();
86
            this.addType(type);
87
        }
88 88

  
89
	public DefaultInstallerManager() {
90
		super(new DefaultInstallerProviderManager());
91
		repositoriesPaths = new HashSet<File>();
92
	}
89
        public LocalRepositoryLocation(File localtion) {
90
            this(localtion, null);
91
        }
93 92

  
94
	public String getPackageSetNameFormat() {
95
		return packageSetNameFormat;
96
	}
93
        public void addType(String type) {
94
            if ( !StringUtils.isBlank(type) ) {
95
                this.types.add(type);
96
            }
97
        }
97 98

  
98
	public void setPackageSetNameFormat(String packageSetNameFormat) {
99
		this.packageSetNameFormat = packageSetNameFormat;
100
	}
99
        public void addType(LocalRepositoryLocation location) {
100
            this.types.addAll(location.getTypes());
101
        }
101 102

  
102
	public String getPackageNameFormat() {
103
		return packageNameFormat;
104
	}
103
        public Collection<String> getTypes() {
104
            return this.types;
105
        }
105 106

  
106
	public void setPackageNameFormat(String packageNameFormat) {
107
		this.packageNameFormat = packageNameFormat;
108
	}
107
        public File getLocation() {
108
            return this.location;
109
        }
109 110

  
110
	public String getPackageIndexNameFormat() {
111
		return packageIndexNameFormat;
112
	}
111
        public String getDefaultType() {
112
            if ( this.types.isEmpty() ) {
113
                return null;
114
            }
115
            return this.types.iterator().next();
116
        }
113 117

  
114
	public void setPackageIndexNameFormat(String packageIndexNameFormat) {
115
		this.packageIndexNameFormat = packageIndexNameFormat;
116
	}
118
        public boolean is(File location) {
119
            if ( location.equals(this.location) ) {
120
                return true;
121
            }
122
            return false;
123
        }
117 124

  
118
	public MakePluginPackageService getMakePluginPackageService()
119
			throws MakePluginPackageServiceException {
120
		ExtensionPoint ep = extensionPoints
121
				.add(INSTALLER_MANAGER_EXTENSION_POINT);
122
		try {
123
			Object[] args = new Object[] { this };
124
			return (MakePluginPackageService) ep.create(
125
					INSTALLER_CREATION_SERVICE_NAME, args);
126
		} catch (Exception e) {
127
			throw new MakePluginPackageServiceException(
128
					"Exception creating the installer service to create installers",
129
					e);
130
		}
131
	}
125
        public boolean contains(File file) {
126
            if ( file.getAbsolutePath().startsWith(this.location.getAbsolutePath()) ) {
127
                return true;
128
            }
129
            return false;
130
        }
131
    }
132 132

  
133
	public class InstallerCreationException extends
134
			InstallPackageServiceException {
133
    private static class LocalRepositoriesLocations extends ArrayList<LocalRepositoryLocation> {
135 134

  
136
		private static final long serialVersionUID = 759329820705535873L;
135
        public LocalRepositoryLocation getLocation(File location) {
136
            Iterator<LocalRepositoryLocation> it = super.iterator();
137
            while ( it.hasNext() ) {
138
                LocalRepositoryLocation x = it.next();
139
                if ( x.is(location) ) {
140
                    return x;
141
                }
142
            }
143
            return null;
144
        }
137 145

  
138
		private static final String message = "Error creating the installer service to install plugins";
146
        public boolean add(LocalRepositoryLocation location) {
147
            LocalRepositoryLocation old = this.getLocation(location.getLocation());
148
            if ( old != null ) {
149
                old.addType(location);
150
                return true;
151
            }
152
            return super.add(location);
153
        }
139 154

  
140
		private static final String KEY = "_Error_creating_the_installer_service_to_install_plugins";
155
    }
141 156

  
142
		public InstallerCreationException(Exception e) {
143
			super(message, e, KEY, serialVersionUID);
144
		}
157
    private static final String INSTALLER_MANAGER_EXTENSION_POINT = "InstallerManagerExtensionPoint";
158
    private static final String INSTALLER_CREATION_SERVICE_NAME = "InstallerCreationService";
159
    private static final String INSTALLER_EXECUTION_SERVICE_NAME = "InstallerExecutionService";
160
    private ExtensionPointManager extensionPoints = ToolsLocator
161
            .getExtensionPointManager();
145 162

  
146
	}
163
    private String packageSetNameFormat = "gvSIG-desktop-{0}-{1}-{2}-{4}-{5}-{6}-{7}.gvspks";
164
    private String packageNameFormat = "gvSIG-desktop-{0}-{1}-{2}-{4}-{5}-{6}-{7}.gvspkg";
165
    private String packageIndexNameFormat = "gvSIG-desktop-{0}-{1}-{2}-{4}-{5}-{6}-{7}.gvspki";
147 166

  
148
	public InstallPackageService getInstallPackageService()
149
			throws InstallPackageServiceException {
150
		ExtensionPoint ep = extensionPoints
151
				.add(INSTALLER_MANAGER_EXTENSION_POINT);
152
		try {
153
			Object[] args = new Object[1];
154
			args[0] = this;
155
			return (InstallPackageService) ep.create(
156
					INSTALLER_EXECUTION_SERVICE_NAME, args);
157
		} catch (Exception e) {
158
			throw new InstallerCreationException(e);
159
		}
160
	}
167
    private URL BaseDownloadURL = null;
168
    private Version version = null;
169
    private List<LocalRepositoryLocation> localRepositoriesLocation = null;
170
    private File defaultRepositoryLocation = null;
161 171

  
162
	public void registerMakePluginPackageService(
163
			Class<? extends MakePluginPackageService> clazz) {
164
		ExtensionPoint extensionPoint = extensionPoints.add(
165
				INSTALLER_MANAGER_EXTENSION_POINT, "");
166
		extensionPoint.append(INSTALLER_CREATION_SERVICE_NAME, "", clazz);
167
	}
172
    public DefaultInstallerManager() {
173
        super(new DefaultInstallerProviderManager());
174
        localRepositoriesLocation = new LocalRepositoriesLocations();
175
    }
168 176

  
169
	public void registerInstallPackageService(
170
			Class<? extends InstallPackageService> clazz) {
171
		ExtensionPoint extensionPoint = extensionPoints.add(
172
				INSTALLER_MANAGER_EXTENSION_POINT, "");
173
		extensionPoint.append(INSTALLER_EXECUTION_SERVICE_NAME, "", clazz);
174
	}
177
    public String getPackageSetNameFormat() {
178
        return packageSetNameFormat;
179
    }
175 180

  
176
	public Service getService(DynObject parameters) throws ServiceException {
177
		return null;
178
	}
181
    public void setPackageSetNameFormat(String packageSetNameFormat) {
182
        this.packageSetNameFormat = packageSetNameFormat;
183
    }
179 184

  
180
	public String getPackageSetFileName(PackageInfo info) {
181
		Object[] parameters = getPackageNameFormatParameters(info);
182
		return MessageFormat.format(getPackageSetNameFormat(), parameters);
183
	}
185
    public String getPackageNameFormat() {
186
        return packageNameFormat;
187
    }
184 188

  
185
	public String getPackageFileName(PackageInfo info) {
186
		Object[] parameters = getPackageNameFormatParameters(info);
187
		return MessageFormat.format(getPackageNameFormat(), parameters);
188
	}
189
    public void setPackageNameFormat(String packageNameFormat) {
190
        this.packageNameFormat = packageNameFormat;
191
    }
189 192

  
190
	public String getPackageIndexFileName(PackageInfo info) {
191
		Object[] parameters = getPackageNameFormatParameters(info);
192
		return MessageFormat.format(getPackageIndexNameFormat(), parameters);
193
	}
193
    public String getPackageIndexNameFormat() {
194
        return packageIndexNameFormat;
195
    }
194 196

  
195
	private Object[] getPackageNameFormatParameters(PackageInfo info) {
196
		Object[] parameters = new Object[8];
197
		parameters[PACKAGE_FILE_NAME_FIELDS.GVSIG_VERSION] = info
198
				.getGvSIGVersion();
199
		parameters[PACKAGE_FILE_NAME_FIELDS.NAME] = info.getCode();
200
		parameters[PACKAGE_FILE_NAME_FIELDS.VERSION] = info.getVersion();
201
		parameters[PACKAGE_FILE_NAME_FIELDS.BUILD] = info.getBuild();
202
		parameters[PACKAGE_FILE_NAME_FIELDS.STATE] = info.getState();
203
		parameters[PACKAGE_FILE_NAME_FIELDS.OS] = info.getOperatingSystem();
204
		parameters[PACKAGE_FILE_NAME_FIELDS.ARCH] = info.getArchitecture();
205
		parameters[PACKAGE_FILE_NAME_FIELDS.JVM] = info.getJavaVM();
206
		return parameters;
207
	}
197
    public void setPackageIndexNameFormat(String packageIndexNameFormat) {
198
        this.packageIndexNameFormat = packageIndexNameFormat;
199
    }
208 200

  
209
	public PackageInfo[] getInstalledPackages(File pluginsDirectory)
210
			throws MakePluginPackageServiceException {
211
		MakePluginPackageService service = getMakePluginPackageService();
212
		return service.getInstalledPackages();
213
	}
201
    public MakePluginPackageService getMakePluginPackageService()
202
            throws MakePluginPackageServiceException {
203
        ExtensionPoint ep = extensionPoints
204
                .add(INSTALLER_MANAGER_EXTENSION_POINT);
205
        try {
206
            Object[] args = new Object[]{this};
207
            return (MakePluginPackageService) ep.create(
208
                    INSTALLER_CREATION_SERVICE_NAME, args);
209
        } catch (Exception e) {
210
            throw new MakePluginPackageServiceException(
211
                    "Exception creating the installer service to create installers",
212
                    e);
213
        }
214
    }
214 215

  
215
	public PackageInfo[] getInstalledPackages()
216
			throws MakePluginPackageServiceException {
217
		MakePluginPackageService service = getMakePluginPackageService();
218
		return service.getInstalledPackages();
219
	}
216
    public class InstallerCreationException extends
217
            InstallPackageServiceException {
220 218

  
221
	public String getDefaultPackageFileExtension() {
222
		return "gvspkg";
223
	}
219
        private static final long serialVersionUID = 759329820705535873L;
224 220

  
225
	public String getDefaultPackageSetFileExtension() {
226
		return "gvspks";
227
	}
221
        private static final String message = "Error creating the installer service to install plugins";
228 222

  
229
	public String getDefaultIndexSetFileExtension() {
230
		return "gvspki";
231
	}
223
        private static final String KEY = "_Error_creating_the_installer_service_to_install_plugins";
232 224

  
233
	public String getOperatingSystem() {
234
		String osname = System.getProperty("os.name");
235
		if (osname.toLowerCase().startsWith("linux")) {
236
			return InstallerManager.OS.LINUX;
237
		}
238
		if (osname.toLowerCase().startsWith("window")) {
239
			return InstallerManager.OS.WINDOWS;
240
		}
241
		return osname;
242
	}
225
        public InstallerCreationException(Exception e) {
226
            super(message, e, KEY, serialVersionUID);
227
        }
243 228

  
244
	public String getArchitecture() {
245
		String osarch = System.getProperty("os.arch");
246
		if (osarch.toLowerCase().startsWith("i386")) {
247
			return InstallerManager.ARCH.X86;
248
		}
249
		if (osarch.toLowerCase().startsWith("x86")) {
250
			return InstallerManager.ARCH.X86;
251
		}
252
		if (osarch.toLowerCase().startsWith("amd64")) {
253
			return InstallerManager.ARCH.X86_64;
254
		}
255
		return osarch;
256
	}
229
    }
257 230

  
258
	public Dependency createDependency(PackageInfo packageInfo) {
259
		return new DefaultDependency(packageInfo);
260
	}
231
    public InstallPackageService getInstallPackageService()
232
            throws InstallPackageServiceException {
233
        ExtensionPoint ep = extensionPoints
234
                .add(INSTALLER_MANAGER_EXTENSION_POINT);
235
        try {
236
            Object[] args = new Object[1];
237
            args[0] = this;
238
            return (InstallPackageService) ep.create(
239
                    INSTALLER_EXECUTION_SERVICE_NAME, args);
240
        } catch (Exception e) {
241
            throw new InstallerCreationException(e);
242
        }
243
    }
261 244

  
262
	public Dependency createDependency() {
263
		return new DefaultDependency();
264
	}
245
    public void registerMakePluginPackageService(
246
            Class<? extends MakePluginPackageService> clazz) {
247
        ExtensionPoint extensionPoint = extensionPoints.add(
248
                INSTALLER_MANAGER_EXTENSION_POINT, "");
249
        extensionPoint.append(INSTALLER_CREATION_SERVICE_NAME, "", clazz);
250
    }
265 251

  
266
	public DependenciesCalculator createDependenciesCalculator(
267
			InstallPackageService installService) {
268
		return new DefaultDependenciesCalculator(installService);
269
	}
252
    public void registerInstallPackageService(
253
            Class<? extends InstallPackageService> clazz) {
254
        ExtensionPoint extensionPoint = extensionPoints.add(
255
                INSTALLER_MANAGER_EXTENSION_POINT, "");
256
        extensionPoint.append(INSTALLER_EXECUTION_SERVICE_NAME, "", clazz);
257
    }
270 258

  
271
	public Version createVersion() {
272
		if( version == null ) {
273
			return new DefaultVersion();
274
		}
275
		Version v = null;
276
		try {
277
			v = (Version) version.clone();
278
		} catch (CloneNotSupportedException e) {
279
			// Version clone can't trow exception
280
		}
281
		return v;
282
	}
259
    public Service getService(DynObject parameters) throws ServiceException {
260
        return null;
261
    }
283 262

  
284
	public PackageInfoReader getDefaultPackageInfoReader() {
285
		return new InstallerInfoFileReader();
286
	}
263
    public String getPackageSetFileName(PackageInfo info) {
264
        Object[] parameters = getPackageNameFormatParameters(info);
265
        return MessageFormat.format(getPackageSetNameFormat(), parameters);
266
    }
287 267

  
288
	public PackageInfoWriter getDefaultPackageInfoWriter() {
289
		return new InstallerInfoFileWriter();
290
	}
268
    public String getPackageFileName(PackageInfo info) {
269
        Object[] parameters = getPackageNameFormatParameters(info);
270
        return MessageFormat.format(getPackageNameFormat(), parameters);
271
    }
291 272

  
292
	public MakePackageService createMakePackage(File packageFolder,
293
			PackageInfo packageInfo) {
294
		return new DefaultMakePackageService(this, packageFolder, packageInfo);
295
	}
273
    public String getPackageIndexFileName(PackageInfo info) {
274
        Object[] parameters = getPackageNameFormatParameters(info);
275
        return MessageFormat.format(getPackageIndexNameFormat(), parameters);
276
    }
296 277

  
297
	public PackageInfo createPackageInfo() {
298
		return new DefaultPackageInfo();
299
	}
278
    private Object[] getPackageNameFormatParameters(PackageInfo info) {
279
        Object[] parameters = new Object[8];
280
        parameters[PACKAGE_FILE_NAME_FIELDS.GVSIG_VERSION] = info
281
                .getGvSIGVersion();
282
        parameters[PACKAGE_FILE_NAME_FIELDS.NAME] = info.getCode();
283
        parameters[PACKAGE_FILE_NAME_FIELDS.VERSION] = info.getVersion();
284
        parameters[PACKAGE_FILE_NAME_FIELDS.BUILD] = info.getBuild();
285
        parameters[PACKAGE_FILE_NAME_FIELDS.STATE] = info.getState();
286
        parameters[PACKAGE_FILE_NAME_FIELDS.OS] = info.getOperatingSystem();
287
        parameters[PACKAGE_FILE_NAME_FIELDS.ARCH] = info.getArchitecture();
288
        parameters[PACKAGE_FILE_NAME_FIELDS.JVM] = info.getJavaVM();
289
        return parameters;
290
    }
300 291

  
301
	public PackageInfo createPackageInfo(InputStream stream) throws BaseException  {
302
		PackageInfo pkg = new DefaultPackageInfo();
303
		PackageInfoReader reader = this.getDefaultPackageInfoReader();
304
		reader.read(pkg, stream);
305
		return pkg;
306
	}
292
    public PackageInfo[] getInstalledPackages(File pluginsDirectory)
293
            throws MakePluginPackageServiceException {
294
        MakePluginPackageService service = getMakePluginPackageService();
295
        return service.getInstalledPackages();
296
    }
307 297

  
308
	public URL getDownloadBaseURL() {
309
		return this.BaseDownloadURL;
310
	}
298
    public PackageInfo[] getInstalledPackages()
299
            throws MakePluginPackageServiceException {
300
        MakePluginPackageService service = getMakePluginPackageService();
301
        return service.getInstalledPackages();
302
    }
311 303

  
312
	public String getVersion() {
313
		return this.version.toString();
314
	}
315
	
304
    public String getDefaultPackageFileExtension() {
305
        return "gvspkg";
306
    }
316 307

  
308
    public String getDefaultPackageSetFileExtension() {
309
        return "gvspks";
310
    }
311

  
312
    public String getDefaultIndexSetFileExtension() {
313
        return "gvspki";
314
    }
315

  
316
    public String getOperatingSystem() {
317
        String osname = System.getProperty("os.name");
318
        if ( osname.toLowerCase().startsWith("linux") ) {
319
            return InstallerManager.OS.LINUX;
320
        }
321
        if ( osname.toLowerCase().startsWith("window") ) {
322
            return InstallerManager.OS.WINDOWS;
323
        }
324
        return osname;
325
    }
326

  
327
    public String getArchitecture() {
328
        String osarch = System.getProperty("os.arch");
329
        if ( osarch.toLowerCase().startsWith("i386") ) {
330
            return InstallerManager.ARCH.X86;
331
        }
332
        if ( osarch.toLowerCase().startsWith("x86") ) {
333
            return InstallerManager.ARCH.X86;
334
        }
335
        if ( osarch.toLowerCase().startsWith("amd64") ) {
336
            return InstallerManager.ARCH.X86_64;
337
        }
338
        return osarch;
339
    }
340

  
341
    public Dependency createDependency(PackageInfo packageInfo) {
342
        return new DefaultDependency(packageInfo);
343
    }
344

  
345
    public Dependency createDependency() {
346
        return new DefaultDependency();
347
    }
348

  
349
    public DependenciesCalculator createDependenciesCalculator(
350
            InstallPackageService installService) {
351
        return new DefaultDependenciesCalculator(installService);
352
    }
353

  
354
    public Version createVersion() {
355
        if ( version == null ) {
356
            return new DefaultVersion();
357
        }
358
        Version v = null;
359
        try {
360
            v = (Version) version.clone();
361
        } catch (CloneNotSupportedException e) {
362
            // Version clone can't trow exception
363
        }
364
        return v;
365
    }
366

  
367
    public PackageInfoReader getDefaultPackageInfoReader() {
368
        return new InstallerInfoFileReader();
369
    }
370

  
371
    public PackageInfoWriter getDefaultPackageInfoWriter() {
372
        return new InstallerInfoFileWriter();
373
    }
374

  
375
    public MakePackageService createMakePackage(File packageFolder,
376
            PackageInfo packageInfo) {
377
        return new DefaultMakePackageService(this, packageFolder, packageInfo);
378
    }
379

  
380
    public PackageInfo createPackageInfo() {
381
        return new DefaultPackageInfo();
382
    }
383

  
384
    public PackageInfo createPackageInfo(InputStream stream) throws BaseException {
385
        PackageInfo pkg = new DefaultPackageInfo();
386
        PackageInfoReader reader = this.getDefaultPackageInfoReader();
387
        reader.read(pkg, stream);
388
        return pkg;
389
    }
390

  
391
    public PackageInfo createPackageInfo(File file) throws BaseException {
392
        FileInputStream fis = null;
393
        PackageInfo pkg = null;
394
        try {
395
            fis = new FileInputStream(file);
396
            pkg = this.createPackageInfo(fis);
397
            fis.close();
398
        } catch (Exception ex) {
399

  
400
        } finally {
401
            try {
402
                fis.close();
403
            } catch (IOException ex) {
404
                //
405
            }
406
        }
407
        return pkg;
408
    }
409

  
410
    public URL getDownloadBaseURL() {
411
        return this.BaseDownloadURL;
412
    }
413

  
414
    public String getVersion() {
415
        return this.version.toString();
416
    }
417

  
317 418
    public void setVersion(Version version) {
318 419
        try {
319 420
            this.version = (Version) version.clone();
320 421
        } catch (CloneNotSupportedException e) {
321 422
            // This should not happen
322 423
        }
323
        
424

  
324 425
    }
325 426

  
326 427
    public Version getVersionEx() {
......
331 432
            return null;
332 433
        }
333 434
    }
334
	
335
	public void setDownloadBaseURL(URL url) {
336
		this.BaseDownloadURL = url;
337
	}
338 435

  
339
	public void setVersion(String version) {
340
		if( this.version == null ) {
341
			this.version = new DefaultVersion();
342
		}
343
		this.version.parse(version);
344
	}
436
    public void setDownloadBaseURL(URL url) {
437
        this.BaseDownloadURL = url;
438
    }
345 439

  
346
	public File getDefaultLocalAddonRepository() {
347
		return this.defaultRepositoriesPath;
348
	}
440
    public void setVersion(String version) {
441
        if ( this.version == null ) {
442
            this.version = new DefaultVersion();
443
        }
444
        this.version.parse(version);
445
    }
349 446

  
350
	public void setDefaultLocalAddonRepository(File defaultAddonsRepository) {
351
		this.defaultRepositoriesPath = defaultAddonsRepository;
352
		this.repositoriesPaths.add(defaultAddonsRepository);
353
	}
447
    public File getDefaultLocalAddonRepository() {
448
        return this.defaultRepositoryLocation;
449
    }
354 450

  
355
	public void addLocalAddonRepository(File path) {
356
		repositoriesPaths.add(path);
357
	}
451
    public void setDefaultLocalAddonRepository(File defaultAddonsRepository) {
452
        this.defaultRepositoryLocation = defaultAddonsRepository;
453
        this.localRepositoriesLocation.add(new LocalRepositoryLocation(defaultAddonsRepository));
454
    }
358 455

  
359
	public List<File> getLocalAddonRepositories() {
360
		List<File> l = new ArrayList<File>();
361
		l.addAll(repositoriesPaths);
362
		return l;
363
	}
456
    public void addLocalAddonRepository(File path) {
457
        this.addLocalAddonRepository(path, null);
458
    }
364 459

  
365
	public List<File> getAddonFolders() {
366
		List<File> addonFolders = new ArrayList<File>();
460
    public void addLocalAddonRepository(File path, String type) {
461
        localRepositoriesLocation.add(new LocalRepositoryLocation(path, type));
462
    }
367 463

  
368
		// Para cada directorio en repositoriesPathsList
369
		List<File> localAddonRepositories = this.getLocalAddonRepositories();
370
		for (int i = 0; i < localAddonRepositories.size(); i++) {
371
			File repoPath = localAddonRepositories.get(i);
372
			if (repoPath.isDirectory() && repoPath.exists()) {
373
				File[] folderRepoList = repoPath.listFiles();
464
    public String getDefaultLocalRepositoryType(File file) {
465
        Iterator<LocalRepositoryLocation> it = localRepositoriesLocation.iterator();
466
        while ( it.hasNext() ) {
467
            LocalRepositoryLocation location = it.next();
468
            if ( location.contains(file) ) {
469
                return location.getDefaultType();
470
            }
471
        }
472
        return null;
473
    }
374 474

  
375
				// recorrer los directorios que haya dentro
376
				for (int j = 0; j < folderRepoList.length; j++) {
377
					File addonFolder = folderRepoList[j];
378
					if (addonFolder.isDirectory()) {
379
						File pkginfofile = new File(addonFolder, "package.info");
380
						if (pkginfofile.exists()) {
381
							addonFolders.add(addonFolder);
382
						}
383
					}
475
    public List<File> getLocalAddonRepositories() {
476
        List<File> l = new ArrayList<File>();
477
        Iterator<LocalRepositoryLocation> it = localRepositoriesLocation.iterator();
478
        while ( it.hasNext() ) {
479
            l.add(it.next().getLocation());
480
        }
481
        return l;
482
    }
384 483

  
385
				}
386
			}
387
		}
484
    public List<File> getAddonFolders() {
485
        List<File> addonFolders = new ArrayList<File>();
388 486

  
389
		return addonFolders;
390
	}
487
        // Para cada directorio en repositoriesPathsList
488
        List<File> localAddonRepositories = this.getLocalAddonRepositories();
489
        for ( int i = 0; i < localAddonRepositories.size(); i++ ) {
490
            File repoPath = localAddonRepositories.get(i);
491
            if ( repoPath.isDirectory() && repoPath.exists() ) {
492
                File[] folderRepoList = repoPath.listFiles();
391 493

  
392
	public File getAddonFolder(String code) {
393
		List<File> pluginPaths = this.getAddonFolders();
394
		for (int i = 0; i < pluginPaths.size(); i++) {
395
			if (pluginPaths.get(i).getName().equals(code)) {
396
				return pluginPaths.get(i);
397
			}
398
		}
399
		return null;
400
	}
494
                // recorrer los directorios que haya dentro
495
                for ( int j = 0; j < folderRepoList.length; j++ ) {
496
                    File addonFolder = folderRepoList[j];
497
                    if ( addonFolder.isDirectory() ) {
498
                        File pkginfofile = new File(addonFolder, "package.info");
499
                        if ( pkginfofile.exists() ) {
500
                            addonFolders.add(addonFolder);
501
                        }
502
                    }
401 503

  
402
	public List<byte[]> getPublicKeys() {
403
		byte[] rawkey;
404
		try {
405
			InputStream is = this.getClass().getResourceAsStream("/org/gvsig/installer/lib/keys/key.public");
406
			rawkey = new byte[is.available()];
407
			is.read(rawkey);
408
			is.close();
409
		} catch (IOException e) {
410
			return null;
411
		}
412
		List<byte[]> keys = new ArrayList<byte[]>();
413
		keys.add(rawkey);
414
		return keys;
415
	}
504
                }
505
            }
506
        }
416 507

  
417
	public boolean hasProviderToThisPackage(PackageInfo packageInfo) {
418
		InstallerProviderManager provmgr = (InstallerProviderManager) this.getProviderManager();
419
		try {
420
			return provmgr.getProviderFactory(packageInfo.getType())!=null;
421
		} catch (Exception e) {
422
			return false;
423
		}
424
	}
508
        return addonFolders;
509
    }
425 510

  
511
    public File getAddonFolder(String code) {
512
        List<File> packagePaths = this.getAddonFolders();
513
        for ( int i = 0; i < packagePaths.size(); i++ ) {
514
            try {
515
                File pkgfile = new File(packagePaths.get(i), "package.info");
516
                PackageInfo pkg = this.createPackageInfo(pkgfile);
517
                if ( pkg.getCode().equalsIgnoreCase(code) ) {
518
                    return packagePaths.get(i);
519
                }
520
            } catch (Exception ex) {
521
                
522
            }
523
        }
524
        return null;
525
    }
526

  
527
    public List<byte[]> getPublicKeys() {
528
        byte[] rawkey;
529
        try {
530
            InputStream is = this.getClass().getResourceAsStream("/org/gvsig/installer/lib/keys/key.public");
531
            rawkey = new byte[is.available()];
532
            is.read(rawkey);
533
            is.close();
534
        } catch (IOException e) {
535
            return null;
536
        }
537
        List<byte[]> keys = new ArrayList<byte[]>();
538
        keys.add(rawkey);
539
        return keys;
540
    }
541

  
542
    public boolean hasProviderToThisPackage(PackageInfo packageInfo) {
543
        InstallerProviderManager provmgr = (InstallerProviderManager) this.getProviderManager();
544
        try {
545
            return provmgr.getProviderFactory(packageInfo.getType()) != null;
546
        } catch (Exception e) {
547
            return false;
548
        }
549
    }
550

  
426 551
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/execution/wizard/SelectBundlesWizard.java
34 34
import java.util.List;
35 35

  
36 36
import javax.swing.JPanel;
37
import org.gvsig.gui.beans.wizard.WizardPanelWithLogo;
37 38

  
38 39
import org.gvsig.gui.beans.wizard.panel.NotContinueWizardException;
39 40
import org.gvsig.gui.beans.wizard.panel.OptionPanel;
......
109 110
	}
110 111

  
111 112
	public void updatePanel() {
113
                if(installerExecutionWizard.getSkipBundleSelection() ) {
114
                    installerExecutionWizard.doAction(WizardPanelWithLogo.ACTION_NEXT);
115
                }
112 116
		if (installerExecutionWizard != null) {
113 117
			installerExecutionWizard.setBackButtonEnabled(false);
114 118
		}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/execution/wizard/SelectPackagesWizard.java
254 254
	}
255 255

  
256 256
	public void updatePanel() {
257

  
257
                if(installerExecutionWizard.getSkipBundleSelection() ) {
258
			installerExecutionWizard.setBackButtonEnabled(false);
259
		}
260
            
258 261
		InstallPackageService installerExecutionService = installerExecutionWizard
259 262
				.getInstallerExecutionService();
260 263

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/execution/DefaultInstallPackageWizard.java
65 65
	private int installationMode = ADVANCED_MODE;
66 66
	private boolean askInstallationMode = false;
67 67
	private boolean selectDefaultPackages;
68
        private boolean goToSelectInstalationPackages = false;
68 69

  
69 70
	private WizardPanelWithLogo wizardPanelWithLogo = null;
70 71
	private InstallPackageService installerExecutionService = null;
......
77 78
	private TypicalOrAdvancedWizard typicalOrAdvancedWizard = null;
78 79

  
79 80
	private WizardListenerAdapter wizardListenerAdapter = null;
81
        private boolean skipBundleSelection = false;
80 82

  
81 83
	public DefaultInstallPackageWizard(File applicationFolder,
82 84
			File installFolder) throws InstallPackageServiceException {
......
211 213
		askInstallationMode = true;
212 214
	}
213 215

  
216
        public void setSkipBundleSelection(boolean skipBundleSelection) {
217
            if( skipBundleSelection ) {
218
                this.doAction(WizardPanelWithLogo.ACTION_NEXT);
219
                this.setBackButtonEnabled(false);
220
            }
221
            this.skipBundleSelection = skipBundleSelection;
222
        }
223
        
224
        public boolean getSkipBundleSelection() {
225
            return this.skipBundleSelection;
226
        }
214 227
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/creation/panel/AdvancedModeSelectionPanel.java
98 98
	public boolean isAdvancedModeSelected() {
99 99
		return advancedModeCheckBox.isSelected();
100 100
	}
101
        
102
        public void setAvancedModeSupported(boolean supported) {
103
            this.advancedModeCheckBox.setEnabled(supported);
104
            if( !supported ) {
105
                this.advancedModeCheckBox.setSelected(false);
106
            }
107
            //this.advancedModeTextArea.setEnabled(supported);
108
        }
101 109
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/creation/panel/DefaultOutputPanel.java
70 70
		this.form.usePoolURLRadioButton.setEnabled(false);
71 71
		this.form.createPackageIndexCheckBox.setSelected(false);
72 72
		
73
                this.form.usePoolURLRadioButton.setSelected(true);
74
                
73 75
		this.form.indexFileBrowserButton.addActionListener(new ActionListener() {
74 76
			public void actionPerformed(ActionEvent arg0) {
75 77
				File[] f = showOpenFileDialog("_Select_package_index_file",null);
......
103 105
				}
104 106
			}
105 107
		});
108
		this.form.usePoolURLRadioButton.addActionListener(new ActionListener() {
109
			public void actionPerformed(ActionEvent e) {
110
				if( form.useAbsoluteURLRadioButton.isSelected() ) {
111
					form.packageURLTextField.setEnabled(true);
112
					form.packageURLPoolTextField.setEnabled(false);
113
				} else {
114
					form.packageURLTextField.setEnabled(false);
115
					form.packageURLPoolTextField.setEnabled(true);
116
				}
117
			}
118
		});
106 119
		
120
		
107 121
		setLayout(new BorderLayout());
108 122
		add(this.form, BorderLayout.CENTER);
109 123
	}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/creation/panel/DefaultPackageInfoPanel.java
113 113
	public void panelToPackageInfo(PackageInfo packageInfo) {
114 114
		
115 115
		this.form.getValues(data);
116
		packageInfo.setType( (String) data.getDynValue(PackageInfoTags.TYPE));
116 117
		packageInfo.setCode( (String) data.getDynValue(PackageInfoTags.CODE));
117 118
		packageInfo.setName((String) data.getDynValue(PackageInfoTags.NAME));
118 119
		packageInfo.setDescription((String) data.getDynValue(PackageInfoTags.DESCRIPTION));
......
140 141
	
141 142
	@Override
142 143
	public void packageInfoToPanel(PackageInfo packageInfo) {
144
		this.data.setDynValue(PackageInfoTags.TYPE, packageInfo.getType());
143 145
		this.data.setDynValue(PackageInfoTags.CODE, packageInfo.getCode());
144 146
		this.data.setDynValue(PackageInfoTags.NAME, packageInfo.getName());
145 147
		this.data.setDynValue(PackageInfoTags.VERSION, packageInfo.getVersion());
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/creation/wizard/SelectPlugintoInstallWizard.java
10 10
 *
11 11
 * This program is distributed in the hope that it will be useful,
12 12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 14
 * GNU General Public License for more details.
15 15
 *
16 16
 * You should have received a copy of the GNU General Public License
17 17
 * along with this program; if not, write to the Free Software
18 18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
19
 * MA 02110-1301, USA.
20 20
 *
21 21
 * For any additional information, do not hesitate to contact us
22 22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
......
25 25
 * AUTHORS (In addition to CIT):
26 26
 * 2010 {Prodevelop}   {Task}
27 27
 */
28

  
29 28
package org.gvsig.installer.swing.impl.creation.wizard;
30 29

  
30
import java.io.File;
31 31
import javax.swing.JPanel;
32 32

  
33 33
import org.gvsig.gui.beans.wizard.panel.OptionPanel;
......
41 41
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
42 42
 */
43 43
public class SelectPlugintoInstallWizard extends SelectPluginToInstallPanel
44
		implements OptionPanel {
44
        implements OptionPanel {
45 45

  
46
	private static final long serialVersionUID = 3735333214491700782L;
47
	private DefaultMakePluginPackageWizard installerCreationWizard;
46
    private static final long serialVersionUID = 3735333214491700782L;
47
    private DefaultMakePluginPackageWizard installerCreationWizard;
48 48

  
49
	public SelectPlugintoInstallWizard(
50
			DefaultMakePluginPackageWizard installerCreationWizard) {
51
		super();
52
		this.installerCreationWizard = installerCreationWizard;
53
		installerCreationWizard.setNextButtonEnabled(false);
54
		installerCreationWizard.setBackButtonEnabled(false);
55
	}
49
    public SelectPlugintoInstallWizard(
50
            DefaultMakePluginPackageWizard installerCreationWizard) {
51
        super();
52
        this.installerCreationWizard = installerCreationWizard;
53
        installerCreationWizard.setNextButtonEnabled(false);
54
        installerCreationWizard.setBackButtonEnabled(false);
55
    }
56 56

  
57
	public JPanel getJPanel() {
58
		return this;
59
	}
57
    public JPanel getJPanel() {
58
        return this;
59
    }
60 60

  
61
	public String getPanelTitle() {
62
		return swingInstallerManager.getText("_plugin_to_install");
63
	}
61
    public String getPanelTitle() {
62
        return swingInstallerManager.getText("_plugin_to_install");
63
    }
64 64

  
65
	public void lastPanel() {
66
		// TODO Auto-generated method stub
65
    public void lastPanel() {
66
        // TODO Auto-generated method stub
67 67

  
68
	}
68
    }
69 69

  
70
	public void nextPanel() {
71
		PackageInfo selectedPackageInfo = super.getSelectedInstallerInfo();
72
		String selectedPackageCode = super.getSelectedInstallerInfo().getCode();
73
		InstallerManager manager = InstallerLocator.getInstallerManager();
70
    public void nextPanel() {
71
        PackageInfo selectedPackageInfo = super.getSelectedInstallerInfo();
72
        String selectedPackageCode = super.getSelectedInstallerInfo().getCode();
73
        InstallerManager manager = InstallerLocator.getInstallerManager();
74 74

  
75
		installerCreationWizard.setSelectedPackageInfo(selectedPackageInfo);
76
		installerCreationWizard.setOriginalPluginFolder(manager
77
				.getAddonFolder(selectedPackageCode));
78
		installerCreationWizard.setBackButtonEnabled(true);
79
	}
75
        installerCreationWizard.setSelectedPackageInfo(selectedPackageInfo);
76
        installerCreationWizard.setOriginalPluginFolder(manager
77
                .getAddonFolder(selectedPackageCode));
78
        installerCreationWizard.setBackButtonEnabled(true);
79
    }
80 80

  
81
	public void updatePanel() {
81
    public void updatePanel() {
82 82

  
83
	}
83
    }
84 84

  
85
	/*
86
	 * (non-Javadoc)
87
	 * 
88
	 * @see
89
	 * org.gvsig.installer.swing.impl.creation.panel.SelectPluginToInstallPanel
90
	 * #setSelectedPlugin(java.lang.String)
91
	 */
92
	@Override
93
	public void setSelectedInstallerInfo(PackageInfo installerInfo) {
94
		super.setSelectedInstallerInfo(installerInfo);
95
		installerInfo.setType("plugin");
96
		installerCreationWizard.setNextButtonEnabled(installerInfo != null);
97
	}
85
    /*
86
     * (non-Javadoc)
87
     * 
88
     * @see
89
     * org.gvsig.installer.swing.impl.creation.panel.SelectPluginToInstallPanel
90
     * #setSelectedPlugin(java.lang.String)
91
     */
92
    @Override
93
    public void setSelectedInstallerInfo(PackageInfo installerInfo) {
94
        super.setSelectedInstallerInfo(installerInfo);
95
        InstallerManager installManager = InstallerLocator.getInstallerManager();
96

  
97
        File file = installManager.getAddonFolder(installerInfo.getCode());
98
        if ( file != null ) {
99
            String type = installManager.getDefaultLocalRepositoryType(file);
100
            installerInfo.setType(type);
101
        }
102

  
103
        installerCreationWizard.setNextButtonEnabled(installerInfo != null);
104
    }
98 105
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/creation/wizard/AdvancedModeSelectionWizard.java
109 109
	}
110 110

  
111 111
	public void updatePanel() {
112
		// TODO Auto-generated method stub
113

  
112
            // TODO Auto-generated method stub
113
            PackageInfo pkg = this.installerCreationWizard.getSelectedPackageInfo();
114
            if( pkg.getType().equalsIgnoreCase("plugin") ) {
115
                setAvancedModeSupported(true);
116
            } else {
117
                setAvancedModeSupported(false);
118
            }
114 119
	}
115 120

  
116 121
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/resources/org/gvsig/installer/swing/impl/creation/panel/formPackageinfo.xml
31 31

  
32 32
      <description>Form definition for package.info data</description>
33 33
      <fields>
34
        <field name="code" label="Code" type="string" mandatory="true" order="1" group="General">
34
        <field name="type" label="Type" type="string" mandatory="true" order="1" group="General">
35
          <description>Type of package, plugin, symbol,...</description>
36
          <availableValues>
37
            <value label="Plugin">plugin</value>
38
            <value label="Symbol library">symbols</value>
39
            <value label="Translations">translations</value>
40
            <value label="jCRS - EPSG data base">jCRS_EPSG</value>
41
          </availableValues>
42
        </field>
43

  
44
        <field name="code" label="Code" type="string" mandatory="true" order="2" group="General">
35 45
          <description>Package code. It is usually a lowercase name separated by dots or dashes.</description>
36 46
        </field>
37 47
        
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.api/src/main/java/org/gvsig/installer/swing/api/execution/AbstractInstallPackageWizard.java
121 121
	    return true;
122 122
	}
123 123

  
124
        public abstract void setSkipBundleSelection(boolean skipBundleSelection);
124 125
}
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/Launcher.java
518 518
				.getPluginsFolder();
519 519
		InstallerManager installerManager = InstallerLocator
520 520
				.getInstallerManager();
521
		installerManager.addLocalAddonRepository(defaultAddonsRepository);
522
		installerManager
523
				.setDefaultLocalAddonRepository(defaultAddonsRepository);
521
		installerManager.addLocalAddonRepository(defaultAddonsRepository,"plugin");
522
		installerManager.setDefaultLocalAddonRepository(defaultAddonsRepository);
524 523

  
525 524
		splashWindow.process(translate("SplashWindow.initialize_list_of_addons_installeds"));
526 525
		// ---------------------------------------------
......
741 740

  
742 741
		File defaultAddonsRepository = PluginsLocator.getManager().getPluginsFolder();
743 742

  
744
		installerManager.addLocalAddonRepository(defaultAddonsRepository);
743
		installerManager.addLocalAddonRepository(defaultAddonsRepository,"plugin");
745 744
		installerManager.setDefaultLocalAddonRepository(defaultAddonsRepository);
746 745
		
747 746
		IconThemeManager iconManager = ToolsSwingLocator.getIconThemeManager();
......
749 748
		Iterator<FolderSet.FolderEntry> it = fset.iterator();
750 749
		while( it.hasNext() ) {
751 750
			FolderEntry entry = it.next();
752
			installerManager.addLocalAddonRepository(entry.getFolder());
751
			installerManager.addLocalAddonRepository(entry.getFolder(),"iconset");
753 752
		}
754 753
	}
755 754
	
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/installer/translations/TranslationsInstallerFactory.java
80 80
            providerManager.addProviderFactory(new TranslationsInstallerFactory());
81 81
            
82 82
            File f = new File(pluginsManager.getApplicationFolder(),"i18n");
83
            installerManager.addLocalAddonRepository(f);
83
            installerManager.addLocalAddonRepository(f,PROVIDER_NAME);
84 84
            
85 85
            return Boolean.TRUE;
86 86
        }
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/InitializeApplicationExtension.java
27 27
import java.io.InputStreamReader;
28 28
import java.io.StringWriter;
29 29
import java.util.Properties;
30
import javax.swing.JOptionPane;
31
import org.apache.commons.lang3.BooleanUtils;
30 32

  
31 33
import org.gvsig.andami.IconThemeHelper;
34
import org.gvsig.andami.PluginServices;
32 35
import org.gvsig.andami.PluginsLocator;
33 36
import org.gvsig.andami.PluginsManager;
37
import org.gvsig.andami.actioninfo.ActionInfoManager;
34 38
import org.gvsig.andami.plugins.Extension;
35 39
import org.gvsig.app.ApplicationLocator;
36 40
import org.gvsig.app.ApplicationManager;
......
45 49
import org.gvsig.installer.lib.api.InstallerLocator;
46 50
import org.gvsig.installer.lib.api.InstallerManager;
47 51
import org.gvsig.installer.lib.api.PackageInfo;
52
import org.gvsig.tools.ToolsLocator;
53
import org.gvsig.tools.dynobject.DynObject;
48 54
import org.gvsig.tools.evaluator.sqljep.SQLJEPEvaluator;
55
import org.gvsig.tools.i18n.I18nManager;
49 56
import org.gvsig.tools.service.spi.ServiceManager;
50 57
import org.slf4j.Logger;
51 58
import org.slf4j.LoggerFactory;
......
76 83
        DALLocator.getResourceManager().startResourceCollector(
77 84
                3 * (60 * 1000), // minutes --> miliseconds
78 85
                null);
86
        
87
        PluginsManager pluginManager = PluginsLocator.getManager();
88
        PluginServices plugin = pluginManager.getPlugin(this);
89
        DynObject pluginProperties = plugin.getPluginProperties();
90
        if( BooleanUtils.isTrue((Boolean)pluginProperties.getDynValue("showAddOnmanagerOnStart"))) {
91
            pluginManager.addStartupTask(
92
                    "showAddOnmanagerOnStart", 
93
                    new ShowAddOnManagerOnStart(),
94
                    true, 
95
                    500
96
            );
97
        }
79 98
    }
80 99

  
100
    private static class ShowAddOnManagerOnStart implements Runnable {
101

  
102
        public void run() {
103
            ApplicationManager application = ApplicationLocator.getManager();
104
            I18nManager i18nManager = ToolsLocator.getI18nManager();
105
            PluginsManager pluginManager = PluginsLocator.getManager();
106
            PluginServices plugin = pluginManager.getPlugin(this);
107
            DynObject pluginProperties = plugin.getPluginProperties();
108

  
109
            String msg = i18nManager.getTranslation("_Desea_ir_al_administrador_de_complementos_para_instalar_complementos_adicionales_que_no_estaban_disponibles_durante_el_proceso_de_instalacion");
110
            int resp = application.confirmDialog(
111
                    msg, 
112
                    i18nManager.getTranslation("_Finalizando_proceso_de_instalacion"), 
113
                    JOptionPane.YES_NO_OPTION, 
114
                    JOptionPane.QUESTION_MESSAGE
115
            );
116
            if( resp == JOptionPane.YES_OPTION ) {
117
                ActionInfoManager actionManager = PluginsLocator.getActionInfoManager();
118
                actionManager.execute(
119
                        "tools-addonsmanager",
120
                        new Object[] {"skipBundleSelection"}
121
                );
122
            }
123
            pluginProperties.setDynValue("showAddOnmanagerOnStart", Boolean.FALSE);
124
        }
125
        
126
    }
127
    
81 128
    private void registerIcons() {
82 129
        IconThemeHelper.registerIcon("action", "edit-clear", this);
83 130
        IconThemeHelper.registerIcon("action", "edit-copy", this);
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/resources-plugin/plugin-persistence.def
31 31
        <field name="default_measure_units" type="integer" classOfValue="" mandatory="false">
32 32
          <description></description>
33 33
        </field>
34
        <field name="default_measure_units_reference_system" type="integer" classOfValue="" mandatory="false">
34
        <field name="default_measure_units_reference_system" type="integer" mandatory="false">
35 35
          <description></description>
36 36
        </field>
37 37
        
......
42 42
          <description>Layer order manager currently active</description>
43 43
        </field>
44 44
        
45
        <field name="showAddOnmanagerOnStart" type="boolean" defaultValue="true" mandatory="false">
46
          <description></description>
47
        </field>
48
        
45 49
      </fields>
46 50
    </class>
47 51
  </classes>
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/resources-plugin/i18n/text.properties
26 26
activar=Activar
27 27
activar_regla=Activar regla
28 28
activos=Activos
29
add_connection=A?adir conexi?n
29
add_connection=A\u00f1adir conexi\u00f3n
30 30
add_delete_edit_fields=Puede a\u00f1adir, borrar o renombrar los campos
31 31
add_layer=A\u00f1adir capa
32 32
add_rows=A\u00f1adir filas
......
124 124
change_behind=Posicionar detr\u00e1s
125 125
change_height=Cambiar altura
126 126
change_width=Cambiar anchura
127
choose_connection=Elija conexi?n
127
choose_connection=Elija conexi\u00f3n
128 128
choose_color=Seleccionar color
129 129
choose_table=Elija tabla
130 130
circulo=C\u00edrculo
......
143 143
comentarios=Comentarios
144 144
comenzar_edicion=Comenzar edici\u00c3\u00b3n
145 145
compleja=Compleja
146
conectar_db=Est? intentando conectar a la base de datos cuyos par?metros son
146
conectar_db=Est\u00e1 intentando conectar a la base de datos cuyos par\u00e1metros son
147 147
configurar=Configurar
148 148
configurar_localizador=Configurar localizador
149 149
Configurar_localizador=Configurar localizador ...
150
confirm_remove=?Est? seguro que quiere eliminarlo?
150
confirm_remove=\u00bfEst\u00e1 seguro que quiere eliminarlo?
151 151
confirmar_borrar=\u00bfSeguro que desea borrar el elemento?
152 152
conflicto_de_nombres_de_mapas_al_pegar=Se est\u00e1 intentando pegar mapas cuyos nombres ya existen en el proyecto actual
153 153
conflicto_de_nombres_de_tablas_al_pegar=Se est\u00e1 intentando pegar tablas cuyos nombres ya existen en el proyecto actual
......
155 155
conflito_de_nombres_de_tablas_al_pegar=Conflicto de nombres de tablas al pegar
156 156
connect=Conectar
157 157
connected=Conectado
158
connection_error=Error de conexi?n
158
connection_error=Error de conexi\u00f3n
159 159
connection_name=Nombre de la conexi\u00f3n
160
connection_parameters=Par?metros de la conexi?n
161
connection_params=Par?metros de la conexi?n
160
connection_parameters=Par\u00e1metros de la conexi\u00f3n
161
connection_params=Par\u00e1metros de la conexi\u00f3n
162 162
conservar_escala_visualizacion=Conservar escala de visualizaci\u00f3n
163 163
consulta=Consulta
164 164
Contengan=Contengan
......
291 291
exportar=Exportar
292 292
exportar_pdf=Exportar a pdf
293 293
exportar_ps=Exportar a ps
294
expresion_error=Error en la expresi?n
294
expresion_error=Error en la expresi\u00f3n
295 295
extension=Extensi\u00f3n
296 296
Extent=Extensi\u00f3n
297 297
extents_no_coincidentes=Extensiones no coincidentes
......
318 318
formato_incorrecto=Formato incorrecto
319 319
fuente=Fuente
320 320
General=General
321
geo_field=Campo geom?trico
322
geo_field_not_available=Hubo un problema al obtener campos con geometr?as v?lidos
323
geo_field_error=Error con los campos geom?tricos
321
geo_field=Campo geom\u00e9trico
322
geo_field_not_available=Hubo un problema al obtener campos con geometr\u00edas v\u00e1lidos
323
geo_field_error=Error con los campos geom\u00e9tricos
324 324
geodb_connections=Conexiones a BD espaciales
325 325
geoloc=Geolocalizar
326 326
georeferenciado=Georeferenciado
......
466 466
no_activos=No activos
467 467
No_de_intervalos=N\u00ba de intervalos
468 468
no_es_posible_aplicar_leyenda_vacia=No es posible aplicar la leyenda vac\u00eda.
469
no_hay_campo_seleccionado=No hay ning?n campo de clasificaci?n seleccionado
469
no_hay_campo_seleccionado=No hay ning\u00fan campo de clasificaci\u00f3n seleccionado
470 470
No_ha_sido_posible_realizar_la_operacion=No ha sido posible realizar la operaci\u00f3n
471 471
no_hay_campo_seleccionado=No hay ning\u00fan campo de clasificaci\u00f3n seleccionado
472 472
No_mostrar=No mostrar la capa cuando la escala
......
485 485
none_selected=Ninguno seleccionado
486 486
normal=Normal
487 487
north=Norte
488
not_GVL_save_question=El formato que ha seleccionado no es propio de gvSIG, se puede utilizar para compartir leyendas con otros programas.\nSi, posteriormente, desea importar de nuevo esta leyenda a gvSIG, le recomendamos que utilice el formato GVL\n o de lo contrario podr?a perder alguna de las caracter?sticas de la leyenda original.
488
not_GVL_save_question=El formato que ha seleccionado no es propio de gvSIG, se puede utilizar para compartir leyendas con otros programas.\nSi, posteriormente, desea importar de nuevo esta leyenda a gvSIG, le recomendamos que utilice el formato GVL\n o de lo contrario podr\u00eda perder alguna de las caracter\u00edsticas de la leyenda original.
489 489
Nueva_tabla=Nueva tabla
490 490
nuevo=Nuevo
491 491
Nuevo_conjunto=Nuevo conjunto
......
515 515
Origen_de_datos=Origen de datos
516 516
Origen_de_Datos=Origen de datos\:
517 517
owner=Propietario
518
parse_expresion_error=Error al evaluar la expresi?n.
518
parse_expresion_error=Error al evaluar la expresi\u00f3n.
519 519
paste=Pegar
520 520
paste_elements=Pegar elementos
521 521
path=Ruta
......
640 640
seleccione_tabla_origen=Seleccione la tabla origen de la join
641 641
selection_color=Color de la selecci\u00f3n
642 642
selection_up=Mover arriba la selecci\u00f3n
643
semantic_expresion_error=Error sem?ntico en la expresi?n.
643
semantic_expresion_error=Error sem\u00e1ntico en la expresi\u00f3n.
644 644
separator=Separador
645 645
server_url=Url del servidor
646 646
Servidor=Servidor
647 647
Shapefile=Shapefile
648
Show_grid=Mostrar cuadr?cula
648
Show_grid=Mostrar cuadr\u00edcula
649 649
show_this_dialog_next_startup=Mostrar este di\u00e1logo la pr\u00f3xima vez
650 650
si=s\u00ed
651 651
siempre=Siempre
......
664 664
start_edition=Comenzar edici\u00f3n
665 665
statistics=Estad\u00edsticas
666 666
sorter=Ordenado
667
specify_table_settings=Especificaci?n de la capa
668
sql_restriction=Restricci?n SQL
667
specify_table_settings=Especificaci\u00f3n de la capa
668
sql_restriction=Restricci\u00f3n SQL
669 669
stop_edition=Terminar edici\u00f3n
670 670
Style=Estilo
671 671
Subir_capa=Subir capa
......
742 742
Visualizacion=Visualizaci\u00f3n
743 743
visualizar_cuadricula=Visualizar malla
744 744
warning=Aviso
745
working_area=Zona de inter?s
745
working_area=Zona de inter\u00e9s
746 746
xmax=xmax
747 747
xmin=xmin
748 748
Yardas=Yardas
......
765 765
Zoom_Real=Zoom 1\:1
766 766
Zoom_Select=Zoom a lo seleccionado
767 767

  
768
categories=Categor?as
768
categories=Categor\u00edas
769 769
cannot_apply_to_a_non_polygon_layer=No puede aplicarse a una capa no poligonal
770 770
looks_like_too_low_value_for_this_field_may_cause_system_to_run_slow=Parece un valor para el punto demasiado bajo, puede causar que el sistema responda muy lentamente.
771 771
in_layer=en capa
772 772
could_not_setup_legend=No se pudo establecer la leyenda
773 773
labeling_field=Campo de etiquetado
774
dot_size=Tama?o de punto
774
dot_size=Tama\u00f1o de punto
775 775
dot_value=Valor del punto
776 776
outline_color=Color del borde
777 777
densities=Densidades
......
781 781
Defines_a_dot_density_symbol_based_on_a_field_value=Define una leyenda de densidad de puntos basada en el valor de un determinado campo.
782 782
dot_density=Densidad de puntos
783 783
features=Objetos
784
preview=Previsualizaci?n
784
preview=Previsualizaci\u00f3n
785 785
quantities=Cantidades
786
choose_symbol=Seleccionar s?mbolo
786
choose_symbol=Seleccionar s\u00edmbolo
787 787
legend=Leyenda
788
label_text_in_the_TOC=Etiqueta que aparecer? en el TOC
789
exception_cloning_legend=Excepci?n clonando leyenda.
790
character_marker=Marcador de car?cter
791
character_marker_symbol=S?mbolo de Marcador de car?cter
788
label_text_in_the_TOC=Etiqueta que aparecer\u00e1 en el TOC
789
exception_cloning_legend=Excepci\u00f3n clonando leyenda.
790
character_marker=Marcador de car\u00e1cter
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff