Revision 43328
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/impl/DefaultArguments.java | ||
---|---|---|
1 |
package org.gvsig.andami.impl; |
|
2 |
|
|
3 |
import java.util.ArrayList; |
|
4 |
import java.util.Collections; |
|
5 |
import java.util.HashMap; |
|
6 |
import java.util.Iterator; |
|
7 |
import java.util.List; |
|
8 |
import java.util.Map; |
|
9 |
import org.gvsig.andami.Arguments; |
|
10 |
|
|
11 |
public class DefaultArguments implements Arguments { |
|
12 |
|
|
13 |
private final String[] args; |
|
14 |
protected Map<String, String> flags; |
|
15 |
protected List<String> parameters; |
|
16 |
|
|
17 |
public DefaultArguments(String args[]) { |
|
18 |
this.args = args; |
|
19 |
this.flags = new HashMap<>(); |
|
20 |
this.parameters = new ArrayList<>(); |
|
21 |
this.parse(); |
|
22 |
} |
|
23 |
|
|
24 |
private void parse() { |
|
25 |
String name; |
|
26 |
String value; |
|
27 |
boolean acceptFlags = true; |
|
28 |
for( String arg : args ) { |
|
29 |
if( acceptFlags ) { |
|
30 |
if( arg.equals("--") ) { |
|
31 |
acceptFlags = false; |
|
32 |
continue; |
|
33 |
} |
|
34 |
if( arg.startsWith("--") ) { |
|
35 |
int n = arg.indexOf("="); |
|
36 |
if( n < 0 ) { |
|
37 |
name = arg.substring(2); |
|
38 |
value = "true"; |
|
39 |
} else { |
|
40 |
name = arg.substring(2, n); |
|
41 |
value = arg.substring(n + 1); |
|
42 |
} |
|
43 |
this.flags.put(name, value); |
|
44 |
} else { |
|
45 |
this.parameters.add(arg); |
|
46 |
} |
|
47 |
} else { |
|
48 |
this.parameters.add(arg); |
|
49 |
} |
|
50 |
} |
|
51 |
} |
|
52 |
|
|
53 |
@Override |
|
54 |
public String get(String name) { |
|
55 |
return this.flags.get(name); |
|
56 |
} |
|
57 |
|
|
58 |
@Override |
|
59 |
public boolean contains(String name) { |
|
60 |
return this.flags.containsKey(name); |
|
61 |
} |
|
62 |
|
|
63 |
@Override |
|
64 |
public List<String> parameters() { |
|
65 |
return Collections.unmodifiableList(parameters); |
|
66 |
} |
|
67 |
|
|
68 |
@Override |
|
69 |
public Map<String, String> flags() { |
|
70 |
return Collections.unmodifiableMap(flags); |
|
71 |
} |
|
72 |
|
|
73 |
@Override |
|
74 |
public int size() { |
|
75 |
return this.parameters.size(); |
|
76 |
} |
|
77 |
|
|
78 |
@Override |
|
79 |
public String get(int n) { |
|
80 |
return this.parameters.get(n); |
|
81 |
} |
|
82 |
|
|
83 |
@Override |
|
84 |
public Iterator<String> iterator() { |
|
85 |
return this.parameters.iterator(); |
|
86 |
} |
|
87 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/impl/DefaultPluginsManager.java | ||
---|---|---|
32 | 32 |
import java.util.Collections; |
33 | 33 |
import java.util.Date; |
34 | 34 |
import java.util.Enumeration; |
35 |
import java.util.HashMap; |
|
36 | 35 |
import java.util.Iterator; |
37 | 36 |
import java.util.List; |
38 | 37 |
|
39 | 38 |
import javax.swing.SwingUtilities; |
40 | 39 |
|
41 | 40 |
import org.apache.commons.io.FileUtils; |
42 |
import org.jfree.util.Log;
|
|
41 |
import org.gvsig.andami.Arguments;
|
|
43 | 42 |
|
44 | 43 |
import org.gvsig.andami.Launcher; |
45 | 44 |
import org.gvsig.andami.PluginServices; |
... | ... | |
47 | 46 |
import org.gvsig.andami.Utilities; |
48 | 47 |
import org.gvsig.andami.config.generate.AndamiConfig; |
49 | 48 |
import org.gvsig.andami.config.generate.Plugin; |
50 |
import org.gvsig.andami.firewall.DefaultFirewallConfiguration; |
|
51 | 49 |
import org.gvsig.andami.firewall.FirewallConfiguration; |
52 | 50 |
import org.gvsig.andami.plugins.ExclusiveUIExtension; |
53 | 51 |
import org.gvsig.andami.plugins.Extension; |
... | ... | |
125 | 123 |
private List<File> pluginsFolders = null; |
126 | 124 |
private List<Task> startupTasks = new ArrayList<Task>(); |
127 | 125 |
private List<Task> shutdownTasks = new ArrayList<Task>(); |
128 |
|
|
126 |
|
|
129 | 127 |
public ExclusiveUIExtension getExclusiveUIExtension() { |
130 | 128 |
return PluginServices.getExclusiveUIExtension(); |
131 | 129 |
} |
... | ... | |
426 | 424 |
public boolean desktopOpen(File file){ |
427 | 425 |
return DesktopApi.open(file); |
428 | 426 |
} |
427 |
|
|
428 |
@Override |
|
429 |
public Arguments getArguments() { |
|
430 |
return Launcher.getArguments(); |
|
431 |
} |
|
429 | 432 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/Launcher.java | ||
---|---|---|
113 | 113 |
import org.gvsig.andami.config.generate.Andami; |
114 | 114 |
import org.gvsig.andami.config.generate.AndamiConfig; |
115 | 115 |
import org.gvsig.andami.config.generate.Plugin; |
116 |
import org.gvsig.andami.impl.DefaultArguments; |
|
116 | 117 |
import org.gvsig.andami.impl.UnsavedDataException; |
117 | 118 |
import org.gvsig.andami.messages.Messages; |
118 | 119 |
import org.gvsig.andami.messages.NotificationManager; |
... | ... | |
202 | 203 |
*/ |
203 | 204 |
public class Launcher { |
204 | 205 |
|
206 |
private static Arguments arguments; |
|
207 |
|
|
205 | 208 |
public static abstract class MapWithAlias<Item> extends HashMap<String, Item> { |
206 | 209 |
|
207 | 210 |
private HashMap<String, String> aliases = new HashMap<String, String>(); |
... | ... | |
447 | 450 |
} |
448 | 451 |
return deprecatedPluginNames; |
449 | 452 |
} |
450 |
|
|
453 |
|
|
454 |
public static Arguments getArguments() { |
|
455 |
return arguments; |
|
456 |
} |
|
457 |
|
|
451 | 458 |
public void doMain(String[] args) throws Exception { |
452 | 459 |
|
453 | 460 |
if (args.length < 1) { |
454 |
System.err.println("Usage: Launcher appName plugins-directory [language=locale]"); |
|
461 |
System.err.println("Usage: Launcher appName plugins-directory [--language=locale]");
|
|
455 | 462 |
System.err.println("No arguments specified."); |
456 | 463 |
System.err.println("Use default arguments 'gvSIG gvSIG/extensiones'"); |
457 | 464 |
args = new String[]{"gvSIG", "gvSIG/extensiones"}; |
458 | 465 |
} |
466 |
arguments = new DefaultArguments(args); |
|
459 | 467 |
|
460 | 468 |
initializeApp(args, null); |
461 | 469 |
|
... | ... | |
797 | 805 |
} else { |
798 | 806 |
appName = args[0]; |
799 | 807 |
} |
808 |
// Hacemos visibles los argumentos como una propiedad est�tica |
|
809 |
// de plugin services para quien lo quiera usar (por ejemplo, para |
|
810 |
// cargar un proyecto por l�nea de comandos) |
|
811 |
PluginServices.setArguments(args); |
|
812 |
|
|
800 | 813 |
getOrCreateConfigFolder(); |
801 | 814 |
configureLogging(appName, applicationClasifier); |
802 | 815 |
if (!validJVM()) { |
... | ... | |
814 | 827 |
loadAndamiConfig(args[1]); |
815 | 828 |
} |
816 | 829 |
|
817 |
// Hacemos visibles los argumentos como una propiedad est�tica |
|
818 |
// de plugin services para quien lo quiera usar (por ejemplo, para |
|
819 |
// cargar un proyecto por l�nea de comandos) |
|
820 |
PluginServices.setArguments(args); |
|
830 |
configureLocales(); |
|
821 | 831 |
|
822 |
configureLocales(args); |
|
823 |
|
|
824 | 832 |
logger.info("Configure LookAndFeel"); |
825 | 833 |
configureLookAndFeel(); |
826 | 834 |
} |
... | ... | |
1152 | 1160 |
} |
1153 | 1161 |
|
1154 | 1162 |
private boolean validJVM() { |
1155 |
if (!SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_4)) {
|
|
1156 |
logger.warn("gvSIG requires Java version 1.4 or higher.");
|
|
1163 |
if (!SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_6)) {
|
|
1164 |
logger.warn("gvSIG requires Java version 1.6 or higher.");
|
|
1157 | 1165 |
logger.warn("The Java HOME is '" + SystemUtils.getJavaHome().getAbsolutePath() + "'."); |
1158 | 1166 |
return false; |
1159 | 1167 |
} |
... | ... | |
3092 | 3100 |
* Swing are configured. |
3093 | 3101 |
* |
3094 | 3102 |
*/ |
3095 |
private static void configureLocales(String[] args) {
|
|
3103 |
private static void configureLocales() { |
|
3096 | 3104 |
// Configurar el locale |
3097 | 3105 |
String localeStr = null; |
3098 | 3106 |
|
3099 |
localeStr = PluginServices.getArgumentByName("language"); |
|
3100 |
if (localeStr == null) { |
|
3107 |
if( getArguments().contains("language") ) { |
|
3108 |
localeStr = getArguments().get("language"); |
|
3109 |
} else { |
|
3101 | 3110 |
localeStr = andamiConfig.getLocaleLanguage(); |
3102 | 3111 |
} |
3103 | 3112 |
localeStr = normalizeLanguageCode(localeStr); |
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/PluginServices.java | ||
---|---|---|
555 | 555 |
* ' -language=en ' |
556 | 556 |
* |
557 | 557 |
* @return String The value of the argument |
558 |
* @deprecated use PluginManager.getArguments |
|
558 | 559 |
*/ |
559 | 560 |
public static String getArgumentByName(String name) { |
560 | 561 |
for (int i = 2; i < PluginServices.arguments.length; i++) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/Arguments.java | ||
---|---|---|
1 |
package org.gvsig.andami; |
|
2 |
|
|
3 |
import java.util.Iterator; |
|
4 |
import java.util.List; |
|
5 |
import java.util.Map; |
|
6 |
|
|
7 |
public interface Arguments extends Iterable<String> { |
|
8 |
|
|
9 |
public String get(String name); |
|
10 |
|
|
11 |
public boolean contains(String name); |
|
12 |
|
|
13 |
public Map<String,String> flags(); |
|
14 |
|
|
15 |
public List<String> parameters(); |
|
16 |
|
|
17 |
public int size(); |
|
18 |
|
|
19 |
public String get(int n); |
|
20 |
|
|
21 |
public Iterator<String> iterator(); |
|
22 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/PluginsManager.java | ||
---|---|---|
303 | 303 |
public boolean desktopOpen(File file); |
304 | 304 |
|
305 | 305 |
|
306 |
public Arguments getArguments(); |
|
306 | 307 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/ProjectManager.java | ||
---|---|---|
84 | 84 |
return ((ProjectExtension) PluginServices |
85 | 85 |
.getExtension(ProjectExtension.class)).getProject(); |
86 | 86 |
} |
87 |
|
|
88 |
public void setCurrentProject(Project project) { |
|
89 |
((ProjectExtension) PluginServices.getExtension(ProjectExtension.class)).setProject(project); |
|
90 |
} |
|
87 | 91 |
|
88 | 92 |
public ProjectWindow getCurrentProjectWindow() { |
89 | 93 |
ProjectExtension projectExtension = |
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/InitializeApplicationExtension.java | ||
---|---|---|
104 | 104 |
500 |
105 | 105 |
); |
106 | 106 |
} |
107 |
pluginManager.addStartupTask("OpenLayerOnStart", new OpenLayerOnStart(), true, 0); |
|
107 | 108 |
|
108 | 109 |
} |
109 | 110 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/OpenLayerOnStart.java | ||
---|---|---|
1 |
package org.gvsig.app.extension; |
|
2 |
|
|
3 |
import java.awt.GridBagConstraints; |
|
4 |
import java.beans.PropertyVetoException; |
|
5 |
import java.io.File; |
|
6 |
import java.util.ArrayList; |
|
7 |
import java.util.List; |
|
8 |
import org.apache.commons.io.FilenameUtils; |
|
9 |
import org.apache.commons.lang3.StringUtils; |
|
10 |
import org.cresques.cts.IProjection; |
|
11 |
import org.gvsig.andami.Arguments; |
|
12 |
import org.gvsig.andami.PluginsLocator; |
|
13 |
import org.gvsig.andami.PluginsManager; |
|
14 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
|
15 |
import org.gvsig.app.ApplicationLocator; |
|
16 |
import org.gvsig.app.ApplicationManager; |
|
17 |
import org.gvsig.app.project.Project; |
|
18 |
import org.gvsig.app.project.ProjectManager; |
|
19 |
import org.gvsig.app.project.documents.DocumentManager; |
|
20 |
import org.gvsig.app.project.documents.view.ViewDocument; |
|
21 |
import org.gvsig.app.project.documents.view.ViewManager; |
|
22 |
import org.gvsig.app.project.documents.view.gui.IView; |
|
23 |
import org.gvsig.fmap.dal.DALLocator; |
|
24 |
import org.gvsig.fmap.dal.DataManager; |
|
25 |
import org.gvsig.fmap.dal.DataServerExplorer; |
|
26 |
import org.gvsig.fmap.dal.DataServerExplorerParameters; |
|
27 |
import org.gvsig.fmap.dal.DataStore; |
|
28 |
import org.gvsig.fmap.dal.DataStoreParameters; |
|
29 |
import org.gvsig.fmap.dal.DataTypes; |
|
30 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemFileFilter; |
|
31 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer; |
|
32 |
import org.gvsig.fmap.mapcontext.MapContextLocator; |
|
33 |
import org.gvsig.fmap.mapcontext.MapContextManager; |
|
34 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
|
35 |
import org.gvsig.tools.dynobject.DynField; |
|
36 |
import org.slf4j.Logger; |
|
37 |
import org.slf4j.LoggerFactory; |
|
38 |
|
|
39 |
public class OpenLayerOnStart implements Runnable { |
|
40 |
|
|
41 |
private static final Logger logger = LoggerFactory.getLogger(OpenLayerOnStart.class); |
|
42 |
|
|
43 |
@Override |
|
44 |
public void run() { |
|
45 |
PluginsManager PluginManager = PluginsLocator.getManager(); |
|
46 |
DataManager dataManager = DALLocator.getDataManager(); |
|
47 |
ApplicationManager application = ApplicationLocator.getManager(); |
|
48 |
ProjectManager projectManager = application.getProjectManager(); |
|
49 |
DocumentManager viewManager = projectManager.getDocumentManager(ViewManager.TYPENAME); |
|
50 |
MapContextManager mapContextManager = MapContextLocator.getMapContextManager(); |
|
51 |
Project project = application.getProjectManager().getCurrentProject(); |
|
52 |
|
|
53 |
Arguments args = PluginManager.getArguments(); |
|
54 |
List<String> params = new ArrayList<>(args.parameters()); |
|
55 |
params.remove(0); |
|
56 |
params.remove(0); |
|
57 |
for( String param : params ) { |
|
58 |
if( !StringUtils.isEmpty(param) && param.endsWith(Project.FILE_EXTENSION) ) { |
|
59 |
try { |
|
60 |
File f = new File(param); |
|
61 |
application.getUIManager().closeAllWindows(); |
|
62 |
project = projectManager.createProject(); |
|
63 |
project.loadState(f); |
|
64 |
projectManager.setCurrentProject(project); |
|
65 |
} catch (Throwable th) { |
|
66 |
logger.warn("Can't load project '" + param + "'.", th); |
|
67 |
} |
|
68 |
break; |
|
69 |
} |
|
70 |
} |
|
71 |
|
|
72 |
ViewDocument viewDoc = null; |
|
73 |
FilesystemServerExplorer explorer = null; |
|
74 |
FilesystemFileFilter filter = null; |
|
75 |
IProjection proj = null; |
|
76 |
for( String param : params ) { |
|
77 |
try { |
|
78 |
if( FilenameUtils.isExtension(param, "gvproj") ) { |
|
79 |
continue; |
|
80 |
} |
|
81 |
if( explorer == null ) { |
|
82 |
DataServerExplorerParameters explorerparams = dataManager.createServerExplorerParameters(FilesystemServerExplorer.NAME); |
|
83 |
explorer = (FilesystemServerExplorer) dataManager.openServerExplorer(FilesystemServerExplorer.NAME, explorerparams); |
|
84 |
filter = explorer.getFilter(DataServerExplorer.MODE_GEOMETRY | DataServerExplorer.MODE_RASTER, "All formats"); |
|
85 |
} |
|
86 |
|
|
87 |
File f = new File(param); |
|
88 |
if( filter.accept(f) ) { |
|
89 |
if( viewDoc == null ) { |
|
90 |
viewDoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME); |
|
91 |
if( viewDoc==null || !viewDoc.getMapContext().getLayers().isEmpty() ) { |
|
92 |
application.getUIManager().closeAllWindows(); |
|
93 |
viewDoc = (ViewDocument) viewManager.createDocument(); |
|
94 |
project.addDocument(viewDoc); |
|
95 |
} |
|
96 |
proj = viewDoc.getMapContext().getProjection(); |
|
97 |
IView viewWindow = (IView) viewManager.getMainWindow(viewDoc); |
|
98 |
application.getUIManager().addWindow(viewWindow, GridBagConstraints.CENTER); |
|
99 |
try { |
|
100 |
application.getUIManager().setMaximum((IWindow) viewWindow, true); |
|
101 |
} catch (PropertyVetoException e) { |
|
102 |
|
|
103 |
} |
|
104 |
} |
|
105 |
DataStoreParameters storeParams = explorer.createStoreParameters(f); |
|
106 |
// Buscamos por el parametro de la proyeccion |
|
107 |
// que sean obligatorios y est?n a null |
|
108 |
// y le ponemos la proyeccion de la vista |
|
109 |
DynField[] fields = storeParams.getDynClass().getDynFields(); |
|
110 |
for (DynField field : fields) { |
|
111 |
if (field.getType() == DataTypes.CRS && field.isMandatory()) { |
|
112 |
if (storeParams.getDynValue(field.getName()) == null) { |
|
113 |
storeParams.setDynValue(field.getName(), proj); |
|
114 |
} |
|
115 |
} |
|
116 |
} |
|
117 |
DataStore store = dataManager.openStore(storeParams.getDataStoreName(), storeParams); |
|
118 |
FLayer layer = mapContextManager.createLayer(store.getName(), store); |
|
119 |
viewDoc.getMapContext().getLayers().add(layer); |
|
120 |
} |
|
121 |
} catch (Throwable th) { |
|
122 |
logger.warn("Can't load layer '" + param + "'.", th); |
|
123 |
} |
|
124 |
} |
|
125 |
|
|
126 |
} |
|
127 |
} |
Also available in: Unified diff