Skip to content

Commit

Permalink
feat: add calibration table binding to vessel
Browse files Browse the repository at this point in the history
  • Loading branch information
bababebr committed Feb 11, 2024
1 parent 39c5fee commit e682c1b
Show file tree
Hide file tree
Showing 32 changed files with 393 additions and 156 deletions.
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.9</version>
</dependency>
</dependencies>


Expand Down
78 changes: 0 additions & 78 deletions src/main/java/com/ship4all/service/crude/cargo/CargoService.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.ship4all.service.crude.config;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;

@Configuration
@Slf4j
@Component
public class DatasourceConfig {

private String dataSourceUrl = "jdbc:postgresql://localhost:6541/CalibrationTable";
private String dataSourceUsername = "root";
private String dataSourcePassword = "root";

@Bean
@Primary
public DataSource getDataSource() {
final HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setMaximumPoolSize(2);
hikariConfig.setJdbcUrl(dataSourceUrl);
hikariConfig.setUsername(dataSourceUsername);
hikariConfig.setPassword(dataSourcePassword);
return new HikariDataSource(hikariConfig);
}
}
10 changes: 10 additions & 0 deletions src/main/java/com/ship4all/service/crude/enums/Constants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.ship4all.service.crude.enums;

public final class Constants {

/** Entities*/
public static final String VESSEL_ENTITY_NAME = "VESSEL";

/** */
public static final String FILE_EXTENSION_CSV = ".csv";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.ship4all.service.crude.exception;

import java.util.UUID;

public class CalibrationTableAlreadyBindToVesselException extends RuntimeException{

private final static String EXCEPTION_MESSAGE = "Vessel - %s already has calibration table";

public CalibrationTableAlreadyBindToVesselException(UUID vesselId) {
super(String.format(EXCEPTION_MESSAGE, vesselId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.ship4all.service.crude.exception;

public class ModelNotFoundException extends RuntimeException {

private static final String EXCEPTION_MESSAGE = "Entity - %s not found";

public ModelNotFoundException(String entityName) {
super(String.format(EXCEPTION_MESSAGE, entityName));
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ship4all.service.crude.exception;
package com.ship4all.service.crude.exception.handler;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ship4all.service.crude.exception;
package com.ship4all.service.crude.exception.handler;

import com.ship4all.service.crude.exception.CalibrationTableAlreadyBindToVesselException;
import jakarta.servlet.ServletException;
import jakarta.validation.ValidationException;
import java.util.NoSuchElementException;
Expand All @@ -18,7 +19,7 @@ public ErrorResponse elementNotFoundException(final RuntimeException e) {
return new ErrorResponse("Element Exception: ", e.getMessage());
}

@ExceptionHandler({IllegalStateException.class, ValidationException.class, IllegalArgumentException.class})
@ExceptionHandler({IllegalStateException.class, ValidationException.class, IllegalArgumentException.class, CalibrationTableAlreadyBindToVesselException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse stateException(final RuntimeException e) {
return new ErrorResponse("Request Exception: ", e.getMessage());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ship4all.service.crude.exception;
package com.ship4all.service.crude.exception.handler;

public class UtilsException extends RuntimeException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.ship4all.service.crude.cargo;
package com.ship4all.service.crude.mapper;

import com.ship4all.service.crude.cargo.dto.CargoDto;
import com.ship4all.service.crude.model.Cargo;
import com.ship4all.service.crude.model.dto.CargoDto;
import com.ship4all.service.crude.model.Api;
import com.ship4all.service.crude.model.dto.ApiDto;
import com.ship4all.service.crude.model.Temperature;
Expand All @@ -25,4 +26,4 @@ public static CargoDto cargoToDto(Cargo cargo) {
dto.setTemperature(TemperatureDto.create(cargo.getTemp_c(), cargo.getTemp_f()));
return dto;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.ship4all.service.crude.model;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "calibrationTable")
public class CalibrationTable {

@Id
Integer id;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ship4all.service.crude.cargo;
package com.ship4all.service.crude.model;

import com.ship4all.service.crude.enums.CargoType;
import jakarta.persistence.Column;
Expand All @@ -15,25 +15,25 @@
import lombok.experimental.FieldDefaults;

@Entity
@Table(name = "CARGO")
@Table(name = "cargo")
@FieldDefaults(level = AccessLevel.PRIVATE)
@Data
@NoArgsConstructor
public class Cargo {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column(name = "name")
String name;
@Enumerated(EnumType.STRING)
CargoType type;
@Column(name = "api")
Double api;
@Column(name = "density")
Double density;
@Column(name = "temp_c")
Double temp_c;
@Column(name = "temp_f")
Double temp_f;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column(name = "name")
String name;
@Enumerated(EnumType.STRING)
CargoType type;
@Column(name = "api")
Double api;
@Column(name = "density")
Double density;
@Column(name = "temp_c")
Double temp_c;
@Column(name = "temp_f")
Double temp_f;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.ship4all.service.crude.model;

import com.ship4all.service.crude.cargo.dto.CargoDto;
import com.ship4all.service.crude.model.dto.CargoDto;
import lombok.*;
import lombok.experimental.FieldDefaults;
import com.ship4all.service.crude.model.dto.UllageDtoFull;
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/com/ship4all/service/crude/model/Vessel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.ship4all.service.crude.model;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import java.util.UUID;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
public class Vessel {

@Id
private UUID id;
private String name;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ship4all.service.crude.cargo.dto;
package com.ship4all.service.crude.model.dto;

import com.ship4all.service.crude.enums.CargoType;
import com.ship4all.service.crude.model.dto.ApiDto;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.ship4all.service.crude.repository;

import com.ship4all.service.crude.model.CalibrationTable;
import java.util.UUID;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface CalibrationTableRepository extends JpaRepository<CalibrationTable, Integer> {

@Modifying
@Query(value = "INSERT INTO calibration_table (tank, ullage, cub1f, cub, cub1a, cub2a, cub3a, cub4a, vessel_id) "
+ "VALUES (:tank, :ullage, :cub1f, :cub, :cub1a, :cub2a, :cub3a, :cub4a, :vesselId)", nativeQuery = true)
void add(@Param("tank") String tank, @Param("ullage") double ullage, @Param("cub1f") double cub1f, @Param("cub") double cub,
@Param("cub1a") double cub1a, @Param("cub2a") double cub2a, @Param("cub3a") double cub3a, @Param("cub4a") double cub4a,
@Param("vesselId") UUID vessel_id);

@Query(value = "SELECT EXISTS(SELECT id from calibration_table where vessel_id = :vesselId)", nativeQuery = true)
Boolean vesselHasCalibrationTable(@Param("vesselId") UUID vesselId);

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ship4all.service.crude.cargo;
package com.ship4all.service.crude.repository;

import com.ship4all.service.crude.model.Cargo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.ship4all.service.crude.enums.CargoType;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.ship4all.service.crude.repository;

import com.ship4all.service.crude.model.Vessel;
import java.util.UUID;
import org.springframework.data.jpa.repository.JpaRepository;

public interface VesselRepository extends JpaRepository<Vessel, UUID> {

}
Loading

0 comments on commit e682c1b

Please sign in to comment.