diff --git a/AlgebraicDataflowArchitectureModel/.classpath b/AlgebraicDataflowArchitectureModel/.classpath index dfdecbb..b969383 100644 --- a/AlgebraicDataflowArchitectureModel/.classpath +++ b/AlgebraicDataflowArchitectureModel/.classpath @@ -8,6 +8,5 @@ - diff --git a/AlgebraicDataflowArchitectureModel/lib/postgresql-42.7.4.jar b/AlgebraicDataflowArchitectureModel/lib/postgresql-42.7.4.jar deleted file mode 100644 index 091b4d1..0000000 --- a/AlgebraicDataflowArchitectureModel/lib/postgresql-42.7.4.jar +++ /dev/null Binary files differ diff --git a/AlgebraicDataflowArchitectureModel/src/application/simulator/UISimulatorWindow.java b/AlgebraicDataflowArchitectureModel/src/application/simulator/UISimulatorWindow.java index e0f739c..d3d03a6 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/simulator/UISimulatorWindow.java +++ b/AlgebraicDataflowArchitectureModel/src/application/simulator/UISimulatorWindow.java @@ -4,9 +4,7 @@ import javax.swing.JPanel; import simulator.Simulator; -import simulator.interfaces.db.DatabasePresenter; import simulator.interfaces.rest.RestPresenter; -import simulator.interfaces.sql.SQLPresenter; import simulator.interfaces.swing.SwingPresenter; import simulator.interfaces.timers.TimerService; @@ -19,8 +17,6 @@ private TimerService timerService; private RestPresenter rest; - private SQLPresenter sql; - private DatabasePresenter db; public UISimulatorWindow(Simulator simulator) { setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); @@ -28,8 +24,6 @@ mainPanel = new JPanel(); presenter = new SwingPresenter(mainPanel, simulator); rest = new RestPresenter(simulator); - sql = new SQLPresenter(simulator); - db = new DatabasePresenter(simulator); this.add(mainPanel); timerService = new TimerService(simulator); diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/db/DatabasePresenter.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/db/DatabasePresenter.java deleted file mode 100644 index b5a43b7..0000000 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/db/DatabasePresenter.java +++ /dev/null @@ -1,76 +0,0 @@ -package simulator.interfaces.db; - -import models.algebra.Constant; -import models.algebra.Expression; -import models.algebra.Term; -import models.dataConstraintModel.JsonTerm; -import models.dataConstraintModel.ResourcePath; -import models.dataFlowModel.DataTransferChannel; -import simulator.Event; -import simulator.Resource; -import simulator.ResourceIdentifier; -import simulator.Simulator; -import simulator.SystemState; -import simulator.interfaces.INativeReceiver; - -public class DatabasePresenter implements INativeReceiver{ - - public final String updateCurrentChannelName = "updateCurrent"; - public final String setRecordChannelName = "setRecord"; - public final String updateRecordChannelName = "updateRecordOnChangeCurrent"; - - protected Simulator simulator; - - protected DataTransferChannel setRecordChannel; - protected DataTransferChannel updateRecord; - - public DatabasePresenter(Simulator simulator) { - this.simulator = simulator; - setRecordChannel = (DataTransferChannel) simulator.getModel().getInputChannel(setRecordChannelName); - updateRecord = (DataTransferChannel) simulator.getModel().getChannel(updateRecordChannelName); - simulator.addNativeReceiver(this, updateRecord); - } - - - @Override - public void onReceiveFromModel(Event event, SystemState nextSystemState) { - Expression message = event.getMessage(); - Constant newValue = (Constant)((Term) message).getChild(0); - ResourcePath path = event.getInputResourcePath(); - ResourceIdentifier identifier = event.getResourceIdentifier(path); -// String varName = identifier.getPathParams().get(0).toString().replace("\"",""); - ResourcePath parent = identifier.getParent(); - ResourceIdentifier parentIdent = event.getResourceIdentifier(parent); - JsonTerm data =(JsonTerm) simulator.getCurState().getResource(parentIdent).getState().getValue(); - String key = data.get("key").toString().replace("\"", ""); - String tableName = data.get("table").toString(); - String dbName = data.get("dbName").toString(); - - ResourcePath recordPath = setRecordChannel.getOutputResources().iterator().next(); - Resource recordResource = null; - for(var res : nextSystemState.getRootResources()) { - if(res.getResourceIdentifier().toString().equals("db")) { - recordResource = res.getChildrenMap().get(dbName).getChildrenMap().get("tables").getChildrenMap().get(tableName).getChildrenMap().get("record"); - break; - } - } - - JsonTerm dbData = (JsonTerm) simulator.getCurState().getResource(recordResource.getParent().getParent().getParent().getResourceIdentifier()).getState().getValue(); - String dbUrl = dbData.get("url").toString().replace("\"", ""); - String dbUser = dbData.get("user").toString().replace("\"", ""); - String dbPass = dbData.get("password").toString().replace("\"", ""); - RecordSender sender = new RecordSender(simulator, setRecordChannel, recordPath, recordResource, dbUrl, dbUser, dbPass); - - switch(newValue.getType().getTypeName()) { - case "Int": - sender.updateRecord(tableName.replace("\"", ""), key, Integer.parseInt(newValue.toString())); - break; - case "Str": - sender.updateRecord(tableName.replace("\"", ""), key, newValue.toString()); - break; - } - } - - - -} diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/db/RecordSender.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/db/RecordSender.java deleted file mode 100644 index ee20994..0000000 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/db/RecordSender.java +++ /dev/null @@ -1,125 +0,0 @@ -package simulator.interfaces.db; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -import models.algebra.Constant; -import models.algebra.Expression; -import models.algebra.Term; -import models.dataConstraintModel.JsonTerm; -import models.dataConstraintModel.MapTerm; -import models.dataConstraintModel.ResourcePath; -import models.dataFlowModel.DataTransferChannel; -import simulator.Resource; -import simulator.Simulator; -import simulator.interfaces.NativeSender; - -public class RecordSender extends NativeSender{ - - private String url; - private String user; - private String pass; - - public RecordSender(Simulator simulator, DataTransferChannel channel, ResourcePath resourcePath, - Resource resource, String url, String user, String pass) { - super(simulator, channel, resourcePath, resource); - this.url = url; - this.user = user; - this.pass = pass; - } - - public void updateRecord(String tableName, String key, String value) { - String query = "SELECT * FROM "+ tableName + " WHERE "+ key + " = ?"; - JsonTerm res = new JsonTerm(); - - try{ - Connection conn = DriverManager.getConnection(url, user, pass); - PreparedStatement pstmt = conn.prepareStatement(query); - pstmt.setString(1, value); - ResultSet rs = pstmt.executeQuery(); - - var meta = rs.getMetaData(); - int primaryNum = -1; - for(int i = 1; i <= meta.getColumnCount(); i++) { - if(meta.getColumnName(i).equals(key)) { - primaryNum = i; - break; - } - } - - while(rs.next()) { - String primaryData = rs.getString(primaryNum); - res.addMember(primaryData, new JsonTerm()); - for(int i = 1; i <= meta.getColumnCount(); i++) { - if(i == primaryNum) { - continue; - } - String columnName = meta.getColumnName(i); - Constant data = new Constant(rs.getString(i)); - ((JsonTerm) res.get(primaryData)).addMember(columnName, data); - } - } - } catch (SQLException e) { - // TODO 自動生成された catch ブロック - e.printStackTrace(); - } - - - Expression message = channel.getOutputChannelMembers().iterator().next().getStateTransition().getMessageExpression(); - message = (Term)message.clone(); - ((Term) message).setChild(0, res); - System.out.println(res); - sendToModel(message); - } - - public void updateRecord(String tableName, String key, int value) { - String query = "SELECT * FROM "+ tableName + " WHERE "+ key + " = ?"; - JsonTerm res = new JsonTerm(); - - try{ - Connection conn = DriverManager.getConnection(url, user, pass); - PreparedStatement pstmt = conn.prepareStatement(query); - pstmt.setInt(1, value); - ResultSet rs = pstmt.executeQuery(); - - var meta = rs.getMetaData(); - int primaryNum = -1; - for(int i = 1; i <= meta.getColumnCount(); i++) { - if(meta.getColumnName(i).equals(key)) { - primaryNum = i; - break; - } - } - - while(rs.next()) { - String primaryData = rs.getString(primaryNum); - res.addMember(primaryData, new JsonTerm()); - for(int i = 1; i <= meta.getColumnCount(); i++) { - if(i == primaryNum) { - continue; - } - String columnName = meta.getColumnName(i); - Constant data = new Constant(rs.getString(i)); - ((JsonTerm) res.get(primaryData)).addMember(columnName, data); - } - } - } catch (SQLException e) { - // TODO 自動生成された catch ブロック - e.printStackTrace(); - } - - MapTerm test = new MapTerm(); - test.insert("1", new Constant("hello")); - - Expression message = channel.getOutputChannelMembers().iterator().next().getStateTransition().getMessageExpression(); - Term termMessage = (Term)message.clone(); - termMessage.setChild(0, test); - System.out.println(res); - sendToModel(termMessage); - - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/sql/ResultSender.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/sql/ResultSender.java deleted file mode 100644 index b1091fa..0000000 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/sql/ResultSender.java +++ /dev/null @@ -1,70 +0,0 @@ -package simulator.interfaces.sql; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; - -import models.algebra.Constant; -import models.algebra.Expression; -import models.algebra.Term; -import models.dataConstraintModel.DataConstraintModel; -import models.dataConstraintModel.ResourcePath; -import models.dataFlowModel.DataTransferChannel; -import simulator.Resource; -import simulator.Simulator; -import simulator.interfaces.NativeSender; - -public class ResultSender extends NativeSender{ - - private String url; - private String user; - private String pass; - - public ResultSender(Simulator simulator, DataTransferChannel channel, ResourcePath resourcePath, - Resource resource, String url, String user, String pass) { - super(simulator, channel, resourcePath, resource); - this.url = url; - this.user = user; - this.pass = pass; - } - - public void executeQuery(String query) { - StringBuilder resCSV = new StringBuilder(); - try( - Connection conn = DriverManager.getConnection(url, user, pass); - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(query) - ){ - var meta = rs.getMetaData(); - for(int i = 1; i <= meta.getColumnCount(); i++) { - resCSV.append(meta.getColumnName(i)); - if(i != meta.getColumnCount()) { - resCSV.append(","); - } else { - resCSV.append("\n"); - } - } - while(rs.next()) { - for(int i = 1; i <= meta.getColumnCount(); i++) { - resCSV.append(rs.getString(i)); - if(i != meta.getColumnCount()) { - resCSV.append(","); - } else { - resCSV.append("\n"); - } - } - } - } catch(SQLException e) { - resCSV.append("sql error"); - e.printStackTrace(); - } - Constant res = new Constant(resCSV.toString(), DataConstraintModel.typeString); - Expression message = channel.getOutputChannelMembers().iterator().next().getStateTransition().getMessageExpression(); - message = (Term) message.clone(); - ((Term) message).setChild(0, res); - sendToModel(message); - } - -} diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/sql/SQLPresenter.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/sql/SQLPresenter.java deleted file mode 100644 index d08f106..0000000 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/sql/SQLPresenter.java +++ /dev/null @@ -1,56 +0,0 @@ -package simulator.interfaces.sql; - -import models.algebra.Expression; -import models.algebra.Term; -import models.dataConstraintModel.ResourcePath; -import models.dataFlowModel.DataTransferChannel; -import simulator.Event; -import simulator.Resource; -import simulator.ResourceIdentifier; -import simulator.Simulator; -import simulator.SystemState; -import simulator.interfaces.INativeReceiver; - -public class SQLPresenter implements INativeReceiver{ - - - public final String sendQueryChannelName = "sendQuery"; - public final String setResultChannelName = "setResult"; - - protected Simulator simulator; - - protected DataTransferChannel sendQueryChannel; - protected DataTransferChannel setResultChannel; - - public SQLPresenter(Simulator simulator) { - this.simulator = simulator; - sendQueryChannel = (DataTransferChannel) simulator.getModel().getChannel(sendQueryChannelName); - setResultChannel = (DataTransferChannel) simulator.getModel().getInputChannel(setResultChannelName); - simulator.addNativeReceiver(this, sendQueryChannel); - } - - @Override - public void onReceiveFromModel(Event event, SystemState nextSystemState) { - Expression message = event.getMessage(); - ResourcePath path = event.getInputResourcePath(); - ResourceIdentifier ri = event.getResourceIdentifier(path); - String dbUrl = ri.getPathParams().get(0).toString().replace("\"", ""); - if(message instanceof Term && ((Term) message).getChildren().size() >= 1) { - Expression query = ((Term) message).getChild(0); - System.out.println(simulator.getCurState()); - String user = simulator.getCurState().getResource("database." + dbUrl + ".user").getState().getValue().toString().replace("\"", ""); - String pass = simulator.getCurState().getResource("database." + dbUrl + ".password").getState().getValue().toString().replace("\"", ""); - - System.out.println(user); - System.out.println(pass); - - Resource sqlRes = nextSystemState.getResource(event.getInputResource().getResourceIdentifier()); - Resource resultRes = sqlRes.getParent().getChildrenMap().get("result"); - - ResourcePath resPath = setResultChannel.getOutputResources().iterator().next(); - ResultSender sender = new ResultSender(simulator, setResultChannel, resPath, resultRes, dbUrl, user, pass); - sender.executeQuery(query.toString().replace("\"", "")); - } - } - -}