1 20 21 package rero.script; 22 23 import sleep.interfaces.*; 24 import sleep.runtime.*; 25 26 import rero.ircfw.interfaces.FrameworkConstants; 28 import rero.util.TokenizedString; 29 import rero.util.StringParser; 31 import java.util.*; 32 import java.util.regex.*; 33 34 public class LocalVariables implements Variable 35 { 36 protected HashMap data = new HashMap(); 37 38 protected static Pattern rangePattern = Pattern.compile("\\$(\\d+)\\-(\\d+)"); protected static Pattern rangeFromPattern = Pattern.compile("\\$(\\d+)\\-"); protected static Pattern rangeToPattern = Pattern.compile("\\$\\-(\\d+)"); protected static Pattern normalPattern = Pattern.compile("\\$(\\d+)"); 43 protected String parmsValue = null; 44 45 public void setDataSource(HashMap _data) 46 { 47 Iterator iter = _data.keySet().iterator(); 52 while (iter.hasNext()) 53 { 54 String key = iter.next().toString(); 55 56 if (key.equals(FrameworkConstants.$DATA$)) 57 { 58 parmsValue = (String )_data.get(key); 59 } 60 61 data.put(key, SleepUtils.getScalar((String )_data.get(key)) ); 62 } 63 } 64 65 public boolean scalarExists(String key) 66 { 67 if (data.containsKey(key) || "%localData".equals(key)) 68 { 69 return true; 70 } 71 72 return parmsValue != null && ((Character.isDigit(key.charAt(1)) || key.charAt(1) == '-')); 76 } 77 78 public Scalar getScalar(String key) 79 { 80 if ("%localData".equals(key)) 81 return SleepUtils.getHashWrapper(data); 82 83 Scalar temp = (Scalar)data.get(key); 84 85 if (temp == null && parmsValue != null && (Character.isDigit(key.charAt(1)) || key.charAt(1) == '-')) 86 { 87 StringParser parser; 88 int begin, end; 89 90 TokenizedString tokenizer = new TokenizedString(parmsValue, " "); 91 92 parser = new StringParser(key, rangePattern); 96 if (parser.matches()) 97 { 98 begin = Integer.parseInt(parser.getParsedStrings()[0]); 99 end = Integer.parseInt(parser.getParsedStrings()[1]); 100 101 return SleepUtils.getScalar(tokenizer.getTokenRange(begin, end)); 102 } 103 104 parser = new StringParser(key, rangeToPattern); 108 if (parser.matches()) 109 { 110 begin = Integer.parseInt(parser.getParsedStrings()[0]); 111 112 return SleepUtils.getScalar(tokenizer.getTokenTo(begin)); 113 } 114 115 parser = new StringParser(key, rangeFromPattern); 119 if (parser.matches()) 120 { 121 begin = Integer.parseInt(parser.getParsedStrings()[0]); 122 123 return SleepUtils.getScalar(tokenizer.getTokenFrom(begin)); 124 } 125 126 parser = new StringParser(key, normalPattern); 130 if (parser.matches()) 131 { 132 begin = Integer.parseInt(parser.getParsedStrings()[0]); 133 134 return SleepUtils.getScalar(tokenizer.getToken(begin)); 135 } 136 } 137 138 return temp; 139 } 140 141 public Scalar putScalar(String key, Scalar value) 142 { 143 return (Scalar)data.put(key, value); 144 } 145 146 public void removeScalar(String key) 147 { 148 } 150 151 152 public Variable createLocalVariableContainer() { return null; } 156 public Variable createInternalVariableContainer() { return null; } 157 } 158 159 | Popular Tags |