diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java b/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java index 97f9365..9021c03 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java @@ -1,34 +1,30 @@ package algorithm; -import models.algebra.Expression; -import models.algebra.Position; -import models.algebra.Type; -import models.dataConstraintModel.ChannelGenerator; -import models.dataConstraintModel.ChannelMember; -import models.dataConstraintModel.DataConstraintModel; -import models.dataConstraintModel.IdentifierTemplate; -import models.dataFlowModel.DataFlowModel; +import models.*; +import models.algebra.*; +import models.dataConstraintModel.*; +import models.dataFlowModel.*; public class DerivingStorageResources { - static public final Type PULL = new Type("PULL","pull"); - static public final Type PUSH = new Type("PUSH","push"); - static public void run(DataFlowModel model) { + static public ResourceDependencyGraph run(DataFlowModel model) { DataConstraintModel dcmodel = (DataConstraintModel) model; - for(IdentifierTemplate resource:dcmodel.getIdentifierTemplates()) { - resource.setResourceStateType(PULL); - } for (ChannelGenerator generator : dcmodel.getChannelGenerators()) { - for (ChannelMember member : generator.getChannelMembers()) { + for (ChannelMember member : ((DataflowChannelGenerator)generator).getOutputChannelMembers()) { Expression curexp = member.getStateTransition().getCurStateExpression(); Expression nextexp = member.getStateTransition().getNextStateExpression(); - for (Position cuspos : curexp.getVariables().keySet()) { - for (Position nextpos : nextexp.getVariables().keySet()) { - if (curexp.getVariables().get(cuspos).getName().equals(nextexp.getVariables().get(nextpos).getName())) { - member.getIdentifierTemplate().setResourceStateType(PUSH); + for (Position pos : curexp.getVariables().keySet()) { + if(curexp.getVariables().get(pos).contains(nextexp)) { + for(Node node:model.getResourceDependencyGraph().getNodes()) { + if(((ResourceNode)node).getIdentifierTemplate().equals(member.getIdentifierTemplate())){ + StoreAttribute store = new StoreAttribute(); + store.setNeeded(true); + ((ResourceNode)node).setAttribute(store); + } } } } } } + return model.getResourceDependencyGraph(); } }