diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java b/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java index 70f2248..c3de0e1 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/DerivingStorageResources.java @@ -1,5 +1,32 @@ package algorithm; -public class DerivingStorageResources { +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; +public class DerivingStorageResources { + public void run(DataFlowModel model) { + DataConstraintModel dcmodel = (DataConstraintModel) model; + for(IdentifierTemplate resource:dcmodel.getIdentifierTemplates()) { + resource.setResourceStateType(new Type("PULL","pull")); + } + for (ChannelGenerator generator : dcmodel.getChannelGenerators()) { + for (ChannelMember member : generator.getChannelMembers()) { + 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(new Type("PUSH", "push")); + } + } + } + } + } + } }