package com.jazzautomation.action; import com.jazzautomation.page.DomElementExpectation; import static com.jazzautomation.util.Constants.DOT; import static com.jazzautomation.util.Constants.DOUBLE_AND; import java.util.ArrayList; import java.util.List; public class PageAction { private String sourcePageName; private String targetPageName; private boolean optional; private List<List<ComponentAction>> actionChains = new ArrayList<>(); private List<DomElementExpectation> expects; public void addComponentAction(String componentActionString) { String[] stringSplit = componentActionString.split(DOT); ComponentAction compAction = new ComponentAction(); compAction.setComponentName(stringSplit[0].trim()); compAction.setAction(stringSplit[1].toLowerCase()); if (actionChains.isEmpty()) { List<ComponentAction> componentActionList0 = new ArrayList<>(); componentActionList0.add(compAction); actionChains.add(componentActionList0); } else { actionChains.get(0).add(compAction); } } public String serialize() { StringBuffer serializedText = new StringBuffer(); serializedText.append(sourcePageName + ""); serializedText.append(DomElementExpectation.normalizeExpects(expects)); serializedText.append(":"); for (int i = 0; i < actionChains.size(); i++) { List<ComponentAction> listCompActions = actionChains.get(i); for (int j = 0; j < listCompActions.size(); j++) { serializedText.append(listCompActions.get(j).toString()); if (j != (listCompActions.size() - 1)) { serializedText.append("&&"); } } if (i == (actionChains.size() - 1)) { serializedText.append(";"); } else { serializedText.append("||"); } } return serializedText.toString(); } public static List<ComponentAction> deserializeList(String componentActionString) { List<ComponentAction> componentActions = new ArrayList<>(); // split actions String[] actionsStringSplit = componentActionString.split(DOUBLE_AND); for (String actionString : actionsStringSplit) { ComponentAction aComponentAction = new ComponentAction(); // parsing action parseActionString(actionString, aComponentAction); componentActions.add(aComponentAction); } return componentActions; } public static String serializeList(List<ComponentAction> componentActions) { StringBuilder returnString = new StringBuilder(); for (int i = 0; i < componentActions.size(); i++) { returnString.append(componentActions.get(i).serialize()); if (i != (componentActions.size() - 1)) { returnString.append(DOUBLE_AND); } } return returnString.toString(); } private static void parseActionString(String actionString, ComponentAction componentAction) { String[] splitByDot = actionString.split(DOT); String startString = splitByDot[0].trim(); componentAction.setComponentName(startString.trim()); componentAction.setAction(splitByDot[1].trim()); } public boolean isOptional() { return optional; } public void setOptional(boolean optional) { this.optional = optional; } public String getSourcePageName() { return sourcePageName; } public void setSourcePageName(String sourcePageName) { this.sourcePageName = sourcePageName; } public String getTargetPageName() { return targetPageName; } public void setTargetPageName(String targetPageName) { this.targetPageName = targetPageName; } public List<DomElementExpectation> getExpects() { return expects; } public void setExpects(List<DomElementExpectation> expects) { this.expects = expects; } public List<List<ComponentAction>> getActionChains() { return actionChains; } public void setActionChains(List<List<ComponentAction>> actionChains) { this.actionChains = actionChains; } public String toString() { return "PageAction: targetPageName: " + targetPageName + " actionChains: " + actionChains + " with expects: " + expects; } }