package serializer;

import shape.Circle;
import shape.Shape;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ShapeReader {

    private static final Map<String, ShapeSerializer<?>> serializers = new HashMap<>();

    static {
        serializers.put("circle", new CircleSerializer());
        serializers.put("rectangle", new RectangleSerializer());
    }
    public static List<Shape> read(File file) throws IOException {
        List<Shape> shapes = new ArrayList<>();
        try(BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) {
        String line ;
        while ((line = bufferedReader.readLine()) != null) {
            String[] parts = line.split(" ",2);
            String code = parts[0];
            String data = parts[1];
            ShapeSerializer<?> serializer = serializers.get(code);
            if (serializer != null) {
                Shape shape = serializer.unserialize(data);
                shapes.add(shape);
            }
        }
            return shapes;
        }
    }
}