Skip to content

Commit b3789ab

Browse files
committed
create fuel management objective code table and add liquibase change to change the weighted rank based on requirement
1 parent a585bba commit b3789ab

File tree

14 files changed

+398
-16
lines changed

14 files changed

+398
-16
lines changed

db/app_wf1_prev-changelog.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,21 @@
13021302
"rollback": [
13031303
]
13041304
}
1305+
},
1306+
{
1307+
"changeSet": {
1308+
"id": "01_00_23_00",
1309+
"author": "luli",
1310+
"changes": [
1311+
{
1312+
"sqlFile": {
1313+
"dbms": "postgresql", "endDelimiter": ";",
1314+
"path": "scripts/01_00_23/00/dml/update_fuel_management_objective_weighted_rank.sql"
1315+
}
1316+
}
1317+
]
1318+
}
13051319
}
1320+
13061321
]
13071322
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-- Alter the column to allow decimal precision
2+
ALTER TABLE wfprev.fuel_management_objective
3+
ALTER COLUMN weighted_rank TYPE DECIMAL(4,2);
4+
5+
UPDATE wfprev.fuel_management_objective
6+
SET weighted_rank = 0.39
7+
WHERE objective_label = 'PSTA Class Greater than 7';
8+
9+
UPDATE wfprev.fuel_management_objective
10+
SET weighted_rank = 0.3
11+
WHERE objective_label = 'Part of Larger Risk Reduction Strategy';
12+
13+
UPDATE wfprev.fuel_management_objective
14+
SET weighted_rank = 0.2
15+
WHERE objective_label = 'Cost Effectiveness';
16+
17+
UPDATE wfprev.fuel_management_objective
18+
SET weighted_rank = 0.1
19+
WHERE objective_label = 'WUI WRR Plans with AOI that expands outside of the WUI';

postman/Prevention.postman_collection.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2144,6 +2144,53 @@
21442144
},
21452145
"response": []
21462146
},
2147+
{
2148+
"name": "GET Fuel Management Objective Codes",
2149+
"event": [
2150+
{
2151+
"listen": "test",
2152+
"script": {
2153+
"exec": [
2154+
"pm.test(\"Status code is 200\", function() {",
2155+
" pm.response.to.have.status(200);",
2156+
"})"
2157+
],
2158+
"type": "text/javascript"
2159+
}
2160+
}
2161+
],
2162+
"request": {
2163+
"auth": {
2164+
"type": "bearer",
2165+
"bearer": [
2166+
{
2167+
"key": "token",
2168+
"value": "{{accessToken}}",
2169+
"type": "string"
2170+
}
2171+
]
2172+
},
2173+
"method": "GET",
2174+
"header": [
2175+
{
2176+
"key": "Content-Type",
2177+
"value": "application/json",
2178+
"type": "text"
2179+
}
2180+
],
2181+
"url": {
2182+
"raw": "{{LOCAL_API_URL}}/codes/fuleManagementObjectiveCodes",
2183+
"host": [
2184+
"{{LOCAL_API_URL}}"
2185+
],
2186+
"path": [
2187+
"codes",
2188+
"fuleManagementObjectiveCodes"
2189+
]
2190+
}
2191+
},
2192+
"response": []
2193+
},
21472194
{
21482195
"name": "GET WUI Risk Class Codes",
21492196
"event": [

server/wfprev-api/src/main/java/ca/bc/gov/nrs/wfprev/common/enums/CodeTables.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@ private CodeTables() {}
2626
public static final String SILVICULTURE_TECHNIQUE_CODE = "silvicultureTechniqueCodes";
2727
public static final String PROPOSAL_TYPE_CODE = "proposalTypeCodes";
2828
public static final String WUI_RISK_CLASS_CODE = "wuiRiskClassCodes";
29+
public static final String FUEL_MANAGEMENT_OBJECTIVE_CODE = "fuelManagementObjectiveCodes";
2930
}

server/wfprev-api/src/main/java/ca/bc/gov/nrs/wfprev/controllers/CodesController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public ResponseEntity<CollectionModel<?>> getCodes(@PathVariable("codeTable") St
7070
case CodeTables.SILVICULTURE_TECHNIQUE_CODE -> result = codesService.getAllSilvicultureTechniqueCodes();
7171
case CodeTables.PROPOSAL_TYPE_CODE -> result = codesService.getAllProposalTypeCodes();
7272
case CodeTables.WUI_RISK_CLASS_CODE -> result = codesService.getAllWuiRiskClassCodes();
73+
case CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE -> result = codesService.getAllFuelManagementObjectiveCodes();
7374

7475
default -> {
7576
log.error("Invalid code table: {}", codeTable);
@@ -160,6 +161,7 @@ private CommonModel<?> fetchCodeById(String codeTable, String id) throws Service
160161
case CodeTables.SILVICULTURE_TECHNIQUE_CODE -> codesService.getSilvicultureTechniqueCodeById(id);
161162
case CodeTables.PROPOSAL_TYPE_CODE -> codesService.getProposalTypeCodeById(id);
162163
case CodeTables.WUI_RISK_CLASS_CODE -> codesService.getWuiRiskClassCodeById(id);
164+
case CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE -> codesService.getFuelManagementObjectiveCodeById(id);
163165
default -> null;
164166
};
165167
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package ca.bc.gov.nrs.wfprev.data.assemblers;
2+
3+
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
4+
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
5+
6+
import org.springframework.hateoas.CollectionModel;
7+
import org.springframework.hateoas.server.mvc.RepresentationModelAssemblerSupport;
8+
import org.springframework.stereotype.Component;
9+
10+
import ca.bc.gov.nrs.wfprev.common.enums.CodeTables;
11+
import ca.bc.gov.nrs.wfprev.controllers.CodesController;
12+
import ca.bc.gov.nrs.wfprev.data.entities.FuelManagementObjectiveCodeEntity;
13+
import ca.bc.gov.nrs.wfprev.data.models.FuelManagementObjectiveCodeModel;
14+
15+
@Component
16+
public class FuelManagementObjectiveCodeResourceAssembler extends RepresentationModelAssemblerSupport<FuelManagementObjectiveCodeEntity, FuelManagementObjectiveCodeModel> {
17+
18+
public FuelManagementObjectiveCodeResourceAssembler() {
19+
super(CodesController.class, FuelManagementObjectiveCodeModel.class);
20+
}
21+
22+
public FuelManagementObjectiveCodeEntity toEntity(FuelManagementObjectiveCodeModel model) {
23+
if (model == null) {
24+
return null;
25+
}
26+
27+
FuelManagementObjectiveCodeEntity entity = new FuelManagementObjectiveCodeEntity();
28+
entity.setFuelManagementObjectiveGuid(model.getFuelManagementObjectiveGuid());
29+
entity.setFuelManagementObjectiveTypeCode(model.getFuelManagementObjectiveTypeCode());
30+
entity.setObjectiveLabel(model.getObjectiveLabel());
31+
entity.setWeightedRank(model.getWeightedRank());
32+
return entity;
33+
}
34+
35+
@Override
36+
public FuelManagementObjectiveCodeModel toModel(FuelManagementObjectiveCodeEntity entity) {
37+
FuelManagementObjectiveCodeModel model = instantiateModel(entity);
38+
39+
model.add(linkTo(
40+
methodOn(CodesController.class)
41+
.getCodeById(CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE, entity.getFuelManagementObjectiveGuid()))
42+
.withSelfRel());
43+
44+
model.setFuelManagementObjectiveGuid(entity.getFuelManagementObjectiveGuid());
45+
model.setFuelManagementObjectiveTypeCode(entity.getFuelManagementObjectiveTypeCode());
46+
model.setObjectiveLabel(entity.getObjectiveLabel());
47+
model.setWeightedRank(entity.getWeightedRank());
48+
49+
return model;
50+
}
51+
52+
@Override
53+
public CollectionModel<FuelManagementObjectiveCodeModel> toCollectionModel(Iterable<? extends FuelManagementObjectiveCodeEntity> entities) {
54+
CollectionModel<FuelManagementObjectiveCodeModel> resources = super.toCollectionModel(entities);
55+
56+
resources.add(linkTo(methodOn(CodesController.class).getCodes(CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE)).withSelfRel());
57+
58+
return resources;
59+
}
60+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package ca.bc.gov.nrs.wfprev.data.entities;
2+
3+
import java.io.Serializable;
4+
import java.math.BigDecimal;
5+
import java.util.Date;
6+
7+
import org.springframework.data.annotation.LastModifiedBy;
8+
import org.springframework.data.annotation.LastModifiedDate;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
12+
import jakarta.persistence.Column;
13+
import jakarta.persistence.Entity;
14+
import jakarta.persistence.Id;
15+
import jakarta.persistence.Table;
16+
import jakarta.validation.constraints.NotNull;
17+
18+
import lombok.AllArgsConstructor;
19+
import lombok.Builder;
20+
import lombok.Data;
21+
import lombok.EqualsAndHashCode;
22+
import lombok.NoArgsConstructor;
23+
24+
@Entity
25+
@Table(name = "fuel_management_objective")
26+
@JsonIgnoreProperties(ignoreUnknown = false)
27+
@Data
28+
@EqualsAndHashCode(callSuper = false)
29+
@Builder
30+
@AllArgsConstructor
31+
@NoArgsConstructor
32+
public class FuelManagementObjectiveCodeEntity implements Serializable {
33+
private static final long serialVersionUID = 1L;
34+
35+
@Id
36+
@Column(name = "fuel_management_objective_guid", nullable = false)
37+
@NotNull
38+
private String fuelManagementObjectiveGuid;
39+
40+
@Column(name = "fuel_mgmt_obj_type_code", length = 10)
41+
private String fuelManagementObjectiveTypeCode;
42+
43+
@Column(name = "objective_label", length = 300)
44+
private String objectiveLabel;
45+
46+
@Column(name = "weighted_rank")
47+
private BigDecimal weightedRank;
48+
49+
@LastModifiedBy
50+
@NotNull
51+
@Column(name="update_user", length = 64)
52+
private String updateUser;
53+
54+
@LastModifiedDate
55+
@NotNull
56+
@Column(name="update_date")
57+
private Date updateDate;
58+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package ca.bc.gov.nrs.wfprev.data.models;
2+
3+
import java.math.BigDecimal;
4+
5+
import org.springframework.hateoas.server.core.Relation;
6+
7+
import com.fasterxml.jackson.annotation.JsonInclude;
8+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
9+
import com.fasterxml.jackson.annotation.JsonRootName;
10+
11+
import ca.bc.gov.nrs.wfprev.common.entities.CommonModel;
12+
import lombok.AllArgsConstructor;
13+
import lombok.Builder;
14+
import lombok.Data;
15+
import lombok.EqualsAndHashCode;
16+
import lombok.NoArgsConstructor;
17+
18+
@Data
19+
@EqualsAndHashCode(callSuper = false)
20+
@JsonRootName(value = "fuelManagementObjectiveCode")
21+
@Relation(collectionRelation = "fuelManagementObjectiveCode")
22+
@JsonInclude(Include.NON_NULL)
23+
@Builder
24+
@AllArgsConstructor
25+
@NoArgsConstructor
26+
public class FuelManagementObjectiveCodeModel extends CommonModel<FuelManagementObjectiveCodeModel> {
27+
private String fuelManagementObjectiveGuid;
28+
private String fuelManagementObjectiveTypeCode;
29+
private String objectiveLabel;
30+
private BigDecimal weightedRank;
31+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package ca.bc.gov.nrs.wfprev.data.repositories;
2+
3+
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
4+
import ca.bc.gov.nrs.wfprev.common.repository.CommonRepository;
5+
import ca.bc.gov.nrs.wfprev.data.entities.FuelManagementObjectiveCodeEntity;
6+
7+
import java.util.UUID;
8+
9+
@RepositoryRestResource(exported = false)
10+
public interface FuelManagementObjectiveCodeRepository extends CommonRepository<FuelManagementObjectiveCodeEntity, UUID> {}

server/wfprev-api/src/main/java/ca/bc/gov/nrs/wfprev/services/CodesService.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ public class CodesService implements CommonService {
6565
private final ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler;
6666
private final WUIRiskClassCodeRepository wuiRiskClassCodeRepository;
6767
private final WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler;
68+
private final FuelManagementObjectiveCodeRepository fuelManagementObjectiveCodeRepository;
69+
private final FuelManagementObjectiveCodeResourceAssembler fuelManagementObjectiveCodeResourceAssembler;
70+
6871

6972
public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAreaCodeResourceAssembler forestAreaCodeResourceAssembler,
7073
GeneralScopeCodeRepository generalScopeCodeRepository, GeneralScopeCodeResourceAssembler generalScopeCodeResourceAssembler,
@@ -80,7 +83,8 @@ public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAre
8083
FundingSourceCodeResourceAssembler fundingSourceCodeResourceAssembler, FundingSourceCodeRepository fundingSourceCodeRepository, SourceObjectNameCodeResourceAssembler sourceObjectNameCodeResourceAssembler, SourceObjectNameCodeRepository sourceObjectNameCodeRepository,
8184
AttachmentContentTypeCodeResourceAssembler attachmentContentTypeCodeResourceAssembler, AttachmentContentTypeCodeRepository attachmentContentTypeCodeRepository, SilvicultureBaseCodeResourceAssembler silvicultureBaseCodeResourceAssembler, SilvicultureBaseCodeRepository silvicultureBaseCodeRepository,
8285
SilvicultureMethodCodeResourceAssembler silvicultureMethodCodeResourceAssembler, SilvicultureMethodCodeRepository silvicultureMethodCodeRepository, SilvicultureTechniqueCodeResourceAssembler silvicultureTechniqueCodeResourceAssembler, SilvicultureTechniqueCodeRepository silvicultureTechniqueCodeRepository,
83-
ProposalTypeCodeRepository proposalTypeCodeRepository, ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler, WUIRiskClassCodeRepository wuiRiskClassCodeRepository, WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler) {
86+
ProposalTypeCodeRepository proposalTypeCodeRepository, ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler, WUIRiskClassCodeRepository wuiRiskClassCodeRepository, WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler,
87+
FuelManagementObjectiveCodeRepository fuelManagementObjectiveCodeRepository, FuelManagementObjectiveCodeResourceAssembler fuelManagementObjectiveCodeResourceAssembler) {
8488
this.forestAreaCodeRepository = forestAreaCodeRepository;
8589
this.forestAreaCodeResourceAssembler = forestAreaCodeResourceAssembler;
8690
this.generalScopeCodeRepository = generalScopeCodeRepository;
@@ -127,6 +131,8 @@ public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAre
127131
this.proposalTypeCodeRepository = proposalTypeCodeRepository;
128132
this.wuiRiskClassCodeResourceAssembler = wuiRiskClassCodeResourceAssembler;
129133
this.wuiRiskClassCodeRepository = wuiRiskClassCodeRepository;
134+
this.fuelManagementObjectiveCodeResourceAssembler = fuelManagementObjectiveCodeResourceAssembler;
135+
this.fuelManagementObjectiveCodeRepository = fuelManagementObjectiveCodeRepository;
130136
}
131137

132138
/**
@@ -575,4 +581,24 @@ public WUIRiskClassCodeModel getWuiRiskClassCodeById(String id) throws ServiceEx
575581
}
576582
}
577583

584+
public CollectionModel<FuelManagementObjectiveCodeModel> getAllFuelManagementObjectiveCodes() throws ServiceException {
585+
try {
586+
List<FuelManagementObjectiveCodeEntity> entities = fuelManagementObjectiveCodeRepository.findAll();
587+
return fuelManagementObjectiveCodeResourceAssembler.toCollectionModel(entities);
588+
} catch (Exception e) {
589+
throw new ServiceException(e.getLocalizedMessage(), e);
590+
}
591+
}
592+
593+
public FuelManagementObjectiveCodeModel getFuelManagementObjectiveCodeById(String id) throws ServiceException {
594+
try {
595+
return fuelManagementObjectiveCodeRepository.findById(UUID.fromString(id))
596+
.map(fuelManagementObjectiveCodeResourceAssembler::toModel)
597+
.orElse(null);
598+
} catch (Exception e) {
599+
throw new ServiceException(e.getLocalizedMessage(), e);
600+
}
601+
}
602+
603+
578604
}

0 commit comments

Comments
 (0)