All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fivefaces.structureclient.service.statemachine.ScaffoldStateMachineResult Maven / Gradle / Ivy

There is a newer version: 1.0.62
Show newest version
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;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy