Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ data class ControlObjective(
val targetNumberOfControlsAtSea: Int,
val targetNumberOfControlsAtPort: Int,
val controlPriorityLevel: Double,
val infringementRiskLevel: Double,
)
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ interface ControlObjectivesRepository {
targetNumberOfControlsAtSea: Int?,
targetNumberOfControlsAtPort: Int?,
controlPriorityLevel: Double?,
infringementRiskLevel: Double?,
)

fun delete(id: Int)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class AddControlObjective(
targetNumberOfControlsAtPort = 0,
targetNumberOfControlsAtSea = 0,
controlPriorityLevel = 1.0,
infringementRiskLevel = 2.0,
),
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,13 @@ class UpdateControlObjective(
targetNumberOfControlsAtSea: Int?,
targetNumberOfControlsAtPort: Int?,
controlPriorityLevel: Double?,
infringementRiskLevel: Double?,
) {
require(
targetNumberOfControlsAtSea != null || targetNumberOfControlsAtPort != null || controlPriorityLevel != null,
targetNumberOfControlsAtSea != null ||
targetNumberOfControlsAtPort != null ||
controlPriorityLevel != null ||
infringementRiskLevel != null
) {
"No value to update"
}
Expand All @@ -26,6 +30,7 @@ class UpdateControlObjective(
targetNumberOfControlsAtSea,
targetNumberOfControlsAtPort,
controlPriorityLevel,
infringementRiskLevel,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class ControlObjectiveAdminController(
targetNumberOfControlsAtSea = updateControlObjectiveData.targetNumberOfControlsAtSea,
targetNumberOfControlsAtPort = updateControlObjectiveData.targetNumberOfControlsAtPort,
controlPriorityLevel = updateControlObjectiveData.controlPriorityLevel,
infringementRiskLevel = updateControlObjectiveData.infringementRiskLevel,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ data class UpdateControlObjectiveDataInput(
var targetNumberOfControlsAtSea: Int? = null,
var targetNumberOfControlsAtPort: Int? = null,
var controlPriorityLevel: Double? = null,
var infringementRiskLevel: Double? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ data class ControlObjectiveDataOutput(
val targetNumberOfControlsAtSea: Int,
val targetNumberOfControlsAtPort: Int,
val controlPriorityLevel: Double,
val infringementRiskLevel: Double,
) {
companion object {
fun fromControlObjective(controlObjective: ControlObjective): ControlObjectiveDataOutput {
Expand All @@ -25,6 +26,7 @@ data class ControlObjectiveDataOutput(
targetNumberOfControlsAtSea = controlObjective.targetNumberOfControlsAtSea,
targetNumberOfControlsAtPort = controlObjective.targetNumberOfControlsAtPort,
controlPriorityLevel = controlObjective.controlPriorityLevel,
infringementRiskLevel = controlObjective.infringementRiskLevel,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ data class ControlObjectivesEntity(
val targetNumberOfControlsAtPort: Int,
@Column(name = "control_priority_level")
val controlPriorityLevel: Double,
) {
@Column(name = "infringement_risk_level")
val infringementRiskLevel: Double,
) {
fun toControlObjective() =
ControlObjective(
id = id,
Expand All @@ -34,17 +36,6 @@ data class ControlObjectivesEntity(
targetNumberOfControlsAtSea = targetNumberOfControlsAtSea,
targetNumberOfControlsAtPort = targetNumberOfControlsAtPort,
controlPriorityLevel = controlPriorityLevel,
infringementRiskLevel = infringementRiskLevel,
)

companion object {
fun fromControlObjective(controlObjective: ControlObjective): ControlObjectivesEntity =
ControlObjectivesEntity(
facade = Seafront.from(controlObjective.facade).toString(),
segment = controlObjective.segment,
year = controlObjective.year,
targetNumberOfControlsAtSea = controlObjective.targetNumberOfControlsAtSea,
targetNumberOfControlsAtPort = controlObjective.targetNumberOfControlsAtPort,
controlPriorityLevel = controlObjective.controlPriorityLevel,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,17 @@ class JpaControlObjectivesRepository(
targetNumberOfControlsAtSea: Int?,
targetNumberOfControlsAtPort: Int?,
controlPriorityLevel: Double?,
infringementRiskLevel: Double?,
) {
try {
controlPriorityLevel?.let {
dbControlObjectivesRepository.updateControlPriorityLevel(id, it)
}

infringementRiskLevel?.let {
dbControlObjectivesRepository.updateInfringementRiskLevel(id, it)
}

targetNumberOfControlsAtSea?.let {
dbControlObjectivesRepository.updateTargetNumberOfControlsAtSea(id, it)
}
Expand Down Expand Up @@ -61,6 +66,7 @@ class JpaControlObjectivesRepository(
controlObjective.targetNumberOfControlsAtSea,
controlObjective.targetNumberOfControlsAtPort,
controlObjective.controlPriorityLevel,
controlObjective.infringementRiskLevel,
)

return dbControlObjectivesRepository.findByFacadeAndSegmentAndYearEquals(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ interface DBControlObjectivesRepository : CrudRepository<ControlObjectivesEntity
controlPriorityLevel: Double,
)

@Modifying(clearAutomatically = true)
@Query(
value = "UPDATE control_objectives SET infringement_risk_level = :infringementRiskLevel WHERE id = :controlObjectiveId",
nativeQuery = true,
)
fun updateInfringementRiskLevel(
controlObjectiveId: Int,
infringementRiskLevel: Double,
)

@Query
fun findAllByYearEquals(year: Int): List<ControlObjectivesEntity>

Expand All @@ -45,10 +55,25 @@ interface DBControlObjectivesRepository : CrudRepository<ControlObjectivesEntity
@Modifying(clearAutomatically = true)
@Query(
value = """
INSERT INTO control_objectives (facade, segment, year, target_number_of_controls_at_sea, target_number_of_controls_at_port, control_priority_level)
SELECT facade, segment, :nextYear, target_number_of_controls_at_sea, target_number_of_controls_at_port, control_priority_level
FROM control_objectives AS old
WHERE old.year = :currentYear
INSERT INTO control_objectives (
facade,
segment,
year,
target_number_of_controls_at_sea,
target_number_of_controls_at_port,
control_priority_level,
infringement_risk_level
)
SELECT
facade,
segment,
:nextYear,
target_number_of_controls_at_sea,
target_number_of_controls_at_port,
control_priority_level,
infringement_risk_level
FROM control_objectives AS old
WHERE old.year = :currentYear
""",
nativeQuery = true,
)
Expand All @@ -61,14 +86,23 @@ interface DBControlObjectivesRepository : CrudRepository<ControlObjectivesEntity
@Query(
"""
INSERT INTO
control_objectives
control_objectives (
facade,
segment,
year,
target_number_of_controls_at_sea,
target_number_of_controls_at_port,
control_priority_level,
infringement_risk_level
)
VALUES (
cast(:facade as facade),
:segment,
:year,
:targetNumberOfControlsAtSea,
:targetNumberOfControlsAtPort,
:controlPriorityLevel
:controlPriorityLevel,
:infringementRiskLevel
)
""",
nativeQuery = true,
Expand All @@ -80,6 +114,7 @@ interface DBControlObjectivesRepository : CrudRepository<ControlObjectivesEntity
targetNumberOfControlsAtSea: Int,
targetNumberOfControlsAtPort: Int,
controlPriorityLevel: Double,
infringementRiskLevel: Double,
)

@Query(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE public.control_objectives
ADD COLUMN infringement_risk_level DOUBLE PRECISION NOT NULL DEFAULT 2.0;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ALTER TABLE public.current_segments
ADD COLUMN infringement_risk_level DOUBLE PRECISION NOT NULL DEFAULT 2.0,
ADD COLUMN segment_highest_infringement_risk VARCHAR(100);
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
ALTER TABLE public.risk_factors
ADD COLUMN recent_segments_probability_risk_factor DOUBLE PRECISION NOT NULL DEFAULT 2.0,
ADD COLUMN usual_segments_probability_risk_factor DOUBLE PRECISION NOT NULL DEFAULT 2.0,
ADD COLUMN infringement_risk_level DOUBLE PRECISION NOT NULL DEFAULT 2.0,
ADD COLUMN segment_highest_infringement_risk VARCHAR(100),
ADD COLUMN recent_segments_infringement_risk_level DOUBLE PRECISION NOT NULL DEFAULT 2.0,
ADD COLUMN recent_segment_highest_infringement_risk VARCHAR(100),
ADD COLUMN usual_segments_infringement_risk_level DOUBLE PRECISION NOT NULL DEFAULT 2.0,
ADD COLUMN usual_segment_highest_infringement_risk VARCHAR(100);
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
UPDATE control_objectives
SET infringement_risk_level = 3.0
WHERE segment LIKE 'NWW%';

UPDATE control_objectives
SET infringement_risk_level = 4.0
WHERE segment LIKE 'MED%';

UPDATE control_objectives
SET infringement_risk_level = 1.0
WHERE segment LIKE 'NS%';
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class UpdateControlObjectiveUTests {
// When
val throwable =
catchThrowable {
UpdateControlObjective(controlObjectivesRepository).execute(1, null, null, null)
UpdateControlObjective(controlObjectivesRepository).execute(1, null, null, null, null)
}

// Then
Expand All @@ -32,7 +32,7 @@ class UpdateControlObjectiveUTests {
// When
val throwable =
catchThrowable {
UpdateControlObjective(controlObjectivesRepository).execute(1, 123, null, null)
UpdateControlObjective(controlObjectivesRepository).execute(1, 123, null, null, null)
}

// Then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,7 @@ class ComputeRiskFactorUTests {
controlPriorityLevel = 1.2,
targetNumberOfControlsAtSea = 1,
targetNumberOfControlsAtPort = 2,
infringementRiskLevel = 3.0,
),
ControlObjective(
facade = "MEMN",
Expand All @@ -206,6 +207,7 @@ class ComputeRiskFactorUTests {
controlPriorityLevel = 1.5,
targetNumberOfControlsAtSea = 1,
targetNumberOfControlsAtPort = 2,
infringementRiskLevel = 1.0,
),
ControlObjective(
facade = "MED",
Expand All @@ -214,6 +216,7 @@ class ComputeRiskFactorUTests {
controlPriorityLevel = 1.2,
targetNumberOfControlsAtSea = 1,
targetNumberOfControlsAtPort = 2,
infringementRiskLevel = 4.0,
),
)
val port = PortFaker.fakePort(locode = portLocode, name = "Port name", facade = "MED")
Expand Down Expand Up @@ -286,6 +289,7 @@ class ComputeRiskFactorUTests {
controlPriorityLevel = 1.2,
targetNumberOfControlsAtSea = 1,
targetNumberOfControlsAtPort = 2,
infringementRiskLevel = 2.0,
),
ControlObjective(
facade = "MEMN",
Expand All @@ -294,6 +298,7 @@ class ComputeRiskFactorUTests {
controlPriorityLevel = 1.5,
targetNumberOfControlsAtSea = 1,
targetNumberOfControlsAtPort = 2,
infringementRiskLevel = 3.0,
),
)
val port = PortFaker.fakePort(locode = portLocode, name = "Port name", facade = "MED")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ class ControlObjectiveAdminControllerITests {
targetNumberOfControlsAtSea = 23,
targetNumberOfControlsAtPort = 102,
controlPriorityLevel = 1.0,
infringementRiskLevel = 1.5,
year = 2021,
),
ControlObjective(
Expand All @@ -110,6 +111,7 @@ class ControlObjectiveAdminControllerITests {
targetNumberOfControlsAtSea = 23,
targetNumberOfControlsAtPort = 102,
controlPriorityLevel = 1.0,
infringementRiskLevel = 1.5,
year = 2021,
),
ControlObjective(
Expand All @@ -119,6 +121,7 @@ class ControlObjectiveAdminControllerITests {
targetNumberOfControlsAtSea = 23,
targetNumberOfControlsAtPort = 102,
controlPriorityLevel = 1.0,
infringementRiskLevel = 1.5,
year = 2021,
),
),
Expand Down
Loading
Loading