diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java b/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java new file mode 100644 index 0000000..70f2248 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java @@ -0,0 +1,5 @@ +package algorithm; + +public class DerivingStorageResources { + +} diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/GraphGenerate.java b/AlgebraicDataflowArchitectureModel/src/algorithm/GraphGenerate.java new file mode 100644 index 0000000..d3a27cb --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/GraphGenerate.java @@ -0,0 +1,5 @@ +package algorithm; + +public class GraphGenerate { + +} diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java b/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java new file mode 100644 index 0000000..b049931 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java @@ -0,0 +1,60 @@ +package algorithm; + +import java.util.*; + +import models.*; +import models.dataFlowModel.DataFlowModel; + +public class UpdateConflictCheck { + DataFlowModel graph = new DataFlowModel(); + List order = new ArrayList<>(); + Map comp = new HashMap<>(); + List> set = new ArrayList<>(); + int index = 0; + + public void setup(DataFlowModel graph) { + this.graph = graph; + } + + public boolean check() { + boolean result = true; + for (Node node : graph.getResourceDependencyGraph().getNodes()) { + if (node.getIndegree() > 1) { + result = false; + break; + } + } + while (comp.size() < graph.getResourceDependencyGraph().getNodes().size()) { + for (Node node : graph.getResourceDependencyGraph().getNodes()) { + if (node.getIndegree() == 0) { + dfs(node); + break; + } + } + } + for (int i = index; i > 0; i--) { + assign(comp.get(i)); + } + if (set.size() > 1) + result = false; + return result; + } + + private Node dfs(Node n) { + for (Node out : n.getSuccessors()) { + if (!comp.containsValue(out)) { + return dfs(out); + } + } + index++; + comp.put(index, n); + return n; + } + + private Node assign(Node n) { + for (Node out : n.getPredecessors()) { + + } + return n; + } +}