package serializer;

import shape.Circle;
import shape.Rectangle;
import shape.Shape;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

public class ShapeWriter implements ShapeVisitor {

    private PrintWriter printWriter;

    public ShapeWriter(PrintWriter printWriter) {
        this.printWriter = printWriter;
    }

    public static void write (File file, List<Shape> shapes) throws IOException {
        try(PrintWriter printWriter = new PrintWriter(file)){
        ShapeWriter shapeWriter = new ShapeWriter(printWriter);

        for (Shape shape : shapes) {
            shape.accept(shapeWriter);
        }
        }
    }

    @Override
    public void visit(Circle circle) {
        printWriter.printf("Circle %f %f %f%n", circle.getX(), circle.getY(), circle.getRadius());
    }

    @Override
    public void visit(Rectangle rectangle) {
        printWriter.printf("Rectangle %f %f %f %f%n", rectangle.getX(), rectangle.getY(), rectangle.getWidth() ,rectangle.getHeight());
    }
}