import java.util.ArrayList;
import java.util.List;

import generators.ASTGenerator;
import models.objectOrientedTransfer.*;

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);
        Relation transferRelation = new Relation(srcEdges, dstEdges, MultiplicityValue.OneToMany);
        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();
        }
    }

}
