diff --git a/carrier-service/carrier-service.iml b/carrier-service/carrier-service.iml new file mode 100644 index 0000000..640cd48 --- /dev/null +++ b/carrier-service/carrier-service.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/carrier-service/src/main/java/com/nas/carrier/command/CarrierCommand.java b/carrier-service/src/main/java/com/nas/carrier/command/CarrierCommand.java new file mode 100644 index 0000000..0d142aa --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/command/CarrierCommand.java @@ -0,0 +1,13 @@ +package com.nas.carrier.command; + + +import lombok.Getter; +import lombok.Setter; + +import java.util.Set; + +@Getter +@Setter +public class CarrierCommand { + private Set jobCommands; +} diff --git a/carrier-service/src/main/java/com/nas/carrier/dto/ApplicationSubmitDto.java b/carrier-service/src/main/java/com/nas/carrier/dto/ApplicationSubmitDto.java new file mode 100644 index 0000000..641b036 --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/dto/ApplicationSubmitDto.java @@ -0,0 +1,14 @@ +package com.nas.carrier.dto; + + +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +public class ApplicationSubmitDto { + private String id; + private String fullName; + private String email; +} diff --git a/carrier-service/src/main/java/com/nas/carrier/dto/CarrierDto.java b/carrier-service/src/main/java/com/nas/carrier/dto/CarrierDto.java new file mode 100644 index 0000000..45d2d29 --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/dto/CarrierDto.java @@ -0,0 +1,14 @@ +package com.nas.carrier.dto; + + +import lombok.Getter; +import lombok.Setter; + +import java.util.Set; + +@Getter +@Setter +public class CarrierDto { + private String id; + private Set jobs; +} diff --git a/carrier-service/src/main/java/com/nas/carrier/dto/JobDto.java b/carrier-service/src/main/java/com/nas/carrier/dto/JobDto.java new file mode 100644 index 0000000..6b08a9c --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/dto/JobDto.java @@ -0,0 +1,15 @@ +package com.nas.carrier.dto; + + +import lombok.Getter; +import lombok.Setter; + +import java.util.Set; + +@Getter +@Setter +public class JobDto { + private String id; + private String description; + private Set applicationSubmitSet; +} diff --git a/carrier-service/src/main/java/com/nas/carrier/model/Carrier.java b/carrier-service/src/main/java/com/nas/carrier/model/Carrier.java index b300e82..40e3c08 100644 --- a/carrier-service/src/main/java/com/nas/carrier/model/Carrier.java +++ b/carrier-service/src/main/java/com/nas/carrier/model/Carrier.java @@ -1,6 +1,8 @@ package com.nas.carrier.model; +import com.nas.carrier.command.CarrierCommand; +import com.nas.carrier.command.JobCommand; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @@ -8,6 +10,7 @@ import javax.persistence.Entity; import javax.persistence.OneToMany; import java.util.Set; +import java.util.stream.Collectors; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -18,10 +21,13 @@ public class Carrier extends BaseEntity{ @OneToMany private Set jobs; - - public static Carrier create(){ + public static Carrier create(final CarrierCommand carrierCommand){ final Carrier carrier = new Carrier(); + carrier.jobs = createSetOfJobs(carrierCommand.getJobCommands()); return carrier; } + public static Set createSetOfJobs(Set jobCommands){ + return jobCommands.stream().map(Job::create).collect(Collectors.toSet()); + } } diff --git a/carrier-service/src/main/java/com/nas/carrier/repository/ApplicationSubmitRepository.java b/carrier-service/src/main/java/com/nas/carrier/repository/ApplicationSubmitRepository.java new file mode 100644 index 0000000..39ea0ff --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/repository/ApplicationSubmitRepository.java @@ -0,0 +1,10 @@ +package com.nas.carrier.repository; + +import com.nas.carrier.model.ApplicationSubmit; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface ApplicationSubmitRepository extends JpaRepository { +} diff --git a/carrier-service/src/main/java/com/nas/carrier/repository/CarrierRepository.java b/carrier-service/src/main/java/com/nas/carrier/repository/CarrierRepository.java new file mode 100644 index 0000000..6c0e3b6 --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/repository/CarrierRepository.java @@ -0,0 +1,10 @@ +package com.nas.carrier.repository; + +import com.nas.carrier.model.Carrier; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface CarrierRepository extends JpaRepository { +} diff --git a/carrier-service/src/main/java/com/nas/carrier/repository/JobRepository.java b/carrier-service/src/main/java/com/nas/carrier/repository/JobRepository.java new file mode 100644 index 0000000..93e4d6a --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/repository/JobRepository.java @@ -0,0 +1,10 @@ +package com.nas.carrier.repository; + +import com.nas.carrier.model.Job; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface JobRepository extends JpaRepository { +} diff --git a/carrier-service/src/main/java/com/nas/carrier/service/carrier/CarrierService.java b/carrier-service/src/main/java/com/nas/carrier/service/carrier/CarrierService.java new file mode 100644 index 0000000..fce896c --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/service/carrier/CarrierService.java @@ -0,0 +1,4 @@ +package com.nas.carrier.service.carrier; + +public interface CarrierService { +} diff --git a/carrier-service/src/main/java/com/nas/carrier/service/carrier/CarrierServiceImpl.java b/carrier-service/src/main/java/com/nas/carrier/service/carrier/CarrierServiceImpl.java new file mode 100644 index 0000000..c10a621 --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/service/carrier/CarrierServiceImpl.java @@ -0,0 +1,12 @@ +package com.nas.carrier.service.carrier; + + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +@RequiredArgsConstructor +public class CarrierServiceImpl implements CarrierService{ +} diff --git a/carrier-service/src/main/java/com/nas/carrier/service/job/JobService.java b/carrier-service/src/main/java/com/nas/carrier/service/job/JobService.java new file mode 100644 index 0000000..aed12ee --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/service/job/JobService.java @@ -0,0 +1,4 @@ +package com.nas.carrier.service.job; + +public interface JobService { +} diff --git a/carrier-service/src/main/java/com/nas/carrier/service/job/JobServiceImpl.java b/carrier-service/src/main/java/com/nas/carrier/service/job/JobServiceImpl.java new file mode 100644 index 0000000..9ca38f0 --- /dev/null +++ b/carrier-service/src/main/java/com/nas/carrier/service/job/JobServiceImpl.java @@ -0,0 +1,12 @@ +package com.nas.carrier.service.job; + + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +@RequiredArgsConstructor +public class JobServiceImpl implements JobService{ +} diff --git a/carrier-service/src/main/resources/application.yml b/carrier-service/src/main/resources/application.yml new file mode 100644 index 0000000..aa6dd79 --- /dev/null +++ b/carrier-service/src/main/resources/application.yml @@ -0,0 +1,25 @@ +spring: + devtools: + livereload: + enabled: true + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect + hibernate: + ddl-auto: update + show-sql: true + datasource: + driverClassName: org.postgresql.Driver + url: jdbc:postgresql://localhost:5432/carrier + username: postgres + password: postgres + + application: + name: driver + profiles: + active: default + + +server: + port: 8084 diff --git a/carrier-service/src/test/java/com.nas.carrier/CarrierServiceApplicationTest.java b/carrier-service/src/test/java/com.nas.carrier/CarrierServiceApplicationTest.java new file mode 100644 index 0000000..4bdd938 --- /dev/null +++ b/carrier-service/src/test/java/com.nas.carrier/CarrierServiceApplicationTest.java @@ -0,0 +1,8 @@ +package com.nas.carrier; + + +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class CarrierServiceApplicationTest { +} diff --git a/customer-service/src/main/java/com/nas/customer/service/controller/CustomerController.java b/customer-service/src/main/java/com/nas/customer/service/controller/CustomerController.java index 952eca1..d5e2ab5 100644 --- a/customer-service/src/main/java/com/nas/customer/service/controller/CustomerController.java +++ b/customer-service/src/main/java/com/nas/customer/service/controller/CustomerController.java @@ -43,8 +43,8 @@ public ResponseEntity sendRequestToDriver(@RequestBody final CustomerReq return ResponseEntity.ok("Message send successfully"); } @GetMapping - public ResponseEntity> getAll(Pageable pageable, CustomerCriteria customerCriteria){ - final Page customers = customerService.findAllByDeletedFalse(pageable, customerCriteria); + public ResponseEntity> getAll(Pageable pageable){ + final Page customers = customerService.findAllByDeletedFalse(pageable); return ResponseEntity.ok(customers.map(customerMapper::toDto)); } @GetMapping("/driver/available") diff --git a/customer-service/src/main/java/com/nas/customer/service/repository/CustomerRepository.java b/customer-service/src/main/java/com/nas/customer/service/repository/CustomerRepository.java index 2043578..7f7ed5e 100644 --- a/customer-service/src/main/java/com/nas/customer/service/repository/CustomerRepository.java +++ b/customer-service/src/main/java/com/nas/customer/service/repository/CustomerRepository.java @@ -1,7 +1,5 @@ package com.nas.customer.service.repository; -import com.nas.core.util.PatternUtil; -import com.nas.customer.service.criteria.CustomerCriteria; import com.nas.customer.service.model.Customer; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -9,35 +7,9 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; -import javax.persistence.criteria.Predicate; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import static com.nas.customer.service.model.BaseEntity_.ACTIVE; -import static com.nas.customer.service.model.Customer_.FIRST_NAME; -import static com.nas.customer.service.model.Customer_.LAST_NAME; - @Repository public interface CustomerRepository extends JpaRepository , JpaSpecificationExecutor { - default Page findCustomersByDeletedFalse(Pageable pageable, CustomerCriteria customerCriteria){ - return findAll((root, query, builder) -> { - List predicates = new ArrayList<>(Arrays.asList( - builder.greaterThanOrEqualTo(root.get(FIRST_NAME), LocalDateTime.now()) - )); - if (customerCriteria.getLastName() != null) { - String pattern = PatternUtil.likePattern(customerCriteria.getLastName().toUpperCase()); - predicates.add(builder.like(builder.upper(root.get(LAST_NAME)), pattern)); - } - if (customerCriteria.getActive() != null) { - predicates.add(builder.equal(root.get(ACTIVE), customerCriteria.getActive())); - } - query.orderBy(builder.desc(root.get(ACTIVE))); - return builder.and(predicates.toArray(new Predicate[]{})); - - }, pageable); - } + Page findCustomersByDeletedFalse(Pageable pageable); Customer findByDriverId(String driverId); } diff --git a/customer-service/src/main/java/com/nas/customer/service/service/CustomerService.java b/customer-service/src/main/java/com/nas/customer/service/service/CustomerService.java index 17606c0..8ad3e87 100644 --- a/customer-service/src/main/java/com/nas/customer/service/service/CustomerService.java +++ b/customer-service/src/main/java/com/nas/customer/service/service/CustomerService.java @@ -13,7 +13,7 @@ public interface CustomerService { Customer create(final CustomerCommand customerCommand); - Page findAllByDeletedFalse(Pageable pageable, CustomerCriteria customerCriteria); + Page findAllByDeletedFalse(Pageable pageable); Customer findById(String customerId); void updateInfo(final CustomerInfoUpdateCmd customerCommand, String customerId); Set getDriversAvailable(); diff --git a/customer-service/src/main/java/com/nas/customer/service/service/CustomerServiceImpl.java b/customer-service/src/main/java/com/nas/customer/service/service/CustomerServiceImpl.java index cf1f270..f6dd07a 100644 --- a/customer-service/src/main/java/com/nas/customer/service/service/CustomerServiceImpl.java +++ b/customer-service/src/main/java/com/nas/customer/service/service/CustomerServiceImpl.java @@ -44,8 +44,8 @@ public Customer create(CustomerCommand customerCommand) { } @Override - public Page findAllByDeletedFalse(Pageable pageable, CustomerCriteria customerCriteria) { - return customerRepository.findCustomersByDeletedFalse(pageable, customerCriteria); + public Page findAllByDeletedFalse(Pageable pageable) { + return customerRepository.findCustomersByDeletedFalse(pageable); } @Override public Customer findById(String customerId) { @@ -75,10 +75,10 @@ public void sendRequestDriver(CustomerRequestDriver requestDriver){ .findAny().orElseThrow( () -> new BusinessException(ExceptionPayloadFactory.DRIVER_LOCATION_NOT_FOUND.get()) ); - final Customer customer = findById(requestDriver.getCustomerId()); - log.info("Begin sending message"); - rabbitTemplate.convertAndSend("customer.exchange", "customer.routingkey", requestDriver); - log.info("message send good"); + final Customer customer = findById(requestDriver.getCustomerId()); + log.info("Begin sending message"); + rabbitTemplate.convertAndSend("customer.exchange", "customer.routingkey", requestDriver); + log.info("message send good"); } @Override public void updateInfo(CustomerInfoUpdateCmd customerCommand, String customerId) { diff --git a/driver-location-service/target/classes/application.yml b/driver-location-service/target/classes/application.yml index d7f7c1f..34e179f 100644 --- a/driver-location-service/target/classes/application.yml +++ b/driver-location-service/target/classes/application.yml @@ -4,7 +4,7 @@ spring: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect hibernate: - ddl-auto: create-drop + ddl-auto: update show-sql: true datasource: driverClassName: org.postgresql.Driver diff --git a/driver-service/src/main/java/com/nas/driver/controller/DriverController.java b/driver-service/src/main/java/com/nas/driver/controller/DriverController.java index d2e1105..ea739fc 100644 --- a/driver-service/src/main/java/com/nas/driver/controller/DriverController.java +++ b/driver-service/src/main/java/com/nas/driver/controller/DriverController.java @@ -35,8 +35,8 @@ public ResponseEntity create(@RequestBody final DriverCommand driverC return ResponseEntity.created(uri).body(driverMapper.toDto(driver)); } @GetMapping("/available") - public ResponseEntity> getAllAvailable(Pageable pageable, DriverCriteria driverCriteria){ - return ResponseEntity.ok(driverService.getDriversAvailable(pageable, driverCriteria) + public ResponseEntity> getAllAvailable(Pageable pageable){ + return ResponseEntity.ok(driverService.getDriversAvailable(pageable) .stream().map(driverMapper::toDto) .collect(Collectors.toSet())); } @@ -46,8 +46,8 @@ public ResponseEntity getDriverById(@PathVariable("driverId") final S return ResponseEntity.ok(driverMapper.toDto(driver)); } @GetMapping - public ResponseEntity> getAll(Pageable pageable, DriverCriteria driverCriteria){ - return ResponseEntity.ok(driverService.getAll(pageable, driverCriteria).map(driverMapper::toDto)); + public ResponseEntity> getAll(Pageable pageable){ + return ResponseEntity.ok(driverService.getAll(pageable).map(driverMapper::toDto)); } @PutMapping("/{driverId}") public ResponseEntity updateInfo( diff --git a/driver-service/src/main/java/com/nas/driver/criteria/DriverCriteria.java b/driver-service/src/main/java/com/nas/driver/criteria/DriverCriteria.java index 8e0437a..f7266ee 100644 --- a/driver-service/src/main/java/com/nas/driver/criteria/DriverCriteria.java +++ b/driver-service/src/main/java/com/nas/driver/criteria/DriverCriteria.java @@ -1,6 +1,7 @@ package com.nas.driver.criteria; +import com.nas.driver.enums.DriverStatus; import lombok.Getter; import lombok.Setter; @@ -9,5 +10,5 @@ public class DriverCriteria { private String firstName; private String lastName; - private String status; + private DriverStatus status; } diff --git a/driver-service/src/main/java/com/nas/driver/model/Driver.java b/driver-service/src/main/java/com/nas/driver/model/Driver.java index 0c88246..7ecb963 100644 --- a/driver-service/src/main/java/com/nas/driver/model/Driver.java +++ b/driver-service/src/main/java/com/nas/driver/model/Driver.java @@ -6,10 +6,7 @@ import com.nas.driver.enums.DriverStatus; import lombok.*; -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.OneToMany; +import javax.persistence.*; import java.time.LocalDateTime; import java.util.Set; import java.util.stream.Collectors; @@ -25,6 +22,7 @@ public class Driver extends BaseEntity{ private String carId; private String firstName; private String lastName; + @Enumerated(EnumType.STRING) private DriverStatus driverStatus; @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "driver") diff --git a/driver-service/src/main/java/com/nas/driver/repository/DriverRepository.java b/driver-service/src/main/java/com/nas/driver/repository/DriverRepository.java index f600a67..0a0e618 100644 --- a/driver-service/src/main/java/com/nas/driver/repository/DriverRepository.java +++ b/driver-service/src/main/java/com/nas/driver/repository/DriverRepository.java @@ -1,7 +1,6 @@ package com.nas.driver.repository; -import com.nas.core.util.PatternUtil; -import com.nas.driver.criteria.DriverCriteria; + import com.nas.driver.model.Driver; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -9,34 +8,10 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; -import javax.persistence.criteria.Predicate; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - - -import static com.nas.driver.model.Driver_.*; @Repository public interface DriverRepository extends JpaRepository , JpaSpecificationExecutor { - default Page findAllByDeletedFalse(Pageable pageable, DriverCriteria driverCriteria){ - return findAll((root, query, builder) -> { - List predicates = new ArrayList<>(Arrays.asList( - builder.greaterThanOrEqualTo(root.get(FIRST_NAME), LocalDateTime.now()) - )); - if (driverCriteria.getLastName() != null) { - String pattern = PatternUtil.likePattern(driverCriteria.getLastName().toUpperCase()); - predicates.add(builder.like(builder.upper(root.get(LAST_NAME)), pattern)); - } - if (driverCriteria.getStatus() != null) { - predicates.add(builder.equal(root.get(ACTIVE), driverCriteria.getStatus())); - } - query.orderBy(builder.desc(root.get(DRIVER_STATUS))); - return builder.and(predicates.toArray(new Predicate[]{})); - - }, pageable); - } + Page findAllByDeletedFalse(Pageable pageable); } diff --git a/driver-service/src/main/java/com/nas/driver/service/driver/DriverService.java b/driver-service/src/main/java/com/nas/driver/service/driver/DriverService.java index 9554718..40fffa9 100644 --- a/driver-service/src/main/java/com/nas/driver/service/driver/DriverService.java +++ b/driver-service/src/main/java/com/nas/driver/service/driver/DriverService.java @@ -12,8 +12,8 @@ public interface DriverService { Driver create(final DriverCommand driverCommand); void update(String driverId, DriverCommand driverCommand); - Page getAll(Pageable pageable, DriverCriteria driverCriteria); + Page getAll(Pageable pageable); Driver findById(String driverId); - Set getDriversAvailable(Pageable pageable, DriverCriteria driverCriteria); + Set getDriversAvailable(Pageable pageable); void listenToMessage(CustomerRequestDriver message); } diff --git a/driver-service/src/main/java/com/nas/driver/service/driver/DriverServiceImpl.java b/driver-service/src/main/java/com/nas/driver/service/driver/DriverServiceImpl.java index f4d6556..a55c764 100644 --- a/driver-service/src/main/java/com/nas/driver/service/driver/DriverServiceImpl.java +++ b/driver-service/src/main/java/com/nas/driver/service/driver/DriverServiceImpl.java @@ -54,8 +54,8 @@ public void update(String driverId, DriverCommand driverCommand) { log.info("Driver with id {} updated successfully", driver.getId()); } @Override - public Set getDriversAvailable(Pageable pageable, DriverCriteria driverCriteria) { - return getAll(pageable, driverCriteria).stream().filter( + public Set getDriversAvailable(Pageable pageable) { + return getAll(pageable).stream().filter( dv -> dv.getDriverStatus() == DriverStatus.AVAILABLE) .collect(Collectors.toSet()); @@ -78,7 +78,7 @@ public Driver findById(String driverId){ return driver; } @Override - public Page getAll(Pageable pageable, DriverCriteria driverCriteria) { - return driverRepository.findAllByDeletedFalse(pageable, driverCriteria); + public Page getAll(Pageable pageable) { + return driverRepository.findAllByDeletedFalse(pageable); } }