Bläddra i källkod

Added small changes in database structure. Added RandomAddressGenerator. New user has now list of packages added on init.

wpfat23-5 2 år sedan
förälder
incheckning
67a06438e0

+ 21 - 3
src/main/java/com/deliveryproject/easydelivery/AppUserController.java

@@ -1,11 +1,14 @@
 package com.deliveryproject.easydelivery;
 
 import com.deliveryproject.easydelivery.Models.AppUser;
+import com.deliveryproject.easydelivery.Models.Delivery;
 import com.deliveryproject.easydelivery.Repository.AppUserRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
@@ -22,9 +25,9 @@ public class AppUserController {
         return new ResponseEntity<>(savedUser, HttpStatus.CREATED);
     }
 
-    @GetMapping("/{id}")
-    public ResponseEntity<AppUser> getUserById(@PathVariable Long id) {
-        Optional<AppUser> userOptional = userRepository.findById(id);
+    @GetMapping("/{name}")
+    public ResponseEntity<AppUser> getUserByName(@PathVariable String name) {
+        Optional<AppUser> userOptional = userRepository.findByName(name);
         return userOptional.map(user -> new ResponseEntity<>(user, HttpStatus.OK))
                 .orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));
     }
@@ -46,6 +49,21 @@ public class AppUserController {
         return new ResponseEntity<>(HttpStatus.NOT_FOUND);
     }
 
+    @PutMapping("/{name}")
+    public ResponseEntity<AppUser> addDeliveryToTheUser(@PathVariable String name, @RequestBody Delivery delivery) {
+        Optional<AppUser> userOptional = userRepository.findByName(name);
+        if (userOptional.isPresent()) {
+            AppUser appUser = userOptional.get();
+            List<Delivery> newListOfDeliveries = appUser.getDeliveries();
+            newListOfDeliveries.add(delivery);
+            appUser.setDeliveries(newListOfDeliveries);
+            System.out.println("abcd " + appUser.toString());
+            userRepository.save(appUser);
+            return new ResponseEntity<>(appUser, HttpStatus.OK);
+        }
+        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+    }
+
     @DeleteMapping("/{id}")
     public ResponseEntity<HttpStatus> deleteUser(@PathVariable Long id) {
         try {

+ 10 - 1
src/main/java/com/deliveryproject/easydelivery/Models/AppUser.java

@@ -14,7 +14,7 @@ public class AppUser {
     @Column(name = "name", nullable = false, unique = true)
     private String name;
 
-    @OneToMany //(mappedBy = "user")
+    @OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
     private List<Delivery> deliveries;
 
     public Long getId() {
@@ -35,4 +35,13 @@ public class AppUser {
     public void setDeliveries(List<Delivery> deliveries) {
         this.deliveries = deliveries;
     }
+
+    @Override
+    public String toString() {
+        return "AppUser{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", deliveries=" + deliveries +
+                '}';
+    }
 }

+ 12 - 1
src/main/java/com/deliveryproject/easydelivery/Models/Delivery.java

@@ -21,7 +21,7 @@ public class Delivery {
     @Column(name = "delivery_time", nullable = false)
     private LocalDateTime deliveryTime;
 
-    @OneToMany
+    @OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
     private List<Packet> packets;
     // constructors, getters and setters
 
@@ -64,4 +64,15 @@ public class Delivery {
     public void setDeliveryTime(LocalDateTime deliveryTime) {
         this.deliveryTime = deliveryTime;
     }
+
+    @Override
+    public String toString() {
+        return "Delivery{" +
+                "id=" + id +
+                ", deliveryAddress='" + deliveryAddress + '\'' +
+                ", recipientName='" + recipientName + '\'' +
+                ", deliveryTime=" + deliveryTime +
+                ", packets=" + packets +
+                '}';
+    }
 }

+ 17 - 8
src/main/java/com/deliveryproject/easydelivery/Models/Packet.java

@@ -12,14 +12,14 @@ public class Packet {
     @Column(name = "description")
     private String description;
 
-    @Column(name = "quantity")
-    private int quantity;
+    @Column(name = "name")
+    private String name;
 
     public Packet() {}
 
-    public Packet(String description, int quantity) {
+    public Packet(String description, String name) {
         this.description = description;
-        this.quantity = quantity;
+        this.name = name;
     }
 
     public Long getId() {
@@ -38,12 +38,21 @@ public class Packet {
         this.description = description;
     }
 
-    public int getQuantity() {
-        return quantity;
+    public String getName() {
+        return name;
     }
 
-    public void setQuantity(int quantity) {
-        this.quantity = quantity;
+    @Override
+    public String toString() {
+        return "Packet{" +
+                "id=" + id +
+                ", description='" + description + '\'' +
+                ", name='" + name + '\'' +
+                '}';
+    }
+
+    public void setName(String name) {
+        this.name = name;
     }
 
 }

+ 29 - 0
src/main/java/com/deliveryproject/easydelivery/PostConstructInit.java

@@ -1,22 +1,51 @@
 package com.deliveryproject.easydelivery;
 
 import com.deliveryproject.easydelivery.Models.AppUser;
+import com.deliveryproject.easydelivery.Models.Delivery;
+import com.deliveryproject.easydelivery.Models.Packet;
+import com.deliveryproject.easydelivery.Utils.RandomAddressGenerator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
+import java.time.LocalDateTime;
+import java.time.Month;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 @Component
 public class PostConstructInit {
 
+
     @Autowired
     AppUserController appUserController;
+    @Autowired
+    DeliveryController deliveryController;
+    @Autowired
+    PacketController packetController;
 
     @PostConstruct
     public void init(){
         AppUser appUser = new AppUser();
         appUser.setName("user2");
         appUserController.createUser(appUser);
+        for (int i = 0; i<10; i++){
+            Delivery delivery = new Delivery();
+            delivery.setDeliveryTime(LocalDateTime.of(2024,
+                    Month.JULY, 29, 19, 30, 40));
+            delivery.setDeliveryAddress(RandomAddressGenerator.generateRandomAddress());
+            delivery.setRecipientName("Adam Nowak");
+            Packet packet = new Packet("Packet description", "Packet name");
+            ArrayList<Packet> packets = new ArrayList<>();
+            packets.add(packet);
+            delivery.setPackets(packets);
+            System.out.println("aaaaaaa");
+            appUserController.addDeliveryToTheUser("user2", delivery);
+        }
+
     }
 
+
+
 }

+ 3 - 0
src/main/java/com/deliveryproject/easydelivery/Repository/AppUserRepository.java

@@ -4,7 +4,10 @@ import com.deliveryproject.easydelivery.Models.AppUser;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.Optional;
+
 @Repository
 public interface AppUserRepository extends JpaRepository<AppUser, Long> {
+    Optional<AppUser> findByName(String name);
     // You can add custom query methods for specific database operations related to the User entity if needed
 }

+ 26 - 0
src/main/java/com/deliveryproject/easydelivery/Utils/RandomAddressGenerator.java

@@ -0,0 +1,26 @@
+package com.deliveryproject.easydelivery.Utils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class RandomAddressGenerator {
+    private static final String[] streetNames = {"Aleja 1 Maja", "Piotrkowska", "Sienkiewicza", "Narutowicza", "Rewolucji 1905 Roku"};
+    private static final String[] cities = {"Łódź"};
+    private static final String[] postalCodes = {"90-001", "90-002", "90-003", "90-004", "90-005"};
+
+
+    public static String generateRandomAddress() {
+
+        Random random = new Random();
+
+
+        String streetName = streetNames[random.nextInt(streetNames.length)];
+        String postalCode = postalCodes[random.nextInt(postalCodes.length)];
+
+        int buildingNumber = random.nextInt(100) + 1;
+
+
+        return buildingNumber + " " + streetName + ", " + postalCode + " " + cities[0];
+    }
+}