com.fivefaces.structureclient.service.statemachine.ScaffoldStateMachineResult Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of common-structure-client Show documentation
Show all versions of common-structure-client Show documentation
structure Client for Five Faces
package com.fivefaces.structureclient.service.statemachine;
import lombok.Getter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@Getter
public class ScaffoldStateMachineResult {
private final Map stateMachines = new HashMap<>();
private final Set warnings = new HashSet<>();
private final Map steps = new HashMap<>();
private String name;
public String toString() {
StringBuilder result = new StringBuilder();
if (stateMachines.containsKey("reverse")) {
final String definition = stateMachines.get("reverse");
result.append(steps.remove("Create"));
int count = 0;
String[] lines = definition.split("\n");
for (String line : lines) {
if (line.trim().startsWith("\"States\"")) {
String step = lines[count+1];
extracted(result, step);
} else if (line.trim().startsWith("\"Next\"") || line.trim().startsWith("\"Default\"")) {
String step = lines[count+2];
extracted(result, step);
}
count++;
}
// will just have the remaining step for the last step
if (steps.size() > 1) {
result.setLength(0);
result.append("change input to have next on steps -->\n\n");
steps.keySet().forEach(k -> {
result.append(k).append("\n");
});
} else {
steps.keySet().forEach(k -> {
result.append(steps.get(k)).append("\n");
});
}
} else {
stateMachines.forEach((key, value) -> {
if (!warnings.isEmpty()) {
result.append("State Machine Definition HAS WARNINGS!!!!!!!!!!! ").append(key);
}
result.append(value);
result.append("\n\n");
});
if (!warnings.isEmpty()) {
result.append("\n*****************************************************\n");
result.append("\nWARNINGS WARNINGS WARNINGS WARNINGS WARNINGS WARNINGS\n");
warnings.forEach(warning -> {
result.append(warning);
result.append("\n");
});
result.append("\n*****************************************************\n\n");
}
}
return result.toString();
}
private void extracted(StringBuilder result, String step) {
step = step.trim().replaceAll("\"", "");
if (step.contains(":")) {
step = step.substring(0, step.indexOf(":"));
result.append(steps.remove(step));
}
}
public void setName(String name) {
this.name = name;
}
}