package com.example.test.dtram;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
import models.dataConstraintModel.JsonTerm;
import models.dataFlowModel.DataTransferModel;
import parser.Parser;
import simulator.Simulator;
import simulator.interfaces.html.HtmlElement;
import simulator.interfaces.html.HtmlPresenter;
import simulator.interfaces.html.IWebSocketMessageSender;
@Component
public class Dtram {
File file;
DataTransferModel model;
Simulator simulator;
private final IWebSocketMessageSender ws;
private Map<String, HtmlElement> elements;
HtmlPresenter presenter;
Dtram(IWebSocketMessageSender ws){
this.ws = ws;
elements = new HashMap<>();
}
public void initModel(String path) {
file = new File(path);
System.out.println(path);
try {
Parser parser = new Parser(new BufferedReader(new FileReader(file)));
model = parser.doParse();
}catch(Exception e) {
e.printStackTrace();
}
}
public void initModel(InputStream stream) {
try {
Parser parser = new Parser(new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)));
model = parser.doParse();
}
catch(Exception e) {
e.printStackTrace();
}
}
public void startSimulator() {
simulator = new Simulator(model);
simulator.init();
presenter = new HtmlPresenter(simulator, ws, elements);
}
public void onRestEvent(String id, String method, JsonTerm message) {
elements.get("\"" + id + "\"").onRestEvent(method, message);
}
}