Task 1 done

This commit is contained in:
Rémi Heredero 2023-10-18 09:43:34 +02:00
parent 238c1fcc22
commit da1a8a2166
3 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,65 @@
/**
* This class represents a rectangle.
* It has width and height.
* @see Rectangles
* @version 1.0
* @author Rémi Heredero
*/
public class Rectangle {
private int width; // Width of rectangle.
private int height; // Height of rectangle.
/**
* Constructor. Initializes width and height.
* @param width Width of rectangle.
* @param height Height of rectangle.
*/
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
System.out.println("New rectangle: " + width + "x" + height);
}
/**
* Constructor. Initializes width and height to 0.
*/
public Rectangle(){
this(0, 0);
}
/**
* Get width of rectangle.
* @return width of rectangle
*/
public int getWidth() {
return width;
}
/**
* Set width of rectangle.
* @param width width of rectangle
*/
public void setWidth(int width) {
this.width = width;
}
/**
* Get height of rectangle.
* @return height of rectangle
*/
public int getHeight() {
return height;
}
/**
* Set height of rectangle.
* @param height height of rectangle
*/
public void setHeight(int height) {
this.height = height;
}
public String toString() {
return width + "x" + height;
}
}

View File

@ -0,0 +1,84 @@
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Rectangles class. Contains list of rectangles and methods for importing and exporting rectangles to JSON file.
* @version 1.0
* @author Rémi Heredero
*/
public class Rectangles {
private List<Rectangle> rectangles; // List of rectangles.
private ObjectMapper objectMapper; // Object mapper for JSON serialization.
/**
* Constructor. Initializes rectangles list and object mapper.
*/
public Rectangles() {
rectangles = new ArrayList<Rectangle>();
objectMapper = new ObjectMapper();
}
/**
* Add rectangle to list.
* @param rectangle rectangle to add
*/
public void addRectangle(Rectangle rectangle) {
rectangles.add(rectangle);
}
/**
* Get all rectangles.
* @return list of rectangles
*/
public List<Rectangle> getRectangles() {
return rectangles;
}
/**
* Export rectangles to JSON file.
* @return true if export was successful
*/
public boolean exportToJSON() {
objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // Enable JSON pretty printing.
try {
objectMapper.writeValue(new FileOutputStream("rectangles.json"), rectangles);
return true;
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (JsonMappingException e) {
throw new RuntimeException(e);
} catch (JsonGenerationException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* Import rectangles from JSON file.
* @return true if import was successful
*/
public boolean importFromJSON(){
try {
rectangles = objectMapper.readValue(new FileInputStream("rectangles.json"), ArrayList.class);
return true;
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (JsonMappingException e) {
throw new RuntimeException(e);
} catch (JsonGenerationException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

20
src/main/java/Task1.java Normal file
View File

@ -0,0 +1,20 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class Task1 {
public static void main(String[] args) {
Rectangles rectangles = new Rectangles();
rectangles.addRectangle(new Rectangle(10, 20));
rectangles.addRectangle(new Rectangle(20, 30));
rectangles.addRectangle(new Rectangle(30, 40));
rectangles.addRectangle(new Rectangle(40, 50));
rectangles.addRectangle(new Rectangle(50, 60));
rectangles.exportToJSON();
rectangles.addRectangle(new Rectangle(60, 70));
System.out.println("BREAKPOINT HERE");
rectangles.importFromJSON();
System.out.println("BREAKPOINT HERE");
}
}