Skip to content
Merged
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
15 changes: 15 additions & 0 deletions db/app_wf1_prev-changelog.json
Original file line number Diff line number Diff line change
Expand Up @@ -1302,6 +1302,21 @@
"rollback": [
]
}
},
{
"changeSet": {
"id": "01_00_23_00",
"author": "luli",
"changes": [
{
"sqlFile": {
"dbms": "postgresql", "endDelimiter": ";",
"path": "scripts/01_00_23/00/dml/update_fuel_management_objective_weighted_rank.sql"
}
}
]
}
}

]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- Alter the column to allow decimal precision
ALTER TABLE wfprev.fuel_management_objective
ALTER COLUMN weighted_rank TYPE DECIMAL(4,2);

UPDATE wfprev.fuel_management_objective
SET weighted_rank = 0.39
WHERE objective_label = 'PSTA Class Greater than 7';

UPDATE wfprev.fuel_management_objective
SET weighted_rank = 0.3
WHERE objective_label = 'Part of Larger Risk Reduction Strategy';

UPDATE wfprev.fuel_management_objective
SET weighted_rank = 0.2
WHERE objective_label = 'Cost Effectiveness';

UPDATE wfprev.fuel_management_objective
SET weighted_rank = 0.1
WHERE objective_label = 'WUI WRR Plans with AOI that expands outside of the WUI';
47 changes: 47 additions & 0 deletions postman/Prevention.postman_collection.json
Original file line number Diff line number Diff line change
Expand Up @@ -2144,6 +2144,53 @@
},
"response": []
},
{
"name": "GET Fuel Management Objective Codes",
"event": [
{
"listen": "test",
"script": {
"exec": [
"pm.test(\"Status code is 200\", function() {",
" pm.response.to.have.status(200);",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{accessToken}}",
"type": "string"
}
]
},
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{LOCAL_API_URL}}/codes/fuleManagementObjectiveCodes",
"host": [
"{{LOCAL_API_URL}}"
],
"path": [
"codes",
"fuleManagementObjectiveCodes"
]
}
},
"response": []
},
{
"name": "GET WUI Risk Class Codes",
"event": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ private CodeTables() {}
public static final String SILVICULTURE_TECHNIQUE_CODE = "silvicultureTechniqueCodes";
public static final String PROPOSAL_TYPE_CODE = "proposalTypeCodes";
public static final String WUI_RISK_CLASS_CODE = "wuiRiskClassCodes";
public static final String FUEL_MANAGEMENT_OBJECTIVE_CODE = "fuelManagementObjectiveCodes";
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ public ResponseEntity<CollectionModel<?>> getCodes(@PathVariable("codeTable") St
case CodeTables.SILVICULTURE_TECHNIQUE_CODE -> result = codesService.getAllSilvicultureTechniqueCodes();
case CodeTables.PROPOSAL_TYPE_CODE -> result = codesService.getAllProposalTypeCodes();
case CodeTables.WUI_RISK_CLASS_CODE -> result = codesService.getAllWuiRiskClassCodes();
case CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE -> result = codesService.getAllFuelManagementObjectiveCodes();

default -> {
log.error("Invalid code table: {}", codeTable);
Expand Down Expand Up @@ -160,6 +161,7 @@ private CommonModel<?> fetchCodeById(String codeTable, String id) throws Service
case CodeTables.SILVICULTURE_TECHNIQUE_CODE -> codesService.getSilvicultureTechniqueCodeById(id);
case CodeTables.PROPOSAL_TYPE_CODE -> codesService.getProposalTypeCodeById(id);
case CodeTables.WUI_RISK_CLASS_CODE -> codesService.getWuiRiskClassCodeById(id);
case CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE -> codesService.getFuelManagementObjectiveCodeById(id);
default -> null;
};
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package ca.bc.gov.nrs.wfprev.data.assemblers;

import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;

import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.server.mvc.RepresentationModelAssemblerSupport;
import org.springframework.stereotype.Component;

import ca.bc.gov.nrs.wfprev.common.enums.CodeTables;
import ca.bc.gov.nrs.wfprev.controllers.CodesController;
import ca.bc.gov.nrs.wfprev.data.entities.FuelManagementObjectiveCodeEntity;
import ca.bc.gov.nrs.wfprev.data.models.FuelManagementObjectiveCodeModel;

@Component
public class FuelManagementObjectiveCodeResourceAssembler extends RepresentationModelAssemblerSupport<FuelManagementObjectiveCodeEntity, FuelManagementObjectiveCodeModel> {

public FuelManagementObjectiveCodeResourceAssembler() {
super(CodesController.class, FuelManagementObjectiveCodeModel.class);
}

public FuelManagementObjectiveCodeEntity toEntity(FuelManagementObjectiveCodeModel model) {
if (model == null) {
return null;
}

FuelManagementObjectiveCodeEntity entity = new FuelManagementObjectiveCodeEntity();
entity.setFuelManagementObjectiveGuid(model.getFuelManagementObjectiveGuid());
entity.setFuelManagementObjectiveTypeCode(model.getFuelManagementObjectiveTypeCode());
entity.setObjectiveLabel(model.getObjectiveLabel());
entity.setWeightedRank(model.getWeightedRank());
return entity;
}

@Override
public FuelManagementObjectiveCodeModel toModel(FuelManagementObjectiveCodeEntity entity) {
FuelManagementObjectiveCodeModel model = instantiateModel(entity);

model.add(linkTo(
methodOn(CodesController.class)
.getCodeById(CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE, entity.getFuelManagementObjectiveGuid()))
.withSelfRel());

model.setFuelManagementObjectiveGuid(entity.getFuelManagementObjectiveGuid());
model.setFuelManagementObjectiveTypeCode(entity.getFuelManagementObjectiveTypeCode());
model.setObjectiveLabel(entity.getObjectiveLabel());
model.setWeightedRank(entity.getWeightedRank());

return model;
}

@Override
public CollectionModel<FuelManagementObjectiveCodeModel> toCollectionModel(Iterable<? extends FuelManagementObjectiveCodeEntity> entities) {
CollectionModel<FuelManagementObjectiveCodeModel> resources = super.toCollectionModel(entities);

resources.add(linkTo(methodOn(CodesController.class).getCodes(CodeTables.FUEL_MANAGEMENT_OBJECTIVE_CODE)).withSelfRel());

return resources;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package ca.bc.gov.nrs.wfprev.data.entities;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "fuel_management_objective")
@JsonIgnoreProperties(ignoreUnknown = false)
@Data
@EqualsAndHashCode(callSuper = false)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FuelManagementObjectiveCodeEntity implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name = "fuel_management_objective_guid", nullable = false)
@NotNull
private String fuelManagementObjectiveGuid;

@Column(name = "fuel_mgmt_obj_type_code", length = 10)
private String fuelManagementObjectiveTypeCode;

@Column(name = "objective_label", length = 300)
private String objectiveLabel;

@Column(name = "weighted_rank")
private BigDecimal weightedRank;

@LastModifiedBy
@NotNull
@Column(name="update_user", length = 64)
private String updateUser;

@LastModifiedDate
@NotNull
@Column(name="update_date")
private Date updateDate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package ca.bc.gov.nrs.wfprev.data.models;

import java.math.BigDecimal;

import org.springframework.hateoas.server.core.Relation;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonRootName;

import ca.bc.gov.nrs.wfprev.common.entities.CommonModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@Data
@EqualsAndHashCode(callSuper = false)
@JsonRootName(value = "fuelManagementObjectiveCode")
@Relation(collectionRelation = "fuelManagementObjectiveCode")
@JsonInclude(Include.NON_NULL)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FuelManagementObjectiveCodeModel extends CommonModel<FuelManagementObjectiveCodeModel> {
private String fuelManagementObjectiveGuid;
private String fuelManagementObjectiveTypeCode;
private String objectiveLabel;
private BigDecimal weightedRank;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ca.bc.gov.nrs.wfprev.data.repositories;

import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import ca.bc.gov.nrs.wfprev.common.repository.CommonRepository;
import ca.bc.gov.nrs.wfprev.data.entities.FuelManagementObjectiveCodeEntity;

import java.util.UUID;

@RepositoryRestResource(exported = false)
public interface FuelManagementObjectiveCodeRepository extends CommonRepository<FuelManagementObjectiveCodeEntity, UUID> {}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ public class CodesService implements CommonService {
private final ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler;
private final WUIRiskClassCodeRepository wuiRiskClassCodeRepository;
private final WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler;
private final FuelManagementObjectiveCodeRepository fuelManagementObjectiveCodeRepository;
private final FuelManagementObjectiveCodeResourceAssembler fuelManagementObjectiveCodeResourceAssembler;


public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAreaCodeResourceAssembler forestAreaCodeResourceAssembler,
GeneralScopeCodeRepository generalScopeCodeRepository, GeneralScopeCodeResourceAssembler generalScopeCodeResourceAssembler,
Expand All @@ -80,7 +83,8 @@ public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAre
FundingSourceCodeResourceAssembler fundingSourceCodeResourceAssembler, FundingSourceCodeRepository fundingSourceCodeRepository, SourceObjectNameCodeResourceAssembler sourceObjectNameCodeResourceAssembler, SourceObjectNameCodeRepository sourceObjectNameCodeRepository,
AttachmentContentTypeCodeResourceAssembler attachmentContentTypeCodeResourceAssembler, AttachmentContentTypeCodeRepository attachmentContentTypeCodeRepository, SilvicultureBaseCodeResourceAssembler silvicultureBaseCodeResourceAssembler, SilvicultureBaseCodeRepository silvicultureBaseCodeRepository,
SilvicultureMethodCodeResourceAssembler silvicultureMethodCodeResourceAssembler, SilvicultureMethodCodeRepository silvicultureMethodCodeRepository, SilvicultureTechniqueCodeResourceAssembler silvicultureTechniqueCodeResourceAssembler, SilvicultureTechniqueCodeRepository silvicultureTechniqueCodeRepository,
ProposalTypeCodeRepository proposalTypeCodeRepository, ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler, WUIRiskClassCodeRepository wuiRiskClassCodeRepository, WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler) {
ProposalTypeCodeRepository proposalTypeCodeRepository, ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler, WUIRiskClassCodeRepository wuiRiskClassCodeRepository, WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler,
FuelManagementObjectiveCodeRepository fuelManagementObjectiveCodeRepository, FuelManagementObjectiveCodeResourceAssembler fuelManagementObjectiveCodeResourceAssembler) {
this.forestAreaCodeRepository = forestAreaCodeRepository;
this.forestAreaCodeResourceAssembler = forestAreaCodeResourceAssembler;
this.generalScopeCodeRepository = generalScopeCodeRepository;
Expand Down Expand Up @@ -127,6 +131,8 @@ public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAre
this.proposalTypeCodeRepository = proposalTypeCodeRepository;
this.wuiRiskClassCodeResourceAssembler = wuiRiskClassCodeResourceAssembler;
this.wuiRiskClassCodeRepository = wuiRiskClassCodeRepository;
this.fuelManagementObjectiveCodeResourceAssembler = fuelManagementObjectiveCodeResourceAssembler;
this.fuelManagementObjectiveCodeRepository = fuelManagementObjectiveCodeRepository;
}

/**
Expand Down Expand Up @@ -575,4 +581,24 @@ public WUIRiskClassCodeModel getWuiRiskClassCodeById(String id) throws ServiceEx
}
}

public CollectionModel<FuelManagementObjectiveCodeModel> getAllFuelManagementObjectiveCodes() throws ServiceException {
try {
List<FuelManagementObjectiveCodeEntity> entities = fuelManagementObjectiveCodeRepository.findAll();
return fuelManagementObjectiveCodeResourceAssembler.toCollectionModel(entities);
} catch (Exception e) {
throw new ServiceException(e.getLocalizedMessage(), e);
}
}

public FuelManagementObjectiveCodeModel getFuelManagementObjectiveCodeById(String id) throws ServiceException {
try {
return fuelManagementObjectiveCodeRepository.findById(UUID.fromString(id))
.map(fuelManagementObjectiveCodeResourceAssembler::toModel)
.orElse(null);
} catch (Exception e) {
throw new ServiceException(e.getLocalizedMessage(), e);
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -1350,5 +1350,20 @@
"allDeclaredConstructors": true,
"allDeclaredMethods": true,
"allDeclaredFields": true
},
{
"name": "ca.bc.gov.nrs.wfprev.data.entities.FuelManagementObjectiveCodeModel",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredFields": true,
"allPublicFields": true
},
{
"name": "ca.bc.gov.nrs.wfprev.data.models.FuelManagementObjectiveCodeModel",
"allDeclaredConstructors": true,
"allDeclaredMethods": true,
"allDeclaredFields": true
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
{ "name": "ca.bc.gov.nrs.wfprev.data.models.SilvicultureTechniqueCodeModel" },
{ "name": "ca.bc.gov.nrs.wfprev.data.models.FileAttachmentModel" },
{ "name": "ca.bc.gov.nrs.wfprev.data.models.WUIRiskClassCodeModel" },
{ "name": "ca.bc.gov.nrs.wfprev.data.models.FuelManagementObjectiveCodeModel" },

{ "name": "ca.bc.gov.nrs.wfprev.data.entities.ForestAreaCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.GeneralScopeCodeEntity" },
Expand All @@ -37,9 +38,10 @@
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SourceObjectNameCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.AttachmentContentTypeCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureBaseCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureBaseCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureBaseCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureTechniqueCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureMethodCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.WUIRiskClassCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.FuelManagementObjectiveCodeEntity" },
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.FileAttachmentEntity" },
{ "name": "org.springframework.hateoas.RepresentationModel"},
{ "name": "org.springframework.hateoas.Link"},
Expand Down
Loading
Loading