diff --git a/AlgebraicDataflowArchitectureModel/models/A.dtram b/AlgebraicDataflowArchitectureModel/models/A.dtram new file mode 100644 index 0000000..fef5480 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/models/A.dtram @@ -0,0 +1,15 @@ +model { + channel CIO{ + out A(a:Int, setA(a2)) == a2; + } +} +geometry { +node r A:180,90,80,30 +} + +services{ + service A{ + baseURL:"https://A/" + resources:A,B,C + } +} \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/models/WOS.dtram b/AlgebraicDataflowArchitectureModel/models/WOS.dtram new file mode 100644 index 0000000..6b79a46 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/models/WOS.dtram @@ -0,0 +1,32 @@ +model { +channel CIO2 { + out highest(h:Double, reset(v)) == v +} +channel CIO1 { + out temp_f(p:Double, observe(x)) == x +} +channel C1{ + in temp_f(q:Double, conversion(y)) == y + out temp_c(r:Double, conversion(z)) == (z-32) / 1.8 +} +channel C2{ + in temp_f(q:Double, update(y)) == y + out highest(h:Double, update(z)) == if(gt(z, h), z, h) +} +} +geometry { +node c C1:150,20,30,30 +node c C2:150,20,30,30 +node r highest:300,20,80,30 +node r temp_c:20,20,80,30 +node r temp_f:370,220,80,30 +node ioc CIO2:160,150,30,30 +node ioc CIO1:140,170,30,30 +} + +services{ + service A{ + baseURL:https + resources:temp_f,temp_c,highest + } +} \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java index 9a0a8a0..346bcbd 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java @@ -45,37 +45,41 @@ import models.dataFlowModel.ResourceDependencyGraph; import models.dataFlowModel.ResourceNode; import models.visualModel.FormulaChannelGenerator; -import parser.ExpectedAssignment; -import parser.ExpectedChannel; -import parser.ExpectedChannelName; -import parser.ExpectedEquals; -import parser.ExpectedFormulaChannel; -import parser.ExpectedGeometry; -import parser.ExpectedInOrOutOrRefKeyword; -import parser.ExpectedIoChannel; -import parser.ExpectedLeftCurlyBracket; -import parser.ExpectedModel; -import parser.ExpectedNode; -import parser.ExpectedRHSExpression; -import parser.ExpectedResource; -import parser.ExpectedRightBracket; -import parser.ExpectedStateTransition; import parser.Parser; import parser.Parser.TokenStream; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedFormulaChannel; +import parser.exceptions.ExpectedGeometry; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedIoChannel; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedModel; +import parser.exceptions.ExpectedNode; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedResource; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; import parser.ParserDTRAM; -import parser.WrongLHSExpression; -import parser.WrongRHSExpression; +import parser.ParserDTRAMForWebService; public class Editor { final int PORT_DIAMETER = 8; final int PORT_RADIUS = PORT_DIAMETER / 2; - private mxGraph graph = null; - private String curFileName = null; - private String curFilePath = null; - private DataFlowModel model = null; - private ResourceDependencyGraph resourceDependencyGraph = null; - private ArrayList codes = null; + protected String curFileName = null; + protected String curFilePath = null; + protected ArrayList codes = null; + + protected DataFlowModel model = null; + protected mxGraph graph = null; + + protected ResourceDependencyGraph resourceDependencyGraph = null; + public Editor(mxGraph graph) { this.graph = graph; @@ -158,18 +162,16 @@ String extension =""; if(file != null && file.exists()) { - //�t�@�C�������擾 + // get a file's name String name = file.getName(); - //�g���q���擾 + // get a file's extention extension = name.substring(name.lastIndexOf(".")); } if(extension.contains(".model")) { openModel(file); } else { - ParserDTRAM parserDTRAM = new ParserDTRAM(new BufferedReader(new FileReader(file))); - try { model = parserDTRAM.doParseModel(); graph = constructGraph(model); @@ -215,7 +217,7 @@ } return null; } - + public void save() { if (curFilePath != null) { @@ -223,10 +225,10 @@ File file = new File(curFilePath); String extension = ""; if(file != null && file.exists()) { - //�t�@�C�������擾 + // get a file's name String name = file.getName(); - //�g���q���擾 + // get a file's extention extension = name.substring(name.lastIndexOf(".")); } if(extension.contains(".model")) { @@ -376,7 +378,7 @@ return graph; } - + public void setDAGLayout() { Object parent = graph.getDefaultParent(); graph.getModel().beginUpdate(); @@ -588,12 +590,14 @@ public void setChannelCode(DataflowChannelGenerator ch, String code) { ch.setSourceText(code); - TokenStream stream = new TokenStream(); + TokenStream stream = new Parser.TokenStream(); + Parser parser = new Parser(stream); + for (String line: code.split("\n")) { stream.addLine(line); } try { - DataflowChannelGenerator ch2 = Parser.parseChannel(stream, getModel()); + DataflowChannelGenerator ch2 = parser.parseChannel(getModel()); for (ChannelMember chm2: ch2.getInputChannelMembers()) { for (ChannelMember chm: ch.getInputChannelMembers()) { if (chm2.getIdentifierTemplate() == chm.getIdentifierTemplate()) { diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java index 6917659..1b0c7f1 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java @@ -1,22 +1,117 @@ package graphicalrefactor.editor; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; + import com.mxgraph.view.mxGraph; -/** +import algorithms.UpdateConflictCheck; +import models.dataFlowModel.DataFlowModel; +import models.webServices.Service; +import models.webServices.WebServicesInfo; +import parser.ParserDTRAMForWebService; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedFormulaChannel; +import parser.exceptions.ExpectedGeometry; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedIoChannel; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedModel; +import parser.exceptions.ExpectedNode; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedResource; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; +import parser.exceptions.webService.ExpectedBaseURL; +import parser.exceptions.webService.ExpectedResources; +import parser.exceptions.webService.ExpectedWebService; + +/**-------------------------------------------------------------------------------- * this class is called when you design of Web services. +/**-------------------------------------------------------------------------------- * - * @author k-Fujii - * + * @author k-fujii */ public class WebServiceEditor extends Editor{ - /** - * [Constructor] + private WebServicesInfo webServices = null; + + /**-------------------------------------------------------------------------------- + * [constructor] + /**-------------------------------------------------------------------------------- * * @param graph : the editor of generate prototype tool. * */ - public WebServiceEditor(mxGraph graph) { + public WebServiceEditor(final mxGraph graph) { super(graph); + + this.webServices = new WebServicesInfo(); + } + + /**-------------------------------------------------------------------------------- + * [public] + /**-------------------------------------------------------------------------------- + /** + * @param file + */ + @Override + public DataFlowModel open(final File file) { + String extension =""; + if(file != null && file.exists()) { + String name = file.getName(); + extension = name.substring(name.lastIndexOf(".")); + } + if(extension.contains(".model")) { + openModel(file); + } else { + try { + ParserDTRAMForWebService parser = new ParserDTRAMForWebService(new BufferedReader(new FileReader(file))); + try { + model = parser.doParseModel(); + graph = constructGraph(model); + + parser.doParseGeometry(graph); + parser.doParseWebService(this,model); + + curFilePath = file.getAbsolutePath(); + curFileName = file.getName(); + + if (!UpdateConflictCheck.run(model)) return null; + + updateResourceDependencyGraph(model); + + return model; + } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefKeyword + | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression + | WrongRHSExpression | ExpectedRightBracket | ExpectedAssignment + | ExpectedModel | ExpectedGeometry | ExpectedNode | ExpectedResource + | ExpectedFormulaChannel | ExpectedIoChannel + | ExpectedWebService | ExpectedBaseURL| ExpectedResources e) { + e.printStackTrace(); + } + }catch(FileNotFoundException e) { + e.printStackTrace(); + } + } + + return null; + } + + /**-------------------------------------------------------------------------------- + * setter + /**-------------------------------------------------------------------------------- + /** + * @param service + */ + public void addWebService(final Service service) { + this.webServices.addService(service); } } diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactor.java index ab035a5..e3e900d 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactor.java @@ -17,6 +17,7 @@ import com.mxgraph.view.mxGraph; import graphicalrefactor.editor.Editor; +import graphicalrefactor.editor.WebServiceEditor; public class GraphicalRefactor extends JFrame { private static final long serialVersionUID = -8690140317781055614L; @@ -43,7 +44,7 @@ } }; - editor = new Editor(graph); + editor = new WebServiceEditor(graph); graphComponent = new mxGraphComponent(graph) { protected mxICellEditor createCellEditor() { diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java index 688631e..a4d1d06 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java @@ -1,18 +1,13 @@ package graphicalrefactor.views; -import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; -import java.awt.GridLayout; -import java.awt.Panel; import java.awt.Rectangle; import java.util.EventObject; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JComboBox; -import javax.swing.JEditorPane; -import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -34,30 +29,30 @@ import models.dataFlowModel.PushPullAttribute; import models.dataFlowModel.PushPullValue; import models.visualModel.FormulaChannelGenerator; -import parser.ExpectedRightBracket; import parser.Parser; import parser.Parser.TokenStream; +import parser.exceptions.ExpectedRightBracket; public class GraphicalRefactorCellEditor implements mxICellEditor { public int DEFAULT_MIN_WIDTH = 70; public int DEFAULT_MIN_HEIGHT = 30; public double DEFAULT_MINIMUM_EDITOR_SCALE = 1; - + protected double minimumEditorScale = DEFAULT_MINIMUM_EDITOR_SCALE; protected int minimumWidth = DEFAULT_MIN_WIDTH; protected int minimumHeight = DEFAULT_MIN_HEIGHT; - + private Object editingCell; private EventObject trigger; private JComboBox comboBox; private mxGraphComponent graphComponent; private Editor editor; - + public GraphicalRefactorCellEditor(mxGraphComponent graphComponent, Editor editor) { this.graphComponent = graphComponent; this.editor = editor; } - + @Override public Object getEditingCell() { return editingCell; @@ -68,7 +63,7 @@ if (editingCell != null) { stopEditing(true); } - + if (!graphComponent.getGraph().getModel().isEdge(cell)) { DataFlowModel model = editor.getModel(); DataflowChannelGenerator ch = (DataflowChannelGenerator) model.getChannelGenerator((String) ((mxCell) cell).getValue()); @@ -79,51 +74,54 @@ return; } } - + if(ch instanceof FormulaChannelGenerator) { - + JPanel panel = new JPanel(); JLabel label1 = new JLabel("Formula: "); JLabel label2 = new JLabel("Source: "); GridBagLayout layout = new GridBagLayout(); panel.setLayout(layout); GridBagConstraints gbc = new GridBagConstraints(); - + gbc.gridx = 0; gbc.gridy = 0; layout.setConstraints(label1, gbc); panel.add(label1); - + gbc.gridx = 1; gbc.gridy = 0; JTextField formulaText = new JTextField(((FormulaChannelGenerator) ch).getFormula(),15); layout.setConstraints(formulaText, gbc); panel.add(formulaText); - + gbc.gridx = 0; gbc.gridy = 1; layout.setConstraints(label2, gbc); panel.add(label2); - + gbc.gridx = 1; gbc.gridy = 1; JTextArea textArea = new JTextArea(ch.getSourceText(),7,15); textArea.setEditable(false); layout.setConstraints(textArea, gbc); panel.add(textArea); - + int r = JOptionPane.showConfirmDialog( - null, // �I�[�i�[�E�B���h�E - panel, // ���b�Z�[�W - "Edit Formula Channel", // �E�B���h�E�^�C�g�� - JOptionPane.OK_CANCEL_OPTION, // �I�v�V�����i�{�^���̎�ށj - JOptionPane.QUESTION_MESSAGE); // ���b�Z�[�W�^�C�v�i�A�C�R���̎�ށj + null, // owner window + panel, // message + "Edit Formula Channel", // window's title + JOptionPane.OK_CANCEL_OPTION, // option (button types) + JOptionPane.QUESTION_MESSAGE); // message type (icon types) if(r == JOptionPane.OK_OPTION) { + TokenStream stream = new Parser.TokenStream(); + Parser parser = new Parser(stream); + String formula = formulaText.getText(); - TokenStream stream = new TokenStream(); stream.addLine(formula.split(Parser.EQUALS)[1]); + try { - Expression exp = Parser.parseTerm(stream, editor.getModel()); + Expression exp = parser.parseTerm(stream, editor.getModel()); ((FormulaChannelGenerator) ch).setFormula(formula); ((FormulaChannelGenerator) ch).setFormulaTerm(exp); } catch (ExpectedRightBracket e) { @@ -131,24 +129,24 @@ } } }else { - JPanel panel = new JPanel(); - JTextArea textArea = new JTextArea(ch.getSourceText(), 10, 20); - panel.add(textArea); -// JEditorPane panel = new JEditorPane("text/plain", ch.toString()); -// panel.setEditable(true); - int ret = JOptionPane.showConfirmDialog(null, panel, "Channel Code", JOptionPane.OK_CANCEL_OPTION); - if (ret == JOptionPane.OK_OPTION) { - editor.setChannelCode(ch, textArea.getText()); - } + JPanel panel = new JPanel(); + JTextArea textArea = new JTextArea(ch.getSourceText(), 10, 20); + panel.add(textArea); + // JEditorPane panel = new JEditorPane("text/plain", ch.toString()); + // panel.setEditable(true); + int ret = JOptionPane.showConfirmDialog(null, panel, "Channel Code", JOptionPane.OK_CANCEL_OPTION); + if (ret == JOptionPane.OK_OPTION) { + editor.setChannelCode(ch, textArea.getText()); } - return; } + return; + } mxCellState state = graphComponent.getGraph().getView().getState(cell); if (state != null && state.getLabel() != null && !state.getLabel().equals("")) { editingCell = cell; trigger = evt; - + double scale = Math.max(minimumEditorScale, graphComponent.getGraph().getView().getScale()); Object value = graphComponent.getGraph().getModel().getValue(cell); if (value != null && value instanceof PushPullAttribute) { @@ -203,7 +201,7 @@ graphComponent.requestFocusInWindow(); } } - + public String getCurrentValue() { return (String) comboBox.getSelectedItem(); } diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java index 1e29a75..42067b7 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java @@ -24,7 +24,7 @@ public class GraphicalRefactorMenuBar extends JMenuBar { private static final long serialVersionUID = 4811536194182272888L; - + private GraphicalRefactor graphicalModelRefactor = null; private NewResourceAction newResourceAction = null; private NewChannelAction newChannelAction = null; @@ -36,7 +36,7 @@ private DAGLayoutAction dagLayoutAction = null; private TreeLayoutAction treeLayoutAction = null; private CircleLayoutAction circleLayoutAction = null; - + public GraphicalRefactorMenuBar(GraphicalRefactor graphicalModelRefactor) { this.graphicalModelRefactor = graphicalModelRefactor; JMenu newMenu = new JMenu("New"); @@ -54,20 +54,20 @@ menu.add(new SaveAsAction(graphicalModelRefactor)); menu.addSeparator(); menu.add(new ExitAction()); - + menu = add(new JMenu("Edit")); menu.add(deleteAction = new DeleteAction(graphicalModelRefactor.getEditor())); - - + + menu = add(new JMenu("Layout")); menu.add(dagLayoutAction = new DAGLayoutAction(graphicalModelRefactor.getEditor())); menu.add(treeLayoutAction = new TreeLayoutAction(graphicalModelRefactor.getEditor())); menu.add(circleLayoutAction = new CircleLayoutAction(graphicalModelRefactor.getEditor())); - + menu = add(new JMenu("View")); menu.add(new ZoomInAction(graphicalModelRefactor.getGraphComponent())); menu.add(new ZoomOutAction(graphicalModelRefactor.getGraphComponent())); - + menu = add(new JMenu("Generate")); menu.add(javaPrototypeGenerateAction = new JavaPrototypeGenerateAction(graphicalModelRefactor.getEditor())); menu.add(jerseyPrototypeGenerateAction = new JerseyPrototypeGenerateAction(graphicalModelRefactor.getEditor())); diff --git a/AlgebraicDataflowArchitectureModel/src/models/webServices/Service.java b/AlgebraicDataflowArchitectureModel/src/models/webServices/Service.java index eb2f1cb..42a5cc4 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/webServices/Service.java +++ b/AlgebraicDataflowArchitectureModel/src/models/webServices/Service.java @@ -7,47 +7,74 @@ public class Service { private String name = null; + private String baseURL = null; private ArrayList identifireTemplates = null; - - /** - * [Constructor] - * identifireTemplates are Empty - * - * @param name : it's Web services name. - * - */ - public Service(final String name) { + /**-------------------------------------------------------------------------------- + * [Constructor] + /**-------------------------------------------------------------------------------- + * identifireTemplates are Empty + * + * @param name : it's Web services name. + */ + public Service(final String name, final String baseURL) { this.name = name; + this.baseURL = baseURL; this.identifireTemplates = new ArrayList<>(); } - /** - * [Constructor] - * - * @param name : it's Web services name. - * @param identifierTemplates : the list of resources which formal model of DTRAM. - */ + /**-------------------------------------------------------------------------------- + * + * @param name : it's Web services name. + * @param identifierTemplates : the list of resources which formal model of DTRAM. + */ public Service(final String name, final ArrayList identifierTemplates) { this.name = name; this.identifireTemplates = identifierTemplates; } - - /** - * [getter] - * - * @return you'll get name of service. - */ + + /**-------------------------------------------------------------------------------- + * Copy Constructor + * + * @param name : it's Web services name. + */ + private Service(final Service copy) { + this.name = copy.name; + this.baseURL = copy.baseURL; + this.identifireTemplates = copy.identifireTemplates; + } + + /**-------------------------------------------------------------------------------- + * [public] + /**-------------------------------------------------------------------------------- + * [getter] + * + * @return you'll get name of service. + */ public String getName() { return this.name; } - /** - * [getter] - * - * @return you'll get list of an identifier template. - */ + /**-------------------------------------------------------------------------------- + * @return you'll get services's baseURL + */ + public String getBaseURL() { + return this.baseURL; + } + + /**-------------------------------------------------------------------------------- + * @return you'll get list of an identifier template. + */ public List getIdentifierTemplates(){ return this.identifireTemplates; } + + /**-------------------------------------------------------------------------------- + * add new to List + * + * @param identifierTemplate + */ + public void addIdentifireTemplate(final IdentifierTemplate identifierTemplate) { + this.identifireTemplates.add(identifierTemplate); + } } diff --git a/AlgebraicDataflowArchitectureModel/src/models/webServices/WebServices.java b/AlgebraicDataflowArchitectureModel/src/models/webServices/WebServices.java deleted file mode 100644 index b788a86..0000000 --- a/AlgebraicDataflowArchitectureModel/src/models/webServices/WebServices.java +++ /dev/null @@ -1,31 +0,0 @@ -package models.webServices; - -import java.util.ArrayList; -import java.util.List; - -import models.dataFlowModel.DataFlowModel; - -public class WebServices { - - private ArrayList services = null; - - /** - * [Constructor] - * - * @param dataFlowModel : get identifireTemplates and initialize each services. - * - */ - public WebServices(final DataFlowModel dataFlowModel) - { - this.services = new ArrayList<>(); - } - - /** - * [getter] - * - * @return you'll get list of a service. - */ - public List getServices(){ - return this.services; - } -} diff --git a/AlgebraicDataflowArchitectureModel/src/models/webServices/WebServicesInfo.java b/AlgebraicDataflowArchitectureModel/src/models/webServices/WebServicesInfo.java new file mode 100644 index 0000000..4e9eeb6 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/models/webServices/WebServicesInfo.java @@ -0,0 +1,46 @@ +package models.webServices; + +import java.util.ArrayList; +import java.util.List; + +public class WebServicesInfo { + + private ArrayList services = null; + + /**-------------------------------------------------------------------------------- + * [Constructor] + /**-------------------------------------------------------------------------------- + * + */ + public WebServicesInfo() { + this.services = new ArrayList<>(); + } + + /**-------------------------------------------------------------------------------- + * copy constructor + */ + private WebServicesInfo(final WebServicesInfo webServicesInfo) { + this.services = webServicesInfo.services; + } + + + /**-------------------------------------------------------------------------------- + * [public] + /**-------------------------------------------------------------------------------- + * [getter] + * + * @return you'll get list of a service. + */ + public List getServices(){ + return this.services; + } + + /**-------------------------------------------------------------------------------- + * [setter] + * + * @param service + */ + public void addService(final Service service) { + this.services.add(service); + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedAssignment.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedAssignment.java deleted file mode 100644 index 2b7a495..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedAssignment.java +++ /dev/null @@ -1,8 +0,0 @@ -package parser; - -public class ExpectedAssignment extends ParseException { - - public ExpectedAssignment(int line) { - super(line); - } -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedChannel.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedChannel.java deleted file mode 100644 index e80a4b8..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedChannel.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedChannel extends ParseException { - - public ExpectedChannel(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedChannelName.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedChannelName.java deleted file mode 100644 index e802150..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedChannelName.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedChannelName extends ParseException { - - public ExpectedChannelName(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedEquals.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedEquals.java deleted file mode 100644 index 89640fd..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedEquals.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedEquals extends ParseException { - - public ExpectedEquals(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedFormulaChannel.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedFormulaChannel.java deleted file mode 100644 index 420655e..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedFormulaChannel.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedFormulaChannel extends ParseException { - - public ExpectedFormulaChannel(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedGeometry.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedGeometry.java deleted file mode 100644 index b7927e0..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedGeometry.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedGeometry extends ParseException { - - public ExpectedGeometry(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedInOrOutOrRefKeyword.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedInOrOutOrRefKeyword.java deleted file mode 100644 index bb10522..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedInOrOutOrRefKeyword.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedInOrOutOrRefKeyword extends ParseException { - - public ExpectedInOrOutOrRefKeyword(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedIoChannel.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedIoChannel.java deleted file mode 100644 index d6885fd..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedIoChannel.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedIoChannel extends ParseException { - - public ExpectedIoChannel(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedLeftCurlyBracket.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedLeftCurlyBracket.java deleted file mode 100644 index 7f14ae0..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedLeftCurlyBracket.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedLeftCurlyBracket extends ParseException { - - public ExpectedLeftCurlyBracket(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedModel.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedModel.java deleted file mode 100644 index d3758e3..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedModel.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedModel extends ParseException { - - public ExpectedModel(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedNode.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedNode.java deleted file mode 100644 index c82a553..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedNode.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedNode extends ParseException { - - public ExpectedNode(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedRHSExpression.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedRHSExpression.java deleted file mode 100644 index 2f315a5..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedRHSExpression.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedRHSExpression extends ParseException { - - public ExpectedRHSExpression(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedResource.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedResource.java deleted file mode 100644 index b462e21..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedResource.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedResource extends ParseException { - - public ExpectedResource(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedRightBracket.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedRightBracket.java deleted file mode 100644 index 34ac65b..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedRightBracket.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedRightBracket extends ParseException { - - public ExpectedRightBracket(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedStateTransition.java b/AlgebraicDataflowArchitectureModel/src/parser/ExpectedStateTransition.java deleted file mode 100644 index 0a50c12..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ExpectedStateTransition.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class ExpectedStateTransition extends ParseException { - - public ExpectedStateTransition(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ParseException.java b/AlgebraicDataflowArchitectureModel/src/parser/ParseException.java deleted file mode 100644 index c9dcf30..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/ParseException.java +++ /dev/null @@ -1,10 +0,0 @@ -package parser; - -public class ParseException extends Exception { - protected int line; - - public ParseException(int line) { - super("at line " + (line + 1)); - this.line = line; - } -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/Parser.java b/AlgebraicDataflowArchitectureModel/src/parser/Parser.java index 77effe9..96eac7b 100644 --- a/AlgebraicDataflowArchitectureModel/src/parser/Parser.java +++ b/AlgebraicDataflowArchitectureModel/src/parser/Parser.java @@ -1,5 +1,6 @@ package parser; +import java.awt.image.DataBufferDouble; import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; @@ -17,9 +18,21 @@ import models.dataConstraintModel.StateTransition; import models.dataFlowModel.DataFlowModel; import models.dataFlowModel.DataflowChannelGenerator; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; -public class Parser { - protected BufferedReader reader; +public class Parser { + protected TokenStream stream; + public static final String CHANNEL = "channel"; public static final String INIT = "init"; public static final String LEFT_CURLY_BRACKET = "{"; @@ -46,14 +59,14 @@ public static final String ASSIGNMENT = "="; public static final String COMMA = ","; public static final String COLON = ":"; - - public Parser(BufferedReader reader) { - this.reader = reader; + + + public Parser(final TokenStream stream) { + this.stream = stream; } - - public DataFlowModel doParse() - throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { - TokenStream stream = new TokenStream(); + + public Parser(final BufferedReader reader) { + this.stream = new TokenStream(); try { String line; while ((line = reader.readLine()) != null) { @@ -62,17 +75,19 @@ reader.close(); } catch (IOException e) { e.printStackTrace(); - return null; } - - return parseDataFlowModel(stream); + } + + public DataFlowModel doParse() + throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { + return parseDataFlowModel(); } - public static DataFlowModel parseDataFlowModel(TokenStream stream) + public DataFlowModel parseDataFlowModel() throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { DataFlowModel model = new DataFlowModel(); DataflowChannelGenerator channel; - while ((channel = parseChannel(stream, model)) != null) { + while ((channel = parseChannel(model)) != null) { if (channel.getInputChannelMembers().size() == 0) { model.addIOChannelGenerator(channel); } else { @@ -82,41 +97,47 @@ return model; } - public static DataflowChannelGenerator parseChannel(TokenStream stream, DataFlowModel model) - throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { + public DataflowChannelGenerator parseChannel(DataFlowModel model) + throws + ExpectedLeftCurlyBracket, ExpectedRightBracket, ExpectedAssignment, + ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, + ExpectedChannel, ExpectedChannelName, ExpectedInOrOutOrRefKeyword, + ExpectedStateTransition, ExpectedEquals + { if (!stream.hasNext()) return null; - if (stream.checkNext().equals(RIGHT_CURLY_BRACKET)) { - return null; - } + if (stream.checkNext().equals(RIGHT_CURLY_BRACKET)) return null; + String channelOrInitKeyword = stream.next(); if (!channelOrInitKeyword.equals(CHANNEL)) { if (!channelOrInitKeyword.equals(INIT)) throw new ExpectedChannel(stream.getLine()); - parseInit(stream, model); + parseInit(model); channelOrInitKeyword = stream.next(); } if (!stream.hasNext()) throw new ExpectedChannelName(stream.getLine()); + String channelName = stream.next(); if (channelName.equals(LEFT_CURLY_BRACKET)) throw new ExpectedChannelName(stream.getLine()); - + int fromLine = stream.getLine(); DataflowChannelGenerator channel = new DataflowChannelGenerator(channelName); String leftBracket = stream.next(); if (!leftBracket.equals(LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); + String inOrOutOrRef = null; while (stream.hasNext() && !(inOrOutOrRef = stream.next()).equals(RIGHT_CURLY_BRACKET)) { ChannelMember channelMember = null; if (inOrOutOrRef.equals(IN)) { - channelMember = parseChannelMember(stream, model, inOrOutOrRef); + channelMember = parseChannelMember(model, inOrOutOrRef); if (channelMember != null) { channel.addChannelMemberAsInput(channelMember); } } else if (inOrOutOrRef.equals(OUT)) { - channelMember = parseChannelMember(stream, model, inOrOutOrRef); + channelMember = parseChannelMember(model, inOrOutOrRef); if (channelMember != null) { channel.addChannelMemberAsOutput(channelMember); } } else if (inOrOutOrRef.equals(REF)) { - channelMember = parseChannelMember(stream, model, inOrOutOrRef); + channelMember = parseChannelMember(model, inOrOutOrRef); if (channelMember != null) { channel.addChannelMemberAsReference(channelMember); } @@ -129,7 +150,10 @@ return channel; } - public static void parseInit(TokenStream stream, DataFlowModel model) throws ExpectedLeftCurlyBracket, ExpectedAssignment, ExpectedRHSExpression, WrongRHSExpression, ExpectedRightBracket { + public void parseInit(DataFlowModel model) + throws + ExpectedLeftCurlyBracket, ExpectedAssignment, ExpectedRHSExpression, WrongRHSExpression, ExpectedRightBracket + { String leftBracket = stream.next(); if (!leftBracket.equals(LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); String resourceName = null; @@ -140,42 +164,45 @@ identifier = new IdentifierTemplate(resourceName, 0); model.addIdentifierTemplate(identifier); } - + if (!stream.hasNext()) throw new ExpectedAssignment(stream.getLine()); String colon = stream.next(); if (!colon.equals(COLON)) throw new ExpectedAssignment(stream.getLine()); if (!stream.hasNext()) throw new ExpectedAssignment(stream.getLine()); String equals = stream.next(); if (!equals.equals(ASSIGNMENT)) throw new ExpectedAssignment(stream.getLine()); - + int toLine = stream.getLine(); Expression rightTerm = null; if (!stream.hasNext()) throw new ExpectedRHSExpression(stream.getLine()); rightTerm = parseTerm(stream, model); if (rightTerm == null) throw new WrongRHSExpression(stream.getLine()); - + identifier.setInitialValue(rightTerm); identifier.setInitText(stream.getSourceText(fromLine, toLine)); } } - public static ChannelMember parseChannelMember(TokenStream stream, DataFlowModel model, String inOrOutOrRef) - throws ExpectedRightBracket, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression { + public ChannelMember parseChannelMember(DataFlowModel model, final String inOrOutOrRef) + throws + ExpectedRightBracket, ExpectedStateTransition, ExpectedEquals, + ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression + { if (!stream.hasNext()) throw new ExpectedStateTransition(stream.getLine()); Expression leftTerm = parseTerm(stream, model); if (leftTerm == null || !(leftTerm instanceof Term)) throw new WrongLHSExpression(stream.getLine()); Expression rightTerm = null; - + if (!inOrOutOrRef.equals(REF)) { if (!stream.hasNext()) throw new ExpectedEquals(stream.getLine()); String equals = stream.next(); if (!equals.equals(EQUALS)) throw new ExpectedEquals(stream.getLine()); - + if (!stream.hasNext()) throw new ExpectedRHSExpression(stream.getLine()); rightTerm = parseTerm(stream, model); if (rightTerm == null) throw new WrongRHSExpression(stream.getLine()); } - + String resourceName = ((Term) leftTerm).getSymbol().getName(); IdentifierTemplate identifier = model.getIdentifierTemplate(resourceName); if (identifier == null) { @@ -212,7 +239,9 @@ return channelMember; } - public static Expression parseTerm(TokenStream stream, DataFlowModel model) throws ExpectedRightBracket { + public Expression parseTerm(TokenStream stream, DataFlowModel model) + throws ExpectedRightBracket + { ArrayList expressions = new ArrayList<>(); ArrayList operators = new ArrayList<>(); String operator = null; @@ -343,17 +372,35 @@ return firstMonomial; } + /**-------------------------------------------------------------------------------- + * [protected] + /**-------------------------------------------------------------------------------- + * checking the token has a token. + * + * @param token + * @param specificTokenName + */ + protected Boolean isMatchKeyword(final String token, final String specificTokenName) { + if(token == null) return false; + if(specificTokenName == null) return false; + return token.equals(specificTokenName); + } + + /**-------------------------------------------------------------------------------- + * [inner class] + * "TokenStream" has a token what is read from description of "Architecture Language Model". + */ public static class TokenStream { private ArrayList> tokens = new ArrayList<>(); private ArrayList lines = new ArrayList<>(); private int line = 0; private int n = 0; - + public TokenStream() { line = 0; n = 0; } - + public void addLine(String line) { lines.add(line); line = line.trim(); @@ -393,8 +440,8 @@ RIGHT_CURLY_BRACKET, RIGHT_CURLY_BRACKET_REGX)); } - - private ArrayList splitBy(List tokens, String delimiter, String delimiterRegx) { + + private ArrayList splitBy(final List tokens, final String delimiter, final String delimiterRegx) { ArrayList newTokens = new ArrayList<>(); for (String token: tokens) { String[] splitTokens = token.split(delimiterRegx); @@ -415,7 +462,7 @@ } return newTokens; } - + public String next() { if (line >= tokens.size()) return null; while (n >= tokens.get(line).size()) { @@ -427,7 +474,7 @@ n++; return token; } - + public String checkNext() { if (line >= tokens.size()) return null; while (n >= tokens.get(line).size()) { @@ -437,7 +484,7 @@ } return tokens.get(line).get(n); } - + public boolean hasNext() { if (line >= tokens.size()) return false; while (n >= tokens.get(line).size()) { @@ -447,11 +494,11 @@ } return true; } - + public int getLine() { return line; } - + public String getSourceText(int from, int to) { String text = ""; for (int l = from; l <= to; l++) { diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java index 0012395..c2ab83b 100644 --- a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java +++ b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java @@ -10,145 +10,166 @@ import com.mxgraph.view.mxGraph; import com.mxgraph.view.mxGraphView; - import models.dataFlowModel.DataFlowModel; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedFormulaChannel; +import parser.exceptions.ExpectedGeometry; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedIoChannel; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedModel; +import parser.exceptions.ExpectedNode; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedResource; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; public class ParserDTRAM extends Parser { + private static final String MODEL_GROUP = "model"; + private static final String GEOMETRY_GROUP = "geometry"; + private static final String GEOMETORY_NODE = "node"; + private static final String RESOURCE_NODE = "r"; + private static final String CHANNEL_NODE = "c"; + private static final String FORMULA_CHANNEL_NODE = "fc"; + private static final String IO_CHANNEL_NODE = "ioc"; - private static TokenStream stream; - - public static final String MODEL = "model"; - public static final String GEOMETRY = "geometry"; - public static final String NODE = "node"; - public static final String RESOURCE = "r"; - public static final String CHANNEL = "c"; - public static final String FORMULA_CHANNEL = "fc"; - public static final String IO_CHANNEL = "ioc"; - - - public ParserDTRAM(BufferedReader reader) { + /**-------------------------------------------------------------------------------- + * [Constructor] + /**-------------------------------------------------------------------------------- + * + * @param stream + */ + public ParserDTRAM(final TokenStream stream) { + super(stream); + } + /**-------------------------------------------------------------------------------- + * + * @param reader + */ + public ParserDTRAM(final BufferedReader reader) { super(reader); } + /**-------------------------------------------------------------------------------- + * [public] + /**-------------------------------------------------------------------------------- + * + * @param reader + */ public DataFlowModel doParseModel() throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment, ExpectedModel, ExpectedGeometry { - stream = new TokenStream(); - try { - String line; - while ((line = reader.readLine()) != null) { - stream.addLine(line); - } - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - DataFlowModel model = parseModel(stream); + DataFlowModel model = getParsedModel(); return model; } + /**-------------------------------------------------------------------------------- + * + * @param graph + */ public void doParseGeometry(mxGraph graph) throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment, ExpectedModel, ExpectedGeometry, ExpectedNode, ExpectedResource, ExpectedFormulaChannel, ExpectedIoChannel{ - parseGeometry(stream, graph); + parseGeometry(graph); } - public static DataFlowModel parseModel(TokenStream stream) + /**-------------------------------------------------------------------------------- + * [private] + /**-------------------------------------------------------------------------------- + * + * @param stream + */ + private DataFlowModel getParsedModel() throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment, ExpectedModel, ExpectedGeometry { - if (!stream.hasNext()) { - return null; - } + if (!stream.hasNext()) throw new NullPointerException(); String modelKeyword = stream.next(); - if (!modelKeyword.equals(MODEL)) { - throw new ExpectedModel(stream.getLine()); - } - - if (!stream.hasNext()) { - throw new ExpectedModel(stream.getLine()); - } - + if (!modelKeyword.equals(MODEL_GROUP)) throw new ExpectedModel(stream.getLine()); + if (!stream.hasNext()) throw new ExpectedModel(stream.getLine()); + String leftBracket = stream.next(); - if (!leftBracket.equals(LEFT_CURLY_BRACKET)) { - throw new ExpectedLeftCurlyBracket(stream.getLine()); - } - - DataFlowModel model = Parser.parseDataFlowModel(stream); - + if (!leftBracket.equals(LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); + + DataFlowModel model = parseDataFlowModel(); + String rightBracket = stream.next(); - if(!rightBracket.equals(RIGHT_CURLY_BRACKET)) { - throw new ExpectedRightBracket(stream.getLine()); - } + if(!rightBracket.equals(RIGHT_CURLY_BRACKET))throw new ExpectedRightBracket(stream.getLine()); + return model; } - public static void parseGeometry(TokenStream stream, mxGraph graph) + /**-------------------------------------------------------------------------------- + * change graph's geometries from "DTRAM" file. + * @param stream + * @param graph + */ + private void parseGeometry(mxGraph graph) throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment,ExpectedModel, ExpectedGeometry, ExpectedNode, ExpectedResource, ExpectedFormulaChannel, ExpectedIoChannel { - - String geometry = stream.next(); - if (!geometry.equals(GEOMETRY)) { - throw new ExpectedGeometry(stream.getLine()); - } + if (!isMatchKeyword(stream.next(), GEOMETRY_GROUP)) throw new ExpectedGeometry(stream.getLine()); - String leftBracket = stream.next(); - if(!leftBracket.equals(LEFT_CURLY_BRACKET)) { - throw new ExpectedLeftCurlyBracket(stream.getLine()); - } - + if (!isMatchKeyword(stream.next(), LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); + String node = stream.next(); - while (node.equals(NODE)) { + while (node.equals(GEOMETORY_NODE)) { + String rOrFcOrIocOrC = stream.next(); - if (!rOrFcOrIocOrC.equals(RESOURCE) &&!rOrFcOrIocOrC.equals(FORMULA_CHANNEL) &&!rOrFcOrIocOrC.equals(IO_CHANNEL) &&!rOrFcOrIocOrC.equals(CHANNEL)) { + if (!rOrFcOrIocOrC.equals(RESOURCE_NODE) + && !rOrFcOrIocOrC.equals(FORMULA_CHANNEL_NODE) + && !rOrFcOrIocOrC.equals(CHANNEL_NODE) + && !rOrFcOrIocOrC.equals(IO_CHANNEL_NODE)) throw new ExpectedNode(stream.getLine()); - } - + String name = stream.next(); - - String colon = stream.next(); - + + if (!isMatchKeyword(stream.next(), COLON)) throw new ExpectedAssignment(stream.getLine()); + String x = stream.next(); - int xC = Integer.parseInt(x); // C = Coordinate(���W) - - String comma1 = stream.next(); - + int xC = Integer.parseInt(x); // C = Coordinate(x,y,w,h) + + if (!isMatchKeyword(stream.next(), COMMA))throw new ExpectedAssignment(stream.getLine()); + String y = stream.next(); int yC = Integer.parseInt(y); - - String comma2 = stream.next(); - + + if (!isMatchKeyword(stream.next(), COMMA))throw new ExpectedAssignment(stream.getLine()); + String w = stream.next(); int wC = Integer.parseInt(w); - - String comma3 = stream.next(); - + + if (!isMatchKeyword(stream.next(), COMMA))throw new ExpectedAssignment(stream.getLine()); + String h = stream.next(); int hC = Integer.parseInt(h); - + Object root = graph.getDefaultParent(); mxIGraphModel graphModel = graph.getModel(); for (int i = 0; i < graph.getModel().getChildCount(root); i++) { + Object cell = graph.getModel().getChildAt(root, i); - if (graph.getModel().isVertex(cell)) { - mxGeometry geom = (mxGeometry) ((mxCell) cell).getGeometry().clone(); - mxGraphView view = graph.getView(); - mxCellState state = view.getState(cell); - if (name.equals(state.getLabel())){ - geom.setX(xC); - geom.setY(yC); - graphModel.setGeometry(cell, geom); - } - } + if (!graph.getModel().isVertex(cell)) continue; + + mxGeometry geom = (mxGeometry) ((mxCell) cell).getGeometry().clone(); + mxGraphView view = graph.getView(); + mxCellState state = view.getState(cell); + + if (!name.equals(state.getLabel())) continue; + + geom.setX(xC); + geom.setY(yC); + graphModel.setGeometry(cell, geom); } node = stream.next(); } - if (!node.equals(RIGHT_CURLY_BRACKET)) { - throw new ExpectedRightBracket(stream.getLine()); - } + + if (!node.equals(RIGHT_CURLY_BRACKET)) throw new ExpectedRightBracket(stream.getLine()); } } - diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAMForWebService.java b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAMForWebService.java new file mode 100644 index 0000000..6de9a62 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAMForWebService.java @@ -0,0 +1,112 @@ +package parser; + +import java.io.BufferedReader; + +import graphicalrefactor.editor.WebServiceEditor; +import models.dataConstraintModel.IdentifierTemplate; +import models.dataFlowModel.DataFlowModel; +import models.webServices.Service; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.webService.ExpectedBaseURL; +import parser.exceptions.webService.ExpectedResources; +import parser.exceptions.webService.ExpectedWebService; + +/**-------------------------------------------------------------------------------- + * This parser is selected, if somebody designs a web-service. + * @author k-Fujii + */ +public class ParserDTRAMForWebService extends ParserDTRAM { + + private static final String SERVICES_GROUP = "services"; + private static final String SERVICE_GROUP = "service"; + private static final String BASE_URL_OPTION = "baseURL"; + private static final String RESOURCES_OPTION = "resources"; + + /**-------------------------------------------------------------------------------- + * [constructor] + /**-------------------------------------------------------------------------------- + * + * @param reader + */ + public ParserDTRAMForWebService(final TokenStream stream) { + super(stream); + } + + /**-------------------------------------------------------------------------------- + * + * @param reader + */ + public ParserDTRAMForWebService(final BufferedReader reader) { + super(reader); + } + + /**-------------------------------------------------------------------------------- + * [public] + /**-------------------------------------------------------------------------------- + * execute to parse the DTRAM file. + * + * @param editor + * @param model + */ + public void doParseWebService(WebServiceEditor editor, DataFlowModel model) + throws + ExpectedWebService, ExpectedBaseURL, ExpectedResources, + ExpectedLeftCurlyBracket, ExpectedRightBracket, ExpectedAssignment + { + parseWebService(editor, model); + } + + /**-------------------------------------------------------------------------------- + * [private] + /**-------------------------------------------------------------------------------- + * parse to Web service's options in the DTRAM file. + * + * @param stream + */ + private void parseWebService(WebServiceEditor editor, DataFlowModel model) + throws + ExpectedWebService, ExpectedBaseURL, ExpectedResources, + ExpectedLeftCurlyBracket, ExpectedRightBracket, ExpectedAssignment + { + if (!isMatchKeyword(stream.next(), SERVICES_GROUP )) throw new ExpectedWebService(stream.getLine()); + if (!isMatchKeyword(stream.next(), LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); + + String serviceTokenNode = stream.next(); + while (isMatchKeyword(serviceTokenNode, SERVICE_GROUP)) { + String serviceName = stream.next(); // it gets a service name here. + + if (!isMatchKeyword(stream.next(), LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); + if (!isMatchKeyword(stream.next(), BASE_URL_OPTION)) throw new ExpectedBaseURL(stream.getLine()); + if (!isMatchKeyword(stream.next(), COLON)) throw new ExpectedAssignment(stream.getLine()); + + String baseURL = stream.next(); // it gets a service's base URL here. + + if (!isMatchKeyword(stream.next(), RESOURCES_OPTION)) throw new ExpectedResources(stream.getLine()); + if (!isMatchKeyword(stream.next(), COLON)) throw new ExpectedAssignment(stream.getLine()); + + // get specific resources from DataFlowModel. + Service service = new Service(serviceName, baseURL); + + while (true) { + // generate here. + String resourceName = stream.next(); + IdentifierTemplate identifierTemplate = model.getIdentifierTemplate(resourceName); + service.addIdentifireTemplate(identifierTemplate); + + if (!isMatchKeyword(stream.checkNext(), COMMA)) break; + + stream.next(); // advance to next token + } + + editor.addWebService(service); // reflect to instance of "WebServiceEditor". + + if (!isMatchKeyword(stream.next(), RIGHT_CURLY_BRACKET)) throw new ExpectedRightBracket(stream.getLine()); + + serviceTokenNode = stream.next(); // here stores "}" token. + } + + if (!isMatchKeyword(serviceTokenNode, RIGHT_CURLY_BRACKET)) throw new ExpectedRightBracket(stream.getLine()); + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/WrongLHSExpression.java b/AlgebraicDataflowArchitectureModel/src/parser/WrongLHSExpression.java deleted file mode 100644 index 0d99ec1..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/WrongLHSExpression.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class WrongLHSExpression extends ParseException { - - public WrongLHSExpression(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/WrongRHSExpression.java b/AlgebraicDataflowArchitectureModel/src/parser/WrongRHSExpression.java deleted file mode 100644 index 9c52885..0000000 --- a/AlgebraicDataflowArchitectureModel/src/parser/WrongRHSExpression.java +++ /dev/null @@ -1,9 +0,0 @@ -package parser; - -public class WrongRHSExpression extends ParseException { - - public WrongRHSExpression(int line) { - super(line); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedAssignment.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedAssignment.java new file mode 100644 index 0000000..90a6c3e --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedAssignment.java @@ -0,0 +1,8 @@ +package parser.exceptions; + +public class ExpectedAssignment extends ParseException { + + public ExpectedAssignment(int line) { + super(line); + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedChannel.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedChannel.java new file mode 100644 index 0000000..385248a --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedChannel.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedChannel extends ParseException { + + public ExpectedChannel(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedChannelName.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedChannelName.java new file mode 100644 index 0000000..72d0336 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedChannelName.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedChannelName extends ParseException { + + public ExpectedChannelName(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedEquals.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedEquals.java new file mode 100644 index 0000000..ed322d8 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedEquals.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedEquals extends ParseException { + + public ExpectedEquals(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedFormulaChannel.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedFormulaChannel.java new file mode 100644 index 0000000..e1e9f2b --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedFormulaChannel.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedFormulaChannel extends ParseException { + + public ExpectedFormulaChannel(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedGeometry.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedGeometry.java new file mode 100644 index 0000000..1521507 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedGeometry.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedGeometry extends ParseException { + + public ExpectedGeometry(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedInOrOutOrRefKeyword.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedInOrOutOrRefKeyword.java new file mode 100644 index 0000000..a44a604 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedInOrOutOrRefKeyword.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedInOrOutOrRefKeyword extends ParseException { + + public ExpectedInOrOutOrRefKeyword(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedIoChannel.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedIoChannel.java new file mode 100644 index 0000000..fba4cc7 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedIoChannel.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedIoChannel extends ParseException { + + public ExpectedIoChannel(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedLeftCurlyBracket.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedLeftCurlyBracket.java new file mode 100644 index 0000000..30f92b0 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedLeftCurlyBracket.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedLeftCurlyBracket extends ParseException { + + public ExpectedLeftCurlyBracket(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedModel.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedModel.java new file mode 100644 index 0000000..222522a --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedModel.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedModel extends ParseException { + + public ExpectedModel(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedNode.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedNode.java new file mode 100644 index 0000000..b3af50c --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedNode.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedNode extends ParseException { + + public ExpectedNode(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedRHSExpression.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedRHSExpression.java new file mode 100644 index 0000000..994bf77 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedRHSExpression.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedRHSExpression extends ParseException { + + public ExpectedRHSExpression(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedResource.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedResource.java new file mode 100644 index 0000000..dd5f00a --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedResource.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedResource extends ParseException { + + public ExpectedResource(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedRightBracket.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedRightBracket.java new file mode 100644 index 0000000..627c57b --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedRightBracket.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedRightBracket extends ParseException { + + public ExpectedRightBracket(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedStateTransition.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedStateTransition.java new file mode 100644 index 0000000..02d27b4 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ExpectedStateTransition.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class ExpectedStateTransition extends ParseException { + + public ExpectedStateTransition(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ParseException.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ParseException.java new file mode 100644 index 0000000..be5aade --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/ParseException.java @@ -0,0 +1,10 @@ +package parser.exceptions; + +public class ParseException extends Exception { + protected int line; + + public ParseException(int line) { + super("at line " + (line + 1)); + this.line = line; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/WrongLHSExpression.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/WrongLHSExpression.java new file mode 100644 index 0000000..0ed087a --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/WrongLHSExpression.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class WrongLHSExpression extends ParseException { + + public WrongLHSExpression(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/WrongRHSExpression.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/WrongRHSExpression.java new file mode 100644 index 0000000..0a82a6c --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/WrongRHSExpression.java @@ -0,0 +1,9 @@ +package parser.exceptions; + +public class WrongRHSExpression extends ParseException { + + public WrongRHSExpression(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedBaseURL.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedBaseURL.java new file mode 100644 index 0000000..1136029 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedBaseURL.java @@ -0,0 +1,11 @@ +package parser.exceptions.webService; + +import parser.exceptions.ParseException; + +public class ExpectedBaseURL extends ParseException{ + + public ExpectedBaseURL(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedResources.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedResources.java new file mode 100644 index 0000000..ec01cf1 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedResources.java @@ -0,0 +1,11 @@ +package parser.exceptions.webService; + +import parser.exceptions.ParseException; + +public class ExpectedResources extends ParseException{ + + public ExpectedResources(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedWebService.java b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedWebService.java new file mode 100644 index 0000000..29e8557 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/exceptions/webService/ExpectedWebService.java @@ -0,0 +1,11 @@ +package parser.exceptions.webService; + +import parser.exceptions.ParseException; + +public class ExpectedWebService extends ParseException{ + + public ExpectedWebService(int line) { + super(line); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java index bd733d1..6791346 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java @@ -11,6 +11,17 @@ import code.ast.TypeDeclaration; import models.dataFlowModel.*; import parser.*; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; public class CodeGeneratorTest { public static void main(String[] args) { diff --git a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java index b02dbb5..8bb75ca 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java @@ -9,13 +9,24 @@ import models.Node; import models.dataFlowModel.*; import parser.*; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; public class DataStorageDecisionTest { public static void main(String[] args) { File file = new File("models/POS2.model"); try { Parser parser = new Parser(new BufferedReader(new FileReader(file))); - DataFlowModel model; + DataFlowModel model = null; try { model = parser.doParse(); System.out.println(model); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java index 6682f4c..feed8ab 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java @@ -8,18 +8,18 @@ import algorithms.NecessityOfStoringResourceStates; import models.Node; import models.dataFlowModel.*; -import parser.ExpectedAssignment; -import parser.ExpectedChannel; -import parser.ExpectedChannelName; -import parser.ExpectedEquals; -import parser.ExpectedInOrOutOrRefKeyword; -import parser.ExpectedLeftCurlyBracket; -import parser.ExpectedRHSExpression; -import parser.ExpectedRightBracket; -import parser.ExpectedStateTransition; import parser.Parser; -import parser.WrongLHSExpression; -import parser.WrongRHSExpression; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; public class DataStorageNecessityTest { public static void main(String[] args) { diff --git a/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java b/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java index 4bec80a..f4d9077 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java @@ -9,6 +9,17 @@ import models.Edge; import models.dataFlowModel.*; import parser.*; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; public class EdgeTransitionSelectableTest { public static void main(String[] args) { diff --git a/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java b/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java index 5196688..277948d 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java @@ -4,6 +4,10 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.util.HashMap; import org.junit.Test; @@ -12,9 +16,9 @@ import models.algebra.Position; import models.algebra.Variable; import models.dataFlowModel.DataFlowModel; -import parser.ExpectedRightBracket; import parser.Parser; import parser.Parser.TokenStream; +import parser.exceptions.ExpectedRightBracket; public class InverseTest { @Test @@ -23,13 +27,17 @@ DataFlowModel model = new DataFlowModel(); try { String rhs = "(a * x + b) * c"; - TokenStream stream = new TokenStream(); - stream.addLine(rhs); - Expression rhsExp = Parser.parseTerm(stream, model); + + TokenStream stream = new Parser.TokenStream(); + Parser parser = new Parser(stream); + stream.addLine(rhs); + + Expression rhsExp = parser.parseTerm(stream, model); System.out.println(lhs + " = " + rhsExp); + HashMap rhsVars = rhsExp.getVariables(); assertEquals(4, rhsVars.size()); - + // Solve {y = (a * x + b) + c} for a, b, c, x Variable y = new Variable(lhs); for (Position vPos: rhsVars.keySet()) { diff --git a/AlgebraicDataflowArchitectureModel/src/tests/ParseTest.java b/AlgebraicDataflowArchitectureModel/src/tests/ParseTest.java deleted file mode 100644 index 9df3bcd..0000000 --- a/AlgebraicDataflowArchitectureModel/src/tests/ParseTest.java +++ /dev/null @@ -1,65 +0,0 @@ -package tests; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; - -import models.Edge; -import models.algebra.InvalidMessage; -import models.algebra.ParameterizedIdentifierIsFutureWork; -import models.algebra.UnificationFailed; -import models.algebra.ValueUndefined; -import models.dataConstraintModel.ChannelGenerator; -import models.dataConstraintModel.ChannelMember; -import models.dataFlowModel.*; -import parser.ExpectedAssignment; -import parser.ExpectedChannel; -import parser.ExpectedChannelName; -import parser.ExpectedEquals; -import parser.ExpectedInOrOutOrRefKeyword; -import parser.ExpectedLeftCurlyBracket; -import parser.ExpectedRHSExpression; -import parser.ExpectedRightBracket; -import parser.ExpectedStateTransition; -import parser.Parser; -import parser.WrongLHSExpression; -import parser.WrongRHSExpression; - -public class ParseTest { - - public static void main(String[] args) { - File file = new File("models/POS.model"); - try { - Parser parser = new Parser(new BufferedReader(new FileReader(file))); - DataFlowModel model; - try { - model = parser.doParse(); - System.out.println(model); - - for (ChannelGenerator c: model.getChannelGenerators()) { - for (ChannelMember out: ((DataflowChannelGenerator) c).getOutputChannelMembers()) { - String[] sideEffects = new String[] {""}; - System.out.println("next" + out.getIdentifierTemplate().getResourceName() + " = " + ((DataflowChannelGenerator) c).deriveUpdateExpressionOf(out).toImplementation(sideEffects)); - } - } - - System.out.println(); - - ResourceDependencyGraph resourceDependencyGraph = model.getResourceDependencyGraph(); - for (Edge e: resourceDependencyGraph.getEdges()) { - System.out.println(e.getSource() + "-(" + e + ")->" + e.getDestination()); - } - } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefKeyword - | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression - | WrongRHSExpression | ExpectedRightBracket | ParameterizedIdentifierIsFutureWork - | ResolvingMultipleDefinitionIsFutureWork | InvalidMessage - | UnificationFailed | ValueUndefined | ExpectedAssignment e) { - e.printStackTrace(); - } - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java b/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java index 3b80d63..30c985c 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java @@ -7,18 +7,18 @@ import algorithms.*; import models.dataFlowModel.DataFlowModel; -import parser.ExpectedAssignment; -import parser.ExpectedChannel; -import parser.ExpectedChannelName; -import parser.ExpectedEquals; -import parser.ExpectedInOrOutOrRefKeyword; -import parser.ExpectedLeftCurlyBracket; -import parser.ExpectedRHSExpression; -import parser.ExpectedRightBracket; -import parser.ExpectedStateTransition; import parser.Parser; -import parser.WrongLHSExpression; -import parser.WrongRHSExpression; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; public class UpdateConflictCheckTest { public static void main(String[] args) { diff --git a/AlgebraicDataflowArchitectureModel/src/tests/parser/ParseTest.java b/AlgebraicDataflowArchitectureModel/src/tests/parser/ParseTest.java new file mode 100644 index 0000000..f7d923b --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/tests/parser/ParseTest.java @@ -0,0 +1,65 @@ +package tests.parser; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; + +import models.Edge; +import models.algebra.InvalidMessage; +import models.algebra.ParameterizedIdentifierIsFutureWork; +import models.algebra.UnificationFailed; +import models.algebra.ValueUndefined; +import models.dataConstraintModel.ChannelGenerator; +import models.dataConstraintModel.ChannelMember; +import models.dataFlowModel.*; +import parser.Parser; +import parser.exceptions.ExpectedAssignment; +import parser.exceptions.ExpectedChannel; +import parser.exceptions.ExpectedChannelName; +import parser.exceptions.ExpectedEquals; +import parser.exceptions.ExpectedInOrOutOrRefKeyword; +import parser.exceptions.ExpectedLeftCurlyBracket; +import parser.exceptions.ExpectedRHSExpression; +import parser.exceptions.ExpectedRightBracket; +import parser.exceptions.ExpectedStateTransition; +import parser.exceptions.WrongLHSExpression; +import parser.exceptions.WrongRHSExpression; + +public class ParseTest { + + public static void main(String[] args) { + File file = new File("models/POS.model"); + try { + Parser parser = new Parser(new BufferedReader(new FileReader(file))); + DataFlowModel model; + try { + model = parser.doParse(); + System.out.println(model); + + for (ChannelGenerator c: model.getChannelGenerators()) { + for (ChannelMember out: ((DataflowChannelGenerator) c).getOutputChannelMembers()) { + String[] sideEffects = new String[] {""}; + System.out.println("next" + out.getIdentifierTemplate().getResourceName() + " = " + ((DataflowChannelGenerator) c).deriveUpdateExpressionOf(out).toImplementation(sideEffects)); + } + } + + System.out.println(); + + ResourceDependencyGraph resourceDependencyGraph = model.getResourceDependencyGraph(); + for (Edge e: resourceDependencyGraph.getEdges()) { + System.out.println(e.getSource() + "-(" + e + ")->" + e.getDestination()); + } + } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefKeyword + | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression + | WrongRHSExpression | ExpectedRightBracket | ParameterizedIdentifierIsFutureWork + | ResolvingMultipleDefinitionIsFutureWork | InvalidMessage + | UnificationFailed | ValueUndefined | ExpectedAssignment e) { + e.printStackTrace(); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/tests/parser/ParserDTRAMForWebServiceTest.java b/AlgebraicDataflowArchitectureModel/src/tests/parser/ParserDTRAMForWebServiceTest.java new file mode 100644 index 0000000..1b83f50 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/tests/parser/ParserDTRAMForWebServiceTest.java @@ -0,0 +1,43 @@ +package tests.parser; + +import static org.junit.Assert.*; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; + +import org.junit.Test; + +import com.mxgraph.view.mxGraph; + +import graphicalrefactor.editor.WebServiceEditor; +import models.dataFlowModel.DataFlowModel; +import parser.ParserDTRAMForWebService; + +public class ParserDTRAMForWebServiceTest { + + @Test + public void test() { +// File file = new File("models/WOS.dtram"); +// +// try { +// mxGraph graph = new mxGraph(); +// WebServiceEditor editor = new WebServiceEditor(graph); +// +// ParserDTRAMForWebService parser = new ParserDTRAMForWebService(new BufferedReader(new FileReader(file))); +// +// try { +// editor.open(file); +// parser.doParseGeometry(graph); +// parser.doParseWebService(, model) +// }catch() { +// +// } +// } +// catch(FileNotFoundException e) { +// e.printStackTrace(); +// } + } + +}