Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / algorithm / DataStorageDecision.java
yoichiro on 13 Apr 2020 881 bytes コード整理
package algorithm;

import java.util.HashSet;

import models.*;
import models.dataFlowModel.*;

public class DataStorageDecision {
	static private HashSet<Node> arrivedNode = new HashSet<>();

	static public void run(ResourceDependencyGraph graph) {
		for (Node n : graph.getNodes()) {
			ResourceNode resource = (ResourceNode) n;
			trackNode(resource);
		}
	}

	static private void trackNode(ResourceNode resource) {
		if (arrivedNode.contains(resource))
			return;
		arrivedNode.add(resource);
		boolean flag = false;
		for (Edge e : resource.getInEdges()) {
			if (((PushPullAttribute) e.getAttribute()).getOptions().get(0) == PushPullValue.PUSH) {
				trackNode((ResourceNode) e.getSource());
				flag = true;
			}
		}
		if (resource.getInEdges().size() == 0)
			flag = true;
		((StoreAttribute) resource.getAttribute()).setStored(flag);
	}
}