diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..480bdf5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+.kotlin
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/copilot.data.migration.ask2agent.xml b/.idea/copilot.data.migration.ask2agent.xml
new file mode 100644
index 0000000..1f2ea11
--- /dev/null
+++ b/.idea/copilot.data.migration.ask2agent.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..9a48e16
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..4508e96
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Order-logic/pom.xml b/Order-logic/pom.xml
new file mode 100644
index 0000000..3809636
--- /dev/null
+++ b/Order-logic/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+
+ com.ironhack
+ solution-lab-2.02-maven
+ 1.0-SNAPSHOT
+
+
+
+
+ Order-logic
+
+
+
+ com.ironhack
+ order-data
+ 1.0-SNAPSHOT
+
+
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/Order-logic/src/main/java/ironhack/OrderCalculator.java b/Order-logic/src/main/java/ironhack/OrderCalculator.java
new file mode 100644
index 0000000..68361f3
--- /dev/null
+++ b/Order-logic/src/main/java/ironhack/OrderCalculator.java
@@ -0,0 +1,53 @@
+package ironhack;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class OrderCalculator {
+
+
+
+
+ public static double calculateTotalPrice(Order order) {
+ double total = 0;
+ for (Item item : order.getItems()) {
+ total += item.getQuantity() * item.getPrice();
+
+ }
+ return total;
+ }
+
+ public static List- filterItemsByPrice(Order order, double price){
+ List
- filteredItems = new ArrayList<>();
+ for (Item item : order.getItems()) {
+ if(item.getPrice()==price){
+ filteredItems.add(item);
+ }
+ }
+ return filteredItems;
+ }
+
+ public static void main(String[] args) {
+ OrderProcessor orderProcessor = new OrderProcessor();
+
+
+ System.out.println("Total price: " + calculateTotalPrice(orderProcessor.order));
+ System.out.println("Items with price 10.0: " + filterItemsByPrice(orderProcessor.order, 10.0));
+ }
+
+
+
+
+
+
+
+
+ }
+
+
+
+
+
+
+
diff --git a/order-data/pom.xml b/order-data/pom.xml
new file mode 100644
index 0000000..8f603b7
--- /dev/null
+++ b/order-data/pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+
+ com.ironhack
+ solution-lab-2.02-maven
+ 1.0-SNAPSHOT
+
+
+
+ order-data
+
+
+
+
+ com.google.code.gson
+ gson
+
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/order-data/src/main/java/ironhack/Item.java b/order-data/src/main/java/ironhack/Item.java
new file mode 100644
index 0000000..9e2966e
--- /dev/null
+++ b/order-data/src/main/java/ironhack/Item.java
@@ -0,0 +1,73 @@
+package ironhack;
+
+public class Item {
+ private String productId;
+ private String name;;
+ private int quantity;
+ private double price;
+
+
+ public Item(String productId, String name, int quantity, double price) {
+ if (productId == null) {
+ throw new IllegalArgumentException("Product ID cannot be null");
+ }
+
+ if (name == null) {
+ throw new IllegalArgumentException("Name cannot be null");
+ }
+
+ if (quantity < 0) {
+ throw new IllegalArgumentException("Quantity cannot be negative");
+ }
+
+
+ if (price < 0) {
+ throw new IllegalArgumentException("Price cannot be negative");
+ }
+
+
+
+
+ this.productId = productId;
+ this.name = name;
+ this.quantity = quantity;
+ this.price = price;
+
+ }
+
+ public String getName() {
+ return name;
+ }
+
+
+
+ public String getProductId() {
+ return productId;
+ }
+
+
+
+ public int getQuantity() {
+ return quantity;
+ }
+
+
+
+ public double getPrice() {
+ return price;
+ }
+
+
+
+
+
+ @Override
+ public String toString() {
+ return "Item{" +
+ "productId='" + productId + '\'' +
+ ", name='" + name + '\'' +
+ ", quantity=" + quantity +
+ ", price=" + price +
+ '}';
+ }
+}
diff --git a/order-data/src/main/java/ironhack/Order.java b/order-data/src/main/java/ironhack/Order.java
new file mode 100644
index 0000000..f90020d
--- /dev/null
+++ b/order-data/src/main/java/ironhack/Order.java
@@ -0,0 +1,60 @@
+package ironhack;
+
+import java.util.List;
+
+public class Order {
+ private String orderId;
+ private String customerId;
+ private List
- items;
+
+
+ public Order(String orderId, String customerId, List
- items) {
+ if (orderId == null) {
+ throw new IllegalArgumentException("Order ID cannot be null");
+ }
+
+ if (customerId == null) {
+ throw new IllegalArgumentException("Customer ID cannot be null");
+ }
+
+ if (items == null) {
+ throw new IllegalArgumentException("Items cannot be null");
+ }
+
+
+
+
+ this.orderId = orderId;
+ this.customerId = customerId;
+ this.items = items;
+
+ }
+
+ public String getOrderId() {
+ return orderId;
+ }
+
+
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+
+
+ public List
- getItems() {
+ return items;
+ }
+
+
+
+
+ @Override
+ public String toString() {
+ return "Order{" +
+ "orderId='" + orderId + '\'' +
+ ", customerId='" + customerId + '\'' +
+ ", items=" + items +
+ '}';
+ }
+}
diff --git a/order-data/src/main/java/ironhack/OrderProcessor.java b/order-data/src/main/java/ironhack/OrderProcessor.java
new file mode 100644
index 0000000..8a7c14f
--- /dev/null
+++ b/order-data/src/main/java/ironhack/OrderProcessor.java
@@ -0,0 +1,40 @@
+package ironhack;
+
+import com.google.gson.Gson;
+
+public class OrderProcessor {
+ public static void main(String[] args) {
+ OrderProcessor processor = new OrderProcessor();
+ processor.processOrder();
+ }
+
+ Gson gson = new Gson();
+
+
+ String jsonOrder= """
+ {
+ "orderId": "12345",
+ "customerId": "67890",
+ "items": [
+ {"productId": "111", "name": "Laptop", "quantity": 2, "price": 10.0},
+ {"productId": "222", "name": "Camera", "quantity": 1, "price": 20.0}
+ ]
+ }
+ """;
+
+
+
+ Order order = gson.fromJson(jsonOrder, Order.class);
+
+ public void processOrder () {
+ System.out.println("Processing order: " + order.getOrderId());
+ System.out.println("Customer ID: " + order.getCustomerId());
+ System.out.println("Items:");
+ for (Item item : order.getItems()) {
+ System.out.println("- " + item.getName() + ": " + item.getQuantity() + " x $" + item.getPrice());
+ }
+
+ }
+
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..9a21700
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,50 @@
+
+
+ 4.0.0
+
+ com.ironhack
+ solution-lab-2.02-maven
+ 1.0-SNAPSHOT
+ pom
+
+ order-data
+ Order-logic
+
+
+
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.google.code.gson
+ gson
+ 2.13.2
+
+
+
+
+
+
+ central
+ https://repo1.maven.org/maven2/
+
+
+
+
+
+ central
+ https://repo1.maven.org/maven2/
+
+
+
+
+
\ No newline at end of file