KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > scriptengine > core > nodes > StringNode


1 /*
2  * Copyright (c) 2001-2005 by Genimen BV (www.genimen.com) All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, is permitted provided that the following conditions are met: -
6  * Redistributions of source code must retain the above copyright notice, this
7  * list of conditions and the following disclaimer. - Redistributions in binary
8  * form must reproduce the above copyright notice, this list of conditions and
9  * the following disclaimer in the documentation and/or other materials
10  * provided with the distribution. - All advertising materials mentioning
11  * features or use of this software must display the following acknowledgment:
12  * "This product includes Djeneric." - Products derived from this software may
13  * not be called "Djeneric" nor may "Djeneric" appear in their names without
14  * prior written permission of Genimen BV. - Redistributions of any form
15  * whatsoever must retain the following acknowledgment: "This product includes
16  * Djeneric."
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL GENIMEN BV, DJENERIC.ORG, OR CONTRIBUTORS
22  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.genimen.djeneric.tools.scriptengine.core.nodes;
31
32 import java.util.HashMap JavaDoc;
33
34 import com.genimen.djeneric.tools.scriptengine.core.DjScriptParserEngine;
35 import com.genimen.djeneric.tools.scriptengine.core.SimpleNode;
36 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptCompileTimeScope;
37 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptExecutionTimeScope;
38
39 public class StringNode extends SimpleNode implements ValueExpression
40 {
41   String JavaDoc _value = null;
42
43   public StringNode(int i)
44   {
45     super(i);
46   }
47
48   public StringNode(DjScriptParserEngine p, int i)
49   {
50     super(p, i);
51   }
52
53   public String JavaDoc getName()
54   {
55     return toString();
56   }
57
58   public String JavaDoc toString()
59   {
60     return _value;
61   }
62
63   public void setValue(String JavaDoc v)
64   {
65     // Strip the quotes
66
v = v.substring(1);
67     v = v.substring(0, v.length() - 1);
68
69     _value = translateEscapes(v);
70   }
71
72   public Object JavaDoc getValue(DjScriptExecutionTimeScope context)
73   {
74     return _value;
75   }
76
77   static String JavaDoc _froms = "ntbrf\\'\"";
78   static String JavaDoc _tos = "\n\t\b\r\f\\'\"";
79
80   public static String JavaDoc translateEscapes(String JavaDoc src)
81   {
82     StringBuffer JavaDoc sb = new StringBuffer JavaDoc(src);
83
84     int i = 0;
85     while (i < sb.length() - 1)
86     {
87       if (sb.charAt(i) == '\\')
88       {
89         for (int x = 0; x < _froms.length(); x++)
90         {
91           if (_froms.charAt(x) == sb.charAt(i + 1))
92           {
93             sb.deleteCharAt(i);
94             sb.setCharAt(i, _tos.charAt(x));
95             break;
96           }
97         }
98       }
99       i++;
100     }
101     return sb.toString();
102   }
103
104   public void translateOql(DjScriptExecutionTimeScope ctxt, StringBuffer JavaDoc result, HashMap JavaDoc parameters)
105   {
106     result.append("\"");
107     result.append(_value);
108     result.append("\"");
109   }
110
111   public String JavaDoc getValidatedTypeName(DjScriptCompileTimeScope context)
112   {
113     return String JavaDoc.class.getName();
114   }
115
116 }
Popular Tags