diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7f4cb416c083d265558da75d457237d671..35eb1ddfbbc029bcab630581847471d7f238ec53 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="VcsDirectoryMappings"> - <mapping directory="$PROJECT_DIR$" vcs="Git" /> + <mapping directory="" vcs="Git" /> </component> </project> \ No newline at end of file diff --git a/src/main/java/serializer/ShapeWriter.java b/src/main/java/serializer/ShapeWriter.java index b5c4856dea8284cb0f0fbcdb62f36ad3b09b1dcd..249102af90390b615612aa5afd0e65cad828eeaf 100644 --- a/src/main/java/serializer/ShapeWriter.java +++ b/src/main/java/serializer/ShapeWriter.java @@ -7,17 +7,26 @@ import shape.Shape; import java.io.File; import java.io.IOException; import java.io.PrintWriter; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class ShapeWriter implements ShapeVisitor { private PrintWriter printWriter; + private static final Map<Class<? extends Shape>, ShapeSerializer<? extends Shape>> serializers = new HashMap<>(); + + static { + serializers.put(Circle.class, new CircleSerializer()); + serializers.put(Rectangle.class, new RectangleSerializer()); + } + public ShapeWriter(PrintWriter printWriter) { this.printWriter = printWriter; } - public static void write (File file, List<Shape> shapes) throws IOException { + public static void write (File file, Iterable<Shape> shapes) throws IOException { try(PrintWriter printWriter = new PrintWriter(file)){ ShapeWriter shapeWriter = new ShapeWriter(printWriter); @@ -29,11 +38,23 @@ public class ShapeWriter implements ShapeVisitor { @Override public void visit(Circle circle) { - printWriter.printf("Circle %f %f %f%n", circle.getX(), circle.getY(), circle.getRadius()); + ShapeSerializer<Circle> serializer = (ShapeSerializer<Circle>) serializers.get(Circle.class); + if (serializer != null) { + String serializedData = serializer.serialize(circle); + printWriter.println(serializedData); + } else { + throw new IllegalArgumentException("No serializer found for Circle"); + } } @Override public void visit(Rectangle rectangle) { - printWriter.printf("Rectangle %f %f %f %f%n", rectangle.getX(), rectangle.getY(), rectangle.getWidth() ,rectangle.getHeight()); + ShapeSerializer<Rectangle> serializer = (ShapeSerializer<Rectangle>) serializers.get(Rectangle.class); + if (serializer != null) { + String serializedData = serializer.serialize(rectangle); + printWriter.println(serializedData); + } else { + throw new IllegalArgumentException("No serializer found for Rectangle"); + } } }