| |
---|
| | import models.algebra.Parameter; |
---|
| | import models.algebra.ParameterizedIdentifierIsFutureWork; |
---|
| | import models.algebra.Symbol; |
---|
| | import models.algebra.Term; |
---|
| | import models.algebra.Type; |
---|
| | import models.algebra.UnificationFailed; |
---|
| | import models.algebra.ValueUndefined; |
---|
| | import models.dataConstraintModel.ChannelMember; |
---|
| | import models.dataConstraintModel.DataConstraintModel; |
---|
| | import models.dataConstraintModel.IdentifierTemplate; |
---|
| | import models.dataFlowModel.*; |
---|
| | import models.dataFlowModel.DataflowChannelGenerator.IResourceStateAccessor; |
---|
| | |
---|
| |
---|
| | IResourceStateAccessor pushAccessor = new IResourceStateAccessor() { |
---|
| | @Override |
---|
| | public Expression getCurrentStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) { |
---|
| | if (target.equals(from)) { |
---|
| | return new Field(target.getResourceName(), target.getResourceStateType()); |
---|
| | return new Field(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt); |
---|
| | } |
---|
| | return null; |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public Expression getNextStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) { |
---|
| | return new Parameter(target.getResourceName(), target.getResourceStateType()); |
---|
| | return new Parameter(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt); |
---|
| | } |
---|
| | }; |
---|
| | IResourceStateAccessor pullAccessor = new IResourceStateAccessor() { |
---|
| | @Override |
---|
| | public Expression getCurrentStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) { |
---|
| | if (target.equals(from)) { |
---|
| | return new Field(target.getResourceName(), target.getResourceStateType()); |
---|
| | return new Field(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt); |
---|
| | } |
---|
| | return null; |
---|
| | } |
---|
| | |
---|
| |
---|
| | String tmp; |
---|
| | codes.add("public class " + resource.getIdentifierTemplate().getResourceName().substring(0, 1).toUpperCase() |
---|
| | + resource.getIdentifierTemplate().getResourceName().substring(1) + " {"); |
---|
| | if (((StoreAttribute) resource.getAttribute()).isStored()) { |
---|
| | for (Edge e : resource.getInEdges()) { |
---|
| | ResourceDependency re = (ResourceDependency) e; |
---|
| | for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { |
---|
| | try { |
---|
| | Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pushAccessor); |
---|
| | if(exp != null) { |
---|
| | Parameter param = exp.getSubTerms(Parameter.class).values().iterator().next(); |
---|
| | codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + param.toImplementation() + "){"); |
---|
| | tmp = "\t\t" + exp.toImplementation(); |
---|
| | codes.add(tmp); |
---|
| | codes.add("\t" + "}"); |
---|
| | } |
---|
| | } catch (ParameterizedIdentifierIsFutureWork e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (ResolvingMultipleDefinitionIsFutureWork e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (InvalidMessage e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (UnificationFailed e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (ValueUndefined e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | for (Edge e : resource.getOutEdges()) { |
---|
| | ResourceDependency re = (ResourceDependency) e; |
---|
| | for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { |
---|
| | try { |
---|
| | Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pushAccessor); |
---|
| | if(exp != null) { |
---|
| | tmp = "\t" + exp.toImplementation(); |
---|
| | Parameter param = exp.getSubTerms(Parameter.class).values().iterator().next(); |
---|
| | codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + param.toImplementation() + "){"); |
---|
| | tmp = "\t\t" + exp.toImplementation(); |
---|
| | codes.add(tmp); |
---|
| | codes.add("\t" + "}"); |
---|
| | } |
---|
| | } catch (ParameterizedIdentifierIsFutureWork e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| |
---|
| | for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { |
---|
| | try { |
---|
| | Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pullAccessor); |
---|
| | if(exp != null) { |
---|
| | tmp = "\t" + "return " + exp.toImplementation(); |
---|
| | codes.add(tmp); |
---|
| | } |
---|
| | } catch (ParameterizedIdentifierIsFutureWork e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (ResolvingMultipleDefinitionIsFutureWork e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (InvalidMessage e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (UnificationFailed e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } catch (ValueUndefined e1) { |
---|
| | // TODO Auto-generated catch block |
---|
| | e1.printStackTrace(); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | for (Edge e : resource.getOutEdges()) { |
---|
| | ResourceDependency re = (ResourceDependency) e; |
---|
| | for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { |
---|
| | try { |
---|
| | Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pullAccessor); |
---|
| | if(exp != null) { |
---|
| | tmp = "\t" + "return " + exp.toImplementation(); |
---|
| | tmp = "\t" + exp.toImplementation(); |
---|
| | codes.add(tmp); |
---|
| | } |
---|
| | } catch (ParameterizedIdentifierIsFutureWork e1) { |
---|
| |
---|
| | |