Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.framework / org.gvsig.andami / src / main / java / org / gvsig / andami / impl / DefaultArguments.java @ 43328

History | View | Annotate | Download (2.14 KB)

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
}