import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import generators.ASTGenerator;
import models.objectOrientedTransfer.*;
import parser.Parser;
import parser.Value;
import parser.exceptions.ExpectedArrayValue;
import parser.exceptions.ExpectedJsonValue;
import parser.exceptions.ExpectedStringValue;
public class Main {
public static void main(String[] args) {
// List<ReferenceEdge> srcEdges = new ArrayList<>();
// List<ReferenceEdge> dstEdges = new ArrayList<>();
// ObjectNode companies = new ObjectNode("Companies");
// ObjectNode company = new ObjectNode("Company");
// ObjectNode customers = new ObjectNode("Customers");
// ObjectNode customer = new ObjectNode("Customer");
// ObjectNode address = new ObjectNode("String");
// ReferenceEdge srcEdge = new ReferenceEdge(companies, company, "company", "String");
// srcEdges.add(srcEdge);
// ReferenceEdge dstEdge = new ReferenceEdge(customers, customer, "customer", "String");
// dstEdges.add(dstEdge);
// List<Relation> relations = new ArrayList<>();
// Relation transferRelation = new Relation(company, customer, MultiplicityValue.OneToOne);
// DataTransferContext context = new DataTransferContext(relations, transferRelation, address, "address", PushPullValue.PULL);
// DataTransferDesign design;
// try {
// design = new DataTransferDesign(context);
// System.out.println(ASTGenerator.generate(design));
// } catch (IllegalRelationException e) {
// e.printStackTrace();
// }
File file = new File("models/CustomerManagement.Json");
try {
Parser parser = new Parser(new BufferedReader(new FileReader(file)));
Value jsonValue = parser.getValue();
DataTransferContext context = new DataTransferContext(jsonValue);
DataTransferDesign design;
try {
design = new DataTransferDesign(context);
System.out.println(ASTGenerator.generate(design));
} catch (IllegalRelationException e) {
e.printStackTrace();
}
} catch (ExpectedArrayValue | ExpectedStringValue | ExpectedJsonValue | FileNotFoundException e) {
e.printStackTrace();
}
}
}