testdev/ite/src/com.nokia.testfw.stf.scripteditor/src/com/nokia/testfw/stf/scripteditor/utils/Argument.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testdev/ite/src/com.nokia.testfw.stf.scripteditor/src/com/nokia/testfw/stf/scripteditor/utils/Argument.java Tue Mar 30 14:39:29 2010 +0800
@@ -0,0 +1,279 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.testfw.stf.scripteditor.utils;
+
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+class Argument implements Arguments {
+
+ public Argument(String value, String name, String binding, String nvalue) {
+ this.argumentType = value;
+ this.argumentName = name;
+ this.argumentBinding = binding;
+ this.argumentNextvalue = nvalue;
+
+ }
+
+ public String getNextValue() {
+ return argumentNextvalue;
+ }
+
+ /**
+ * @return argument type (ex. normal, selective)
+ */
+ public String getArgumenType() {
+ return argumentType;
+ }
+
+ /**
+ * @return expected argument value
+ */
+ public String getArgumentName() {
+ return argumentName;
+ }
+
+ /**
+ * @return expected binding value ("=" or space)
+ */
+ public String getArgumentBinding() {
+ return argumentBinding;
+ }
+
+ /**
+ * @return expected value of complex argument
+ */
+ public String getargumentNextvalue() {
+ return argumentNextvalue;
+ }
+
+ /**
+ *
+ */
+ public ArrayList<String> validate(ArrayList<String> tokenizedLine) {
+ boolean lineCorrect = false;
+ boolean firstArgument = false;
+ boolean secondArgument = false;
+ boolean thirdArgument = false;
+ if (tokenizedLine.size() > 0) {
+
+ if (this.argumentBinding.equals("none")) {
+
+ if (this.argumentType.equals("digit")) {
+
+ String patternString = "^[0-9+-]*$";
+
+ lineCorrect = validateArgment(patternString, tokenizedLine
+ .get(0));
+
+ } else if (this.argumentType.equals("literal")) {
+
+ String patternString = "^[0-9a-zA-Z\\\\/:=\\s._()-,]*$";
+
+ lineCorrect = validateArgment(patternString, tokenizedLine
+ .get(0));
+
+ } else if (this.argumentType.equals("name")) {
+
+ if (this.argumentName
+ .equalsIgnoreCase(tokenizedLine.get(0))) {
+ lineCorrect = true;
+ }
+
+
+ }else if (this.argumentType.equals("words")) {
+ tokenizedLine.clear();
+
+ }else if (this.argumentType.equals("object")) {
+ for (int i = 0 ; i < Parser.createdObjectsList.size() ; i++){
+ if(Parser.createdObjectsList.get(i).equalsIgnoreCase(tokenizedLine.get(0))){
+ lineCorrect = true;
+ }
+ }
+ }else if (this.argumentType.equals("objectdelete")) {
+ for (int i = 0 ; i < Parser.createdObjectsList.size() ; i++){
+ if(Parser.createdObjectsList.get(i).equalsIgnoreCase(tokenizedLine.get(0))){
+ lineCorrect = true;
+ Parser.createdObjectsList.remove(i);
+ }
+ }
+ }else if (this.argumentType.equals("quoted")) {
+ if(tokenizedLine.get(0).startsWith("\"") && tokenizedLine.get(0).endsWith("\"")){
+ lineCorrect = true;
+ }
+ }
+
+ if (lineCorrect && tokenizedLine.size()>0) {
+ tokenizedLine.remove(0);
+
+ }
+
+ } else if (this.argumentBinding.equals("=")) {
+ if (tokenizedLine.size() > 2) {
+
+ if (this.argumentType.equals("digit")) {
+
+ String patternString = "^[0-9+-]*$";
+
+ firstArgument = validateArgment(patternString,
+ tokenizedLine.get(0));
+
+ } else if (this.argumentType.equals("literal")) {
+
+ String patternString = "^[0-9a-zA-Z\\\\/:._]*$";
+
+ firstArgument = validateArgment(patternString,
+ tokenizedLine.get(0));
+
+ } else if (this.argumentType.equals("name")) {
+
+ if (this.argumentName.equalsIgnoreCase(tokenizedLine
+ .get(0))) {
+ firstArgument = true;
+ }
+ }
+ if (tokenizedLine.get(1).equals("=")) {
+ secondArgument = true;
+
+ }
+ if (this.argumentNextvalue.equals("digit")) {
+
+ String patternString = "^[0-9+-]*$";
+
+ thirdArgument = validateArgment(patternString,
+ tokenizedLine.get(2));
+
+ } else if (this.argumentNextvalue.equals("literal")) {
+
+ String patternString = "^[0-9a-zA-Z\\\\/:._]*$";
+
+ thirdArgument = validateArgment(patternString,
+ tokenizedLine.get(2));
+
+ } else if (this.argumentNextvalue.equals("name")) {
+
+ if (this.argumentName.equalsIgnoreCase(tokenizedLine
+ .get(2))) {
+ thirdArgument = true;
+ }
+ }
+ else if (this.argumentNextvalue.equals("words")) {
+ tokenizedLine.clear();
+
+ }
+ if (tokenizedLine.size()>0 && firstArgument && secondArgument && thirdArgument) {
+
+ tokenizedLine.remove(0);
+ tokenizedLine.remove(0);
+ tokenizedLine.remove(0);
+ }
+
+ }
+ }else if (this.argumentBinding.equals("space")) {
+ if (tokenizedLine.size() > 1) {
+ if (this.argumentType.equals("digit")) {
+
+ String patternString = "^[0-9+-]*$";
+
+ firstArgument = validateArgment(patternString,
+ tokenizedLine.get(0));
+
+ } else if (this.argumentType.equals("literal")) {
+
+ String patternString = "^[0-9a-zA-Z\\\\/:._]*$";
+
+ firstArgument = validateArgment(patternString,
+ tokenizedLine.get(0));
+
+ } else if (this.argumentType.equals("name")) {
+
+ if (this.argumentName.equalsIgnoreCase(tokenizedLine
+ .get(0))) {
+ firstArgument = true;
+ }
+ }
+
+ if (this.argumentNextvalue.equals("digit")) {
+
+ String patternString = "^[0-9+-]*$";
+
+ thirdArgument = validateArgment(patternString,
+ tokenizedLine.get(1));
+
+ } else if (this.argumentNextvalue.equals("literal")) {
+
+ String patternString = "^[0-9a-zA-Z\\\\/:._]*$";
+
+ thirdArgument = validateArgment(patternString,
+ tokenizedLine.get(1));
+
+ } else if (this.argumentNextvalue.equals("name")) {
+
+ if (this.argumentName.equalsIgnoreCase(tokenizedLine
+ .get(1))) {
+ thirdArgument = true;
+ }
+
+ }if (tokenizedLine.size()>0 && firstArgument && thirdArgument) {
+
+ tokenizedLine.remove(0);
+ tokenizedLine.remove(0);
+ }
+ }
+ }
+ }
+
+
+ return tokenizedLine;
+
+ }
+
+ /**
+ * Validate single argument
+ *
+ * @param patternString -
+ * regular expresion mathing expected argument.
+ * @param token -
+ * single token from tokenized line
+ * @return true if argument is valid
+ */
+ private boolean validateArgment(String patternString, String token) {
+ Pattern titlePattern = Pattern
+ .compile(patternString, Pattern.MULTILINE);
+ Matcher regExMatcher = titlePattern.matcher(token);
+ if (regExMatcher.find()) {
+ return true;
+
+ }
+ return false;
+ }
+
+ // define argument type (ex. digit, text or name)
+ private String argumentType;
+
+ // uniqe argument name, it is value of XML argument tag
+ private String argumentName;
+
+ // define argument binding type (ex. = or space)
+ private String argumentBinding;
+
+ // define type of value that argument can take (ex. digit or literal)
+ private String argumentNextvalue;
+
+}
\ No newline at end of file