Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.impl / src / main / java / org / gvsig / expressionevaluator / impl / javascripting / CosaScriptEngineFactory.java @ 44389

History | View | Annotate | Download (3.38 KB)

1
package org.gvsig.expressionevaluator.impl.javascripting;
2

    
3
import java.util.Arrays;
4
import java.util.Collections;
5
import java.util.List;
6
import javax.script.ScriptEngine;
7
import javax.script.ScriptEngineFactory;
8

    
9
/**
10
 *
11
 * @author jjdelcerro
12
 */
13
public class CosaScriptEngineFactory 
14
    implements ScriptEngineFactory
15
    {
16
    public static final String ENGINE_NAME = "Cosa";
17
    public static final String ENGINE_VERSION = "1.0.0";
18

    
19
    public static final String LANGUAGE_NAME = "cosa";
20
    public static final String LANGUAGE_VERSION = "1.0";
21
    public static final String[] NAMES = new String[] {
22
        ENGINE_NAME,
23
        "COSA",
24
        "cosa"
25
    };
26
    public static final String[] FILE_EXTENSIONS = new String[] {
27
        "cosa"
28
    };
29
    public static final String[] MIME_TYPES = new String[] {
30
       "text/cosa", 
31
        "application/cosa", 
32
        "text/x-cosa", 
33
        "application/x-cosa"
34
    };
35
    
36
    public CosaScriptEngineFactory() {
37

    
38
    }
39
        
40
    @Override
41
    public String getEngineName() {
42
        return ENGINE_NAME;
43
    }
44

    
45
    @Override
46
    public String getEngineVersion() {
47
        return ENGINE_VERSION;
48
    }
49

    
50
    @Override
51
    public List<String> getExtensions() {
52
        return Collections.unmodifiableList(Arrays.asList(FILE_EXTENSIONS));
53
    }
54

    
55
    @Override
56
    public String getLanguageName() {
57
        return LANGUAGE_NAME;
58
    }
59

    
60
    @Override
61
    public String getLanguageVersion() {
62
        return LANGUAGE_VERSION;
63
    }
64

    
65
    @Override
66
    public Object getParameter(String key) {
67
        switch (key) {
68
            case ScriptEngine.ENGINE:
69
                return getEngineName();
70
            case ScriptEngine.ENGINE_VERSION:
71
                return getEngineVersion();
72
            case ScriptEngine.NAME:
73
                return getEngineName();
74
            case ScriptEngine.LANGUAGE:
75
                return getLanguageName();
76
            case ScriptEngine.LANGUAGE_VERSION:
77
                return getLanguageVersion();
78
            default:
79
                return null;
80
        }
81

    
82
    }
83

    
84
    @Override
85
    public String getMethodCallSyntax(String obj, String m, String... args) {
86
        StringBuilder buffer = new StringBuilder();
87
        buffer.append(String.format("%s.%s(", obj, m));
88
        int i = args.length;
89
        for (String arg : args) {
90
            buffer.append(arg);
91
            if (i-- > 0) {
92
                buffer.append(", ");
93
            }
94
        }
95
        buffer.append(")");
96
        return buffer.toString();
97
    }
98

    
99
    @Override
100
    public String getOutputStatement(String toDisplay) {
101
        StringBuilder buffer = new StringBuilder(toDisplay.length() + 8);
102
        buffer.append("print('");
103
        buffer.append(toDisplay.replace("'", "''"));
104
        buffer.append("')");
105
        return buffer.toString();
106
    }
107

    
108
    @Override
109
    public String getProgram(String... statements) {
110
        StringBuilder buffer = new StringBuilder();
111
        for (String statement : statements) {
112
            buffer.append(statement);
113
            buffer.append("\n");
114
        }
115
        return buffer.toString();
116
    }
117

    
118
    @Override
119
    public ScriptEngine getScriptEngine() {
120
        return new CosaScriptEngine(this);
121
    }
122

    
123
    @Override
124
    public List<String> getMimeTypes() {
125
        return Collections.unmodifiableList(Arrays.asList(MIME_TYPES));
126
    }
127

    
128
    @Override
129
    public List<String> getNames() {
130
        return Collections.unmodifiableList(Arrays.asList(NAMES));
131
    }
132
    
133
}