adding TestON
diff --git a/TestON/TAI/src/tai_ofa/OFAContentHelp.java b/TestON/TAI/src/tai_ofa/OFAContentHelp.java
new file mode 100644
index 0000000..083daf5
--- /dev/null
+++ b/TestON/TAI/src/tai_ofa/OFAContentHelp.java
@@ -0,0 +1,705 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package tai_ofa;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.geometry.Side;
+import javafx.scene.Group;
+import javafx.scene.control.ContextMenu;
+import javafx.scene.control.Label;
+import javafx.scene.control.ListView;
+import javafx.scene.control.MenuItem;
+import javafx.scene.control.TextField;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.StackPane;
+
+/**
+ *
+ * @author Raghav kashyap (raghavkashyap@paxterrasolutions.com)
+
+ * TestON is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+
+ * TestON is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with TestON. If not, see <http://www.gnu.org/licenses/>.
+
+ */
+public class OFAContentHelp {
+
+ ContextMenu assertContext;
+ ArrayList<MenuItem> assertNameList;
+ CodeEditor Content;
+ TAI_OFA OFAReference;
+ String ospkCommand;
+ boolean keyPressed = false;
+ ArrayList<String> checkBuffer;
+ ContextMenu contextMenu, driverFunctionContextMenu;
+ ArrayList<String> myDevices;
+ ArrayList<MenuItem> myMenuItems;
+ ArrayList<String> driverFunctionName;
+ ArrayList<MenuItem> functionMenuItem;
+ OFAParamDeviceName paramFile;
+ String deviceTypePath;
+ ContextMenu commandNameContextMenu, withContextMenu, runDriverContextMenu;
+ ArrayList<MenuItem> bdtFunction;
+ String selectedDeviceName;
+ String selectedFunctionName;
+ TextField paraMeterListText;
+ ArrayList<String> parameterArrayList = new ArrayList<String>();
+ ArrayList<TextField> parameterTextFieldList = new ArrayList<TextField>();
+ String matchedCase;
+ ArrayList<Label> parameterLabel = new ArrayList<Label>();
+ OFAFileOperations fileOperation = new OFAFileOperations();
+ ObservableList<String> data;
+ Group popupRoot;
+ ListView<String> seleniumFunctionListView, cliFunctionListView;
+ String baseDeviceDriver, cliFunctionStr;
+ ArrayList<String> cliFunctionList = new ArrayList<String>();
+ HashMap<String, String> cliFunctionWithArgumentMap = new HashMap<String, String>();
+ String selectedCLiFunction;
+ String selectedSeleniumFunction;
+ TAILocale label = new TAILocale(new Locale("en", "EN"));
+ String OFAHarnessPath = label.hierarchyTestON;
+ String bdrPath;
+ String selectedDeviceType;
+
+ public OFAContentHelp() {
+ }
+
+ public OFAContentHelp(CodeEditor editor, TAI_OFA reference) {
+ this.Content = editor;
+ OFAReference = reference;
+ }
+
+ public void assertContextMenu() {
+ assertContext = new ContextMenu();
+ MenuItem equal = new MenuItem("EQUALS");
+ MenuItem match = new MenuItem("MATCHES");
+ MenuItem greater = new MenuItem("GREATER");
+ MenuItem lesser = new MenuItem("LESSER");
+ assertNameList = new ArrayList<MenuItem>();
+ assertNameList.add(equal);
+ assertNameList.add(match);
+ assertNameList.add(greater);
+ assertNameList.add(lesser);
+ assertContext.getItems().addAll(equal, match, greater, lesser);
+ }
+
+ public void ospkHelp() {
+
+ Content.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
+ @Override
+ public void handle(KeyEvent keyEvent) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ ArrayList<Integer> existingCaseNumber = new ArrayList<Integer>();
+ existingCaseNumber.add(0);
+ String[] content = Content.getCodeAndSnapshot().split("\n");
+ for (int i = 0; i < content.length; i++) {
+ Pattern pattern = Pattern.compile("CASE\\s+(\\d+)\\s*");
+ Matcher matchCase = pattern.matcher(content[i]);
+
+ while (matchCase.find()) {
+ try {
+ int number = Integer.parseInt(matchCase.group(1));
+ existingCaseNumber.add(number);
+ } catch (Exception e) {
+ }
+ }
+ }
+
+ int max = Collections.max(existingCaseNumber);
+ max = max + 1;
+ String caseNumbers = String.valueOf(max);
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("CASE", "CASE" + " " + caseNumbers));
+ }
+
+ Pattern namePattern = Pattern.compile("\\s*NAME\\s+(.*)");
+ Pattern descPattern = Pattern.compile("DESC\\s+(.*)");
+ Pattern stepPattern = Pattern.compile("STEP\\s+(.*)");
+ Pattern onPattern = Pattern.compile("ON\\s+(.*)");
+ Pattern cmdPattern = Pattern.compile("ON\\s+(\\w+\\s+(.*))");
+ Pattern runPattern = Pattern.compile("" + ospkCommand + "\\s+(.*)");
+ Pattern assertPattern = Pattern.compile("ASSERT\\s+(.*)");
+ Pattern usingPattern = Pattern.compile("(.*)\\s+USING\\s+");
+ String[] OFAEditorLine = Content.getCodeAndSnapshot().split("\n");
+
+ final Matcher onMatch = onPattern.matcher(Content.getCurrentLine());
+ final Matcher cmdMatch = cmdPattern.matcher(Content.getCurrentLine());
+ final Matcher runMatch = runPattern.matcher(Content.getCurrentLine());
+ final Matcher asertMatch = assertPattern.matcher(Content.getCurrentLine());
+ final Matcher usingMatch = usingPattern.matcher(Content.getCurrentLine());
+ Matcher nameMatch = namePattern.matcher(Content.getCurrentLine());
+ Matcher descMatch = descPattern.matcher(Content.getCurrentLine());
+ Matcher stepMatch = stepPattern.matcher(Content.getCurrentLine());
+ while (nameMatch.find()) {
+ if (nameMatch.group(1).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("NAME", "NAME" + " " + "\"\""));
+ }
+
+ }
+ }
+
+ while (descMatch.find()) {
+ if (descMatch.group(1).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("DESC", "DESC" + " " + "\"\""));
+ }
+
+ }
+ }
+
+ while (stepMatch.find()) {
+ if (stepMatch.group(1).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("STEP", "STEP" + " " + "\"\""));
+ }
+
+ }
+ }
+
+
+ while (onMatch.find()) {
+ if (onMatch.group(1).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+ keyPressed = true;
+ }
+
+ if (keyPressed == true) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ keyPressed = false;
+ onMatch.group();
+ onDeviceContextMenu();
+ contextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+ for (final MenuItem myMenuItem : myMenuItems) {
+ myMenuItem.setOnAction(new EventHandler<ActionEvent>() {
+ @Override
+ public void handle(ActionEvent arg0) {
+ HashMap<String, String> deviceNameAndType = paramFile.getdeviceNameAndType();
+ Iterator paramIterator = deviceNameAndType.entrySet().iterator();
+ while (paramIterator.hasNext()) {
+ Map.Entry mEntry = (Map.Entry) paramIterator.next();
+ if (myMenuItem.getText().equals(mEntry.getKey())) {
+ selectedDeviceType = mEntry.getValue().toString();
+ selectedDeviceType = selectedDeviceType.replaceAll("\\s+", "");
+ String driverTypePath = OFAHarnessPath + "/drivers/common/";
+ File aFile = new File(driverTypePath);
+ fileOperation.Process(aFile);
+ for (String path : fileOperation.filePath) {
+ String[] splitPath = path.split("\\/");
+ String[] fileName = splitPath[splitPath.length - 1].split("\\.");
+ for (int p = 0; p < fileName.length; p++) {
+ if ((selectedDeviceType).equals(fileName[p])) {
+ deviceTypePath = path;
+ bdrPath = deviceTypePath.replaceAll("py", "ospk");
+ }
+ }
+ }
+ }
+ }
+ selectedDeviceName = myMenuItem.getText();
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("ON", "ON" + " " + myMenuItem.getText()));
+ }
+ });
+ }
+ }
+ }
+
+ }
+ }
+ while (cmdMatch.find()) {
+ if (cmdMatch.group(2).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+ keyPressed = true;
+ }
+
+ if (keyPressed == true) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ runContextMenu();
+ commandNameContextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 115);
+ for (final MenuItem bdtCmd : bdtFunction) {
+ bdtCmd.setOnAction(new EventHandler<ActionEvent>() {
+ @Override
+ public void handle(ActionEvent t) {
+ ospkCommand = bdtCmd.getText();
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace(selectedDeviceName, selectedDeviceName + " " + bdtCmd.getText()));
+ }
+ });
+ }
+ }
+ }
+ }
+ }
+
+ while (runMatch.find()) {
+
+ if (runMatch.group(1).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+ keyPressed = true;
+ }
+ if (keyPressed == true) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ keyPressed = false;
+
+ onDriverContextMenu();
+ driverFunctionContextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+
+ Group popupRoot = (Group) driverFunctionContextMenu.getScene().getRoot();
+ final ListView<String> driverFunctionListView = new ListView<String>();
+ data = FXCollections.observableArrayList();
+ for (String function : driverFunctionName) {
+ data.add(function);
+ }
+ driverFunctionListView.setItems(data);
+ driverFunctionListView.setMaxHeight(100);
+ driverFunctionListView.setMaxWidth(150);
+ driverFunctionListView.getSelectionModel().selectFirst();
+
+ driverFunctionListView.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
+ @Override
+ public void handle(KeyEvent arg0) {
+ if (arg0.getCode() == KeyCode.ENTER || arg0.getCode() == KeyCode.SPACE) {
+ selectedFunctionName = driverFunctionListView.getSelectionModel().getSelectedItem().toString();
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("RUN", "RUN" + " " + selectedFunctionName));
+ driverFunctionContextMenu.hide();
+ }
+ }
+ });
+ popupRoot.getChildren().add(driverFunctionListView);
+ driverFunctionListView.requestFocus();
+ }
+ }
+ }
+ }
+
+ while (asertMatch.find()) {
+ if (asertMatch.group(1).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+ keyPressed = true;
+ }
+
+ if (keyPressed == true) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ OFAContentHelp contentHelp = new OFAContentHelp();
+ contentHelp.assertContextMenu();
+ contentHelp.assertContext.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+ for (final MenuItem assertCommand : contentHelp.assertNameList) {
+ assertCommand.setOnAction(new EventHandler<ActionEvent>() {
+ @Override
+ public void handle(ActionEvent t) {
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("ASSERT", "ASSERT " + assertCommand.getText()));
+ }
+ });
+ }
+ }
+ }
+ }
+
+ }
+
+ while (usingMatch.find()) {
+ if (!usingMatch.group(1).isEmpty()) {
+ if (keyEvent.getCode() == KeyCode.CONTROL) {
+ keyPressed = true;
+ }
+
+ if (keyPressed == true) {
+ if (keyEvent.getCode() == KeyCode.SPACE) {
+ OFAParamDeviceName paramDeice = new OFAParamDeviceName();
+ if (selectedDeviceType.equals("poxclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/poxclidriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ } else if (selectedDeviceType.equals("mininetclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/mininetclidriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ } else if (selectedDeviceType.equals("hpswitchclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/hpswitchclidriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("flowvisorclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/flowvisorclidriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("floodlightclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/floodlightclidriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("remotepoxdriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/remotepoxdriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("remotevmdriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/remotevmdriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("dpctlclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/tool/dpctlclidriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("fvtapidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/api/fvtapidriver.py");
+ paramDeice.driverFunctionName(baseCliDevice);
+ for (String functionName : paramDeice.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ HashMap<String, String> functionAndParameter = paramDeice.functionWithParameter;
+ Set set = functionAndParameter.entrySet();
+ // Get an iterator
+ Iterator functionAndParameterIterator = set.iterator();
+ // Display elements
+ final GridPane paramPanel = new GridPane();
+ paramPanel.setStyle("-fx-background-color: DAE6F3;");
+ String caseParameter = "";
+ parameterLabel.clear();
+ parameterTextFieldList.clear();
+ while (functionAndParameterIterator.hasNext()) {
+ Map.Entry functionInfo = (Map.Entry) functionAndParameterIterator.next();
+ if (selectedFunctionName.equals(functionInfo.getKey().toString())) {
+ String[] splitParameter = functionInfo.getValue().toString().split("\\,");
+ if (splitParameter.length > 0) {
+ for (int j = 0; j < splitParameter.length; j++) {
+ Label parameterList = new Label();
+ parameterLabel.add(parameterList);
+ paraMeterListText = new TextField();
+ parameterList.setText(splitParameter[j]);
+ paramPanel.add(parameterList, 0, j);
+ paramPanel.add(paraMeterListText, 1, j);
+ parameterTextFieldList.add(paraMeterListText);
+ caseParameter += splitParameter[j].toLowerCase() + "AS " + "CASE" + "[" + splitParameter[j].toLowerCase() + "]" + ",";
+ }
+ }
+ }
+ }
+ withContextMenu();
+ withContextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+ Group popupRoot = (Group) withContextMenu.getScene().getRoot();
+ Group popupCSSBridge = (Group) popupRoot.getChildren().get(0);
+ StackPane popupContent = (StackPane) popupCSSBridge.getChildren().get(0);
+ popupRoot.getChildren().add(paramPanel);
+ if (!caseParameter.equals("")) {
+ try {
+ caseParameter = caseParameter.substring(0, caseParameter.length() - 1);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ }
+ popupContent.setMaxHeight(OFAReference.editorTabPane.getHeight() - 400);
+ Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("USING", "USING" + " " + caseParameter));
+ for (int k = Integer.parseInt(Content.getCurrentLineNumber()); k > 0; k--) {
+ Pattern firstUpperCasePattern = Pattern.compile("CASE\\s+(\\d)");
+ Matcher firstUpperCaseMatch = firstUpperCasePattern.matcher(Content.getCurrentLine(k));
+ if (firstUpperCaseMatch.find()) {
+ matchedCase = firstUpperCaseMatch.group();
+ break;
+ }
+ }
+ try {
+ paraMeterListText.setOnKeyPressed(new EventHandler<KeyEvent>() {
+ @Override
+ public void handle(KeyEvent keyEvent) {
+ if (keyEvent.getCode() == KeyCode.ENTER) {
+ String paramCaseContent = "";
+ String matchCaseWithoutSpace = matchedCase.replaceAll("\\s+", "");
+ String currentTabPath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId();
+ String paramFile = currentTabPath.replace(fileOperation.getExtension(currentTabPath), ".params");
+ Pattern matchCasePattern = Pattern.compile("^\\s*\\<" + matchCaseWithoutSpace + "\\>");
+ String fileContent[] = fileOperation.getContents(new File(paramFile)).split("\n");
+ String myCase = "";
+ Boolean caseFlag = false;
+ int k;
+ for (k = 0; k < fileContent.length; k++) {
+ Matcher caseMatch = matchCasePattern.matcher(fileContent[k]);
+ if (caseMatch.find()) {
+ myCase = caseMatch.group();
+ caseFlag = true;
+ break;
+ }
+ }
+ if (caseFlag == true) {
+ String remainingConetent = "";
+ int caseVarible = k;
+ k++;
+ for (; k < fileContent.length; k++) {
+ remainingConetent += "\n" + fileContent[k];
+ }
+ String allContent = "";
+ allContent += fileContent[0];
+ for (int p = 1; p < caseVarible; p++) {
+ allContent += "\n" + fileContent[p];
+ }
+ allContent += "\n\t<" + matchCaseWithoutSpace + ">";
+
+ for (int i = 0; i < parameterTextFieldList.size(); i++) {
+ String parameterLabels = parameterLabel.get(i).getText().replaceAll("\"", "");
+ paramCaseContent += "\n\t\t<" + parameterLabels.toLowerCase() + ">" + parameterTextFieldList.get(i).getText() + "</" + parameterLabels.toLowerCase() + ">";
+ }
+
+ allContent += paramCaseContent;
+ allContent += remainingConetent;
+ String paramFilePath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId().replace(fileOperation.getExtension(OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId()), ".params");
+ String paramFileContent = fileOperation.getContents(new File(paramFilePath));
+ try {
+ fileOperation.setContents(new File(paramFilePath), allContent);
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IOException ex) {
+ Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ withContextMenu.hide();
+ paramPanel.setVisible(false);
+ } else {
+ paramCaseContent += "<" + matchCaseWithoutSpace + ">";
+ for (int i = 0; i < parameterTextFieldList.size(); i++) {
+ paramCaseContent += "\n\t\t<" + parameterLabel.get(i).getText().toLowerCase() + ">" + parameterTextFieldList.get(i).getText() + "</" + parameterLabel.get(i).getText().toLowerCase() + ">";
+ }
+
+ paramCaseContent += "\n\t" + "</" + matchCaseWithoutSpace + ">";
+ String paramFilePath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId().replace(fileOperation.getExtension(OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId()), ".params");
+ String paramFileContent = fileOperation.getContents(new File(paramFilePath));
+ String removeTestParam = paramFileContent.replace("</TEST_PARAMS>", " ");
+ removeTestParam += "\t" + paramCaseContent + "\n\n" + "</TEST_PARAMS>";
+ try {
+ fileOperation.setContents(new File(paramFilePath), removeTestParam);
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IOException ex) {
+ Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ withContextMenu.hide();
+ paramPanel.setVisible(false);
+ }
+ }
+ }
+ });
+ } catch (Exception e) {
+ }
+
+ }
+ }
+ }
+
+ }
+
+ checkBuffer = new ArrayList<String>();
+
+ if (keyEvent.getCode() == KeyCode.ENTER) {
+ String bufferedString = "";
+ for (String s : checkBuffer) {
+ bufferedString += s;
+ }
+ Pattern pattern = Pattern.compile("CASE\\s+(\\d+)");
+ Matcher match = pattern.matcher(bufferedString);
+ while (match.find()) {
+ Content.setCode(Content.getCodeAndSnapshot().replaceAll(bufferedString, bufferedString + "\n\n" + "END CASE"));
+ }
+ checkBuffer.clear();
+ }
+
+ }
+ });
+
+ Content.setOnKeyPressed(new EventHandler<KeyEvent>() {
+ @Override
+ public void handle(KeyEvent arg0) {
+ String text = arg0.getText();
+ if (arg0.getCode() == KeyCode.ENTER) {
+ } else if (arg0.getCode() == KeyCode.BACK_SPACE) {
+ } else {
+ checkBuffer.add(text);
+ }
+ }
+ });
+ }
+
+ public void onDeviceContextMenu() {
+ contextMenu = new ContextMenu();
+ myDevices = new ArrayList<String>();
+ ArrayList<String> paramDeviceType = new ArrayList<String>();
+ myMenuItems = new ArrayList<MenuItem>();
+
+ String selectedTabPath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId();
+ String[] splitSelectedPath = selectedTabPath.split("\\/");
+ String[] ospkFileName = splitSelectedPath[splitSelectedPath.length - 1].toString().split("\\.");
+ String paramFileName = ospkFileName[0] + ".topo";
+ String paramFilePath = selectedTabPath.replace(splitSelectedPath[splitSelectedPath.length - 1].toString(), paramFileName);
+ paramFile = new OFAParamDeviceName(paramFilePath, "");
+ paramFile.parseParamFile();
+
+ for (String deviceName : paramFile.getParamDeviceName()) {
+ myDevices.add(deviceName);
+ }
+
+ for (String myDevice : myDevices) {
+ final MenuItem myMenuItem = new MenuItem(myDevice);
+ myMenuItem.setOnAction(new EventHandler<ActionEvent>() {
+ @Override
+ public void handle(ActionEvent arg0) {
+ }
+ });
+ myMenuItems.add(myMenuItem);
+ }
+
+ for (MenuItem myMenuItem : myMenuItems) {
+ contextMenu.getItems().addAll(myMenuItem);
+
+ }
+
+ OFAReference.editorTabPane.setContextMenu(contextMenu);
+ }
+
+ public void onDriverContextMenu() {
+ driverFunctionContextMenu = new ContextMenu();
+ driverFunctionName = new ArrayList<String>();
+ driverFunctionName.clear();
+ OFAParamDeviceName driverFile = new OFAParamDeviceName();
+
+ if (selectedDeviceType.equals("poxclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/poxclidriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ } else if (selectedDeviceType.equals("mininetclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/mininetclidriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("hpswitchdriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/hpswitchdriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("dpctlclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/tool/dpctlclidriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("fvtapidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/api/fvtapidriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ } else if (selectedDeviceType.equals("hpswitchclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/hpswitchclidriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("flowvisorclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/flowvisorclidriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("floodlightclidriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/floodlightclidriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("remotepoxdriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/remotepoxdriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ if (selectedDeviceType.equals("remotevmdriver")) {
+ String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/remotevmdriver.py");
+ driverFile.driverFunctionName(baseCliDevice);
+ for (String functionName : driverFile.driverFunctionName) {
+ driverFunctionName.add(functionName);
+ }
+ }
+ driverFunctionContextMenu.getItems().add(new MenuItem());
+ }
+
+ public void runContextMenu() {
+ commandNameContextMenu = new ContextMenu();
+ MenuItem run = new MenuItem("RUN");
+ MenuItem exec = new MenuItem("EXEC");
+ MenuItem config = new MenuItem("CONFIG");
+ bdtFunction = new ArrayList<MenuItem>();
+ bdtFunction.add(run);
+ bdtFunction.add(exec);
+ bdtFunction.add(config);
+ commandNameContextMenu.getItems().addAll(run, exec, config);
+ }
+
+ public void withContextMenu() {
+ withContextMenu = new ContextMenu();
+ MenuItem item = new MenuItem();
+ withContextMenu.getItems().add(item);
+ item.setDisable(true);
+ }
+
+ // drivers context menu
+ public void runDriverContextMenu() {
+ runDriverContextMenu = new ContextMenu();
+ MenuItem runDriverMenuItem = new MenuItem("");
+ runDriverContextMenu.getItems().add(runDriverMenuItem);
+ }
+}