~ubuntu-branches/ubuntu/oneiric/tuxguitar/oneiric

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/gui/util/ArgumentParser.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mto: (5.1.2 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20080619003030-h719szrhsngou7c6
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.herac.tuxguitar.gui.util;
 
2
 
 
3
import java.io.File;
 
4
import java.net.URL;
 
5
 
 
6
import org.herac.tuxguitar.gui.TuxGuitar;
 
7
import org.herac.tuxguitar.util.TGVersion;
 
8
 
 
9
public class ArgumentParser {
 
10
        private static final String[] OPTION_HELP = new String[]{"-h","--help"};
 
11
        private static final String[] OPTION_VERSION = new String[]{"-v","--version"};
 
12
        private static final String[] OPTION_JRE_INFO = new String[]{"-i","--system-info"};
 
13
        
 
14
        private String[] arguments;
 
15
        private boolean processAndExit;
 
16
        private URL url;
 
17
        
 
18
        public ArgumentParser(String[] arguments){
 
19
                this.arguments = arguments;
 
20
                this.processAndExit = false;
 
21
                this.parse();
 
22
        }
 
23
        
 
24
        private void parse(){
 
25
                try{
 
26
                        checkHelp();
 
27
                        checkVersion();
 
28
                        checkSystemInfo();
 
29
                        if(!processAndExit()){
 
30
                                checkProperties();
 
31
                                checkURL();
 
32
                        }
 
33
                }catch(Throwable throwable){
 
34
                        throwable.printStackTrace();
 
35
                }
 
36
        }
 
37
        
 
38
        private void checkHelp(){
 
39
                for(int i = 0;i < this.arguments.length;i++){
 
40
                        for(int j = 0;j < OPTION_HELP.length;j++){
 
41
                                if(this.arguments[i].equals(OPTION_HELP[j])){
 
42
                                        print("usage: TuxGuitar [file]");
 
43
                                        print("Options:");
 
44
                                        print(" -h, --help                 Show help options");
 
45
                                        print(" -v, --version              Show version information and exit");
 
46
                                        print(" -i, --system-info          Show the JVM system information");
 
47
                                        print(" -D<name>=<value>           Set a JVM system property");
 
48
                                        
 
49
                                        this.processAndExit = true;
 
50
                                }
 
51
                        }
 
52
                }
 
53
        }
 
54
        
 
55
        private void checkVersion(){
 
56
                for(int i = 0;i < this.arguments.length;i++){
 
57
                        for(int j = 0;j < OPTION_VERSION.length;j++){
 
58
                                if(this.arguments[i].equals(OPTION_VERSION[j])){
 
59
                                        print(TuxGuitar.APPLICATION_NAME + " - " + TGVersion.CURRENT.getVersion());
 
60
                                        
 
61
                                        this.processAndExit = true;
 
62
                                }
 
63
                        }
 
64
                }
 
65
        }
 
66
        
 
67
        private void checkSystemInfo(){
 
68
                for(int i = 0;i < this.arguments.length;i++){
 
69
                        for(int j = 0;j < OPTION_JRE_INFO.length;j++){
 
70
                                if(this.arguments[i].equals(OPTION_JRE_INFO[j])){
 
71
                                        print("System Info:");
 
72
                                        print("-> OS-Name:           " + System.getProperty("os.name"));
 
73
                                        print("-> OS-Arch:           " + System.getProperty("os.arch"));
 
74
                                        print("-> OS-Version:        " + System.getProperty("os.version"));
 
75
                                        print("-> JVM-Name:          " + System.getProperty("java.vm.name"));
 
76
                                        print("-> JVM-Version:       " + System.getProperty("java.vm.version"));
 
77
                                        print("-> JVM-Vendor:        " + System.getProperty("java.vm.vendor"));
 
78
                                        print("-> Java-Version:      " + System.getProperty("java.version"));
 
79
                                        print("-> Java-Vendor:       " + System.getProperty("java.vendor"));
 
80
                                        print("-> Java-Home:         " + System.getProperty("java.home"));
 
81
                                        print("-> Java-Class-Path:   " + System.getProperty("java.class.path"));
 
82
                                        print("-> Java-Library-Path: " + System.getProperty("java.library.path"));
 
83
                                        
 
84
                                        this.processAndExit = true;
 
85
                                }
 
86
                        }
 
87
                }
 
88
        }
 
89
        
 
90
        private void checkProperties(){
 
91
                for(int i = 0;i < this.arguments.length;i++){
 
92
                        if(this.arguments[i].indexOf("-D") == 0 && this.arguments[i].indexOf("=") > 0){
 
93
                                String[] property = this.arguments[i].substring(2).split("=");
 
94
                                if( property != null && property.length == 2 ){
 
95
                                        System.setProperty( property[0],property[1]);
 
96
                                }
 
97
                        }
 
98
                }
 
99
        }
 
100
        
 
101
        private void checkURL(){
 
102
                for(int i = 0;i < this.arguments.length;i++){
 
103
                        if(makeURL(this.arguments[i])){
 
104
                                return;
 
105
                        }
 
106
                }
 
107
        }
 
108
        
 
109
        private boolean makeURL(String spec){
 
110
                try{
 
111
                        File file = new File(spec);
 
112
                        if(file.exists()){
 
113
                                this.url = file.toURI().toURL();
 
114
                        }else{
 
115
                                this.url = new URL(spec);
 
116
                        }
 
117
                }catch(Throwable throwable){
 
118
                        this.url = null;
 
119
                }
 
120
                return (this.url != null);
 
121
        }
 
122
        
 
123
        public boolean processAndExit(){
 
124
                return this.processAndExit;
 
125
        }
 
126
        
 
127
        public URL getURL() {
 
128
                return this.url;
 
129
        }
 
130
        
 
131
        protected void print(String s){
 
132
                print(s, true);
 
133
        }
 
134
        
 
135
        protected void print(String s, boolean ignoreNull){
 
136
                if(!ignoreNull || s != null){
 
137
                        System.out.println( s );
 
138
                }
 
139
        }
 
140
        
 
141
}