Skip to content

Commit 52c07ef

Browse files
authored
WFPREV-556 WUI Risk Class Code (#792)
1 parent d7db742 commit 52c07ef

File tree

12 files changed

+378
-5
lines changed

12 files changed

+378
-5
lines changed

postman/Prevention.postman_collection.json

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2143,8 +2143,54 @@
21432143
}
21442144
},
21452145
"response": []
2146+
},
2147+
{
2148+
"name": "GET WUI Risk Class 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/wuiRiskClassCodes",
2183+
"host": [
2184+
"{{LOCAL_API_URL}}"
2185+
],
2186+
"path": [
2187+
"codes",
2188+
"wuiRiskClassCodes"
2189+
]
2190+
}
21462191
},
2147-
2192+
"response": []
2193+
},
21482194
{
21492195
"name": "Get Project Fiscal",
21502196
"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
@@ -25,4 +25,5 @@ private CodeTables() {}
2525
public static final String SILVICULTURE_METHOD_CODE = "silvicultureMethodCodes";
2626
public static final String SILVICULTURE_TECHNIQUE_CODE = "silvicultureTechniqueCodes";
2727
public static final String PROPOSAL_TYPE_CODE = "proposalTypeCodes";
28+
public static final String WUI_RISK_CLASS_CODE = "wuiRiskClassCodes";
2829
}

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
@@ -69,6 +69,7 @@ public ResponseEntity<CollectionModel<?>> getCodes(@PathVariable("codeTable") St
6969
case CodeTables.SILVICULTURE_METHOD_CODE -> result = codesService.getAllSilvicultureMethodCodes();
7070
case CodeTables.SILVICULTURE_TECHNIQUE_CODE -> result = codesService.getAllSilvicultureTechniqueCodes();
7171
case CodeTables.PROPOSAL_TYPE_CODE -> result = codesService.getAllProposalTypeCodes();
72+
case CodeTables.WUI_RISK_CLASS_CODE -> result = codesService.getAllWuiRiskClassCodes();
7273

7374
default -> {
7475
log.error("Invalid code table: {}", codeTable);
@@ -158,6 +159,7 @@ private CommonModel<?> fetchCodeById(String codeTable, String id) throws Service
158159
case CodeTables.SILVICULTURE_METHOD_CODE -> codesService.getSilvicultureMethodCodeById(id);
159160
case CodeTables.SILVICULTURE_TECHNIQUE_CODE -> codesService.getSilvicultureTechniqueCodeById(id);
160161
case CodeTables.PROPOSAL_TYPE_CODE -> codesService.getProposalTypeCodeById(id);
162+
case CodeTables.WUI_RISK_CLASS_CODE -> codesService.getWuiRiskClassCodeById(id);
161163
default -> null;
162164
};
163165
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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.WUIRiskClassCodeEntity;
13+
import ca.bc.gov.nrs.wfprev.data.models.WUIRiskClassCodeModel;
14+
15+
@Component
16+
public class WUIRiskClassCodeResourceAssembler extends RepresentationModelAssemblerSupport<WUIRiskClassCodeEntity, WUIRiskClassCodeModel> {
17+
18+
public WUIRiskClassCodeResourceAssembler() {
19+
super(CodesController.class, WUIRiskClassCodeModel.class);
20+
}
21+
22+
public WUIRiskClassCodeEntity toEntity(WUIRiskClassCodeModel model) {
23+
if(model == null) {
24+
return null;
25+
}
26+
WUIRiskClassCodeEntity entity = new WUIRiskClassCodeEntity();
27+
28+
entity.setWuiRiskClassCode(model.getWuiRiskClassCode());
29+
entity.setDescription(model.getDescription());
30+
entity.setDisplayOrder(model.getDisplayOrder());
31+
entity.setEffectiveDate(model.getEffectiveDate());
32+
entity.setExpiryDate(model.getExpiryDate());
33+
entity.setRevisionCount(model.getRevisionCount());
34+
entity.setCreateUser(model.getCreateUser());
35+
entity.setCreateDate(model.getCreateDate());
36+
entity.setUpdateUser(model.getUpdateUser());
37+
entity.setUpdateDate(model.getUpdateDate());
38+
39+
return entity;
40+
}
41+
42+
@Override
43+
public WUIRiskClassCodeModel toModel(WUIRiskClassCodeEntity entity) {
44+
WUIRiskClassCodeModel model = instantiateModel(entity);
45+
46+
model.add(linkTo(
47+
methodOn(CodesController.class)
48+
.getCodeById(CodeTables.WUI_RISK_CLASS_CODE, entity.getWuiRiskClassCode()))
49+
.withSelfRel());
50+
51+
model.setWuiRiskClassCode(entity.getWuiRiskClassCode());
52+
model.setDescription(entity.getDescription());
53+
model.setDisplayOrder(entity.getDisplayOrder());
54+
model.setEffectiveDate(entity.getEffectiveDate());
55+
model.setExpiryDate(entity.getExpiryDate());
56+
model.setRevisionCount(entity.getRevisionCount());
57+
model.setCreateUser(entity.getCreateUser());
58+
model.setCreateDate(entity.getCreateDate());
59+
model.setUpdateUser(entity.getUpdateUser());
60+
model.setUpdateDate(entity.getUpdateDate());
61+
62+
return model;
63+
}
64+
65+
@Override
66+
public CollectionModel<WUIRiskClassCodeModel> toCollectionModel(Iterable<? extends WUIRiskClassCodeEntity> entities)
67+
{
68+
CollectionModel<WUIRiskClassCodeModel> resources = super.toCollectionModel(entities);
69+
70+
resources.add(linkTo(methodOn(CodesController.class).getCodes(CodeTables.WUI_RISK_CLASS_CODE)).withSelfRel());
71+
72+
return resources;
73+
}
74+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package ca.bc.gov.nrs.wfprev.data.entities;
2+
3+
import java.io.Serializable;
4+
5+
import java.util.Date;
6+
import org.springframework.data.annotation.CreatedBy;
7+
import org.springframework.data.annotation.CreatedDate;
8+
import org.springframework.data.annotation.LastModifiedBy;
9+
import org.springframework.data.annotation.LastModifiedDate;
10+
11+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
12+
13+
import jakarta.persistence.Id;
14+
import jakarta.persistence.Column;
15+
import jakarta.persistence.Entity;
16+
import jakarta.persistence.Table;
17+
import jakarta.persistence.Version;
18+
import jakarta.validation.constraints.NotNull;
19+
import lombok.AllArgsConstructor;
20+
import lombok.Builder;
21+
import lombok.Data;
22+
import lombok.EqualsAndHashCode;
23+
import lombok.NoArgsConstructor;
24+
25+
@Entity
26+
@Table(name = "wui_risk_class_code")
27+
@JsonIgnoreProperties(ignoreUnknown = false)
28+
@Data
29+
@EqualsAndHashCode(callSuper = false)
30+
@Builder
31+
@AllArgsConstructor
32+
@NoArgsConstructor
33+
public class WUIRiskClassCodeEntity implements Serializable {
34+
private static final long serialVersionUID = 1L;
35+
36+
@Id
37+
@Column(name = "wui_risk_class_code")
38+
@NotNull
39+
private String wuiRiskClassCode;
40+
41+
@NotNull
42+
@Column(name = "description", length = 200)
43+
private String description;
44+
45+
@Column(name = "display_order", length = 3)
46+
private Integer displayOrder;
47+
48+
@NotNull
49+
@Column(name = "effective_date")
50+
private Date effectiveDate;
51+
52+
@NotNull
53+
@Column(name = "expiry_date")
54+
private Date expiryDate;
55+
56+
@Column(name = "revision_count", columnDefinition="Decimal(10) default '0'")
57+
@NotNull
58+
@Version
59+
private Integer revisionCount;
60+
61+
@CreatedBy
62+
@NotNull
63+
@Column(name="create_user", length = 64)
64+
private String createUser;
65+
66+
@CreatedDate
67+
@NotNull
68+
@Column(name="create_date")
69+
private Date createDate;
70+
71+
@LastModifiedBy
72+
@NotNull
73+
@Column(name="update_user", length = 64)
74+
private String updateUser;
75+
76+
@LastModifiedDate
77+
@NotNull
78+
@Column(name="update_date")
79+
private Date updateDate;
80+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package ca.bc.gov.nrs.wfprev.data.models;
2+
3+
import java.util.Date;
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 = "wuiRiskClassCode")
21+
@Relation(collectionRelation = "wuiRiskClassCode")
22+
@JsonInclude(Include.NON_NULL)
23+
@Builder
24+
@AllArgsConstructor
25+
@NoArgsConstructor
26+
public class WUIRiskClassCodeModel extends CommonModel<WUIRiskClassCodeModel> {
27+
private String wuiRiskClassCode;
28+
private String description;
29+
private Integer displayOrder;
30+
private Date effectiveDate;
31+
private Date expiryDate;
32+
}
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.WUIRiskClassCodeEntity;
6+
7+
import java.util.UUID;
8+
9+
@RepositoryRestResource(exported = false)
10+
public interface WUIRiskClassCodeRepository extends CommonRepository<WUIRiskClassCodeEntity, UUID> {}

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

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ public class CodesService implements CommonService {
6161
private final SilvicultureMethodCodeRepository silvicultureMethodCodeRepository;
6262
private final SilvicultureTechniqueCodeResourceAssembler silvicultureTechniqueCodeResourceAssembler;
6363
private final SilvicultureTechniqueCodeRepository silvicultureTechniqueCodeRepository;
64-
private ProposalTypeCodeRepository proposalTypeCodeRepository;
65-
private ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler;
64+
private final ProposalTypeCodeRepository proposalTypeCodeRepository;
65+
private final ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler;
66+
private final WUIRiskClassCodeRepository wuiRiskClassCodeRepository;
67+
private final WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler;
6668

6769
public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAreaCodeResourceAssembler forestAreaCodeResourceAssembler,
6870
GeneralScopeCodeRepository generalScopeCodeRepository, GeneralScopeCodeResourceAssembler generalScopeCodeResourceAssembler,
@@ -78,7 +80,7 @@ public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAre
7880
FundingSourceCodeResourceAssembler fundingSourceCodeResourceAssembler, FundingSourceCodeRepository fundingSourceCodeRepository, SourceObjectNameCodeResourceAssembler sourceObjectNameCodeResourceAssembler, SourceObjectNameCodeRepository sourceObjectNameCodeRepository,
7981
AttachmentContentTypeCodeResourceAssembler attachmentContentTypeCodeResourceAssembler, AttachmentContentTypeCodeRepository attachmentContentTypeCodeRepository, SilvicultureBaseCodeResourceAssembler silvicultureBaseCodeResourceAssembler, SilvicultureBaseCodeRepository silvicultureBaseCodeRepository,
8082
SilvicultureMethodCodeResourceAssembler silvicultureMethodCodeResourceAssembler, SilvicultureMethodCodeRepository silvicultureMethodCodeRepository, SilvicultureTechniqueCodeResourceAssembler silvicultureTechniqueCodeResourceAssembler, SilvicultureTechniqueCodeRepository silvicultureTechniqueCodeRepository,
81-
ProposalTypeCodeRepository proposalTypeCodeRepository, ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler) {
83+
ProposalTypeCodeRepository proposalTypeCodeRepository, ProposalTypeCodeResourceAssembler proposalTypeCodeResourceAssembler, WUIRiskClassCodeRepository wuiRiskClassCodeRepository, WUIRiskClassCodeResourceAssembler wuiRiskClassCodeResourceAssembler) {
8284
this.forestAreaCodeRepository = forestAreaCodeRepository;
8385
this.forestAreaCodeResourceAssembler = forestAreaCodeResourceAssembler;
8486
this.generalScopeCodeRepository = generalScopeCodeRepository;
@@ -123,6 +125,8 @@ public CodesService(ForestAreaCodeRepository forestAreaCodeRepository, ForestAre
123125
this.silvicultureTechniqueCodeRepository = silvicultureTechniqueCodeRepository;
124126
this.proposalTypeCodeResourceAssembler = proposalTypeCodeResourceAssembler;
125127
this.proposalTypeCodeRepository = proposalTypeCodeRepository;
128+
this.wuiRiskClassCodeResourceAssembler = wuiRiskClassCodeResourceAssembler;
129+
this.wuiRiskClassCodeRepository = wuiRiskClassCodeRepository;
126130
}
127131

128132
/**
@@ -554,4 +558,21 @@ public ProposalTypeCodeModel getProposalTypeCodeById(String id) throws ServiceEx
554558
}
555559
}
556560

561+
public CollectionModel<WUIRiskClassCodeModel> getAllWuiRiskClassCodes() throws ServiceException {
562+
try {
563+
List<WUIRiskClassCodeEntity> entities = wuiRiskClassCodeRepository.findAll();
564+
return wuiRiskClassCodeResourceAssembler.toCollectionModel(entities);
565+
} catch (Exception e) {
566+
throw new ServiceException(e.getLocalizedMessage(), e);
567+
}
568+
}
569+
570+
public WUIRiskClassCodeModel getWuiRiskClassCodeById(String id) throws ServiceException {
571+
try {
572+
return wuiRiskClassCodeRepository.findById(UUID.fromString(id)).map(wuiRiskClassCodeResourceAssembler::toModel).orElse(null);
573+
} catch (Exception e) {
574+
throw new ServiceException(e.getLocalizedMessage(), e);
575+
}
576+
}
577+
557578
}

server/wfprev-api/src/main/resources/native-image/reflection-config.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,5 +1335,20 @@
13351335
"allDeclaredConstructors": true,
13361336
"allDeclaredMethods": true,
13371337
"allDeclaredFields": true
1338+
},
1339+
{
1340+
"name": "ca.bc.gov.nrs.wfprev.data.entities.WUIRiskClassCodeEntity",
1341+
"allDeclaredConstructors": true,
1342+
"allPublicConstructors": true,
1343+
"allDeclaredMethods": true,
1344+
"allPublicMethods": true,
1345+
"allDeclaredFields": true,
1346+
"allPublicFields": true
1347+
},
1348+
{
1349+
"name": "ca.bc.gov.nrs.wfprev.data.models.WUIRiskClassCodeModel",
1350+
"allDeclaredConstructors": true,
1351+
"allDeclaredMethods": true,
1352+
"allDeclaredFields": true
13381353
}
13391354
]

server/wfprev-api/src/main/resources/native-image/serialization-config.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
{ "name": "ca.bc.gov.nrs.wfprev.data.models.SilvicultureMethodCodeModel" },
2121
{ "name": "ca.bc.gov.nrs.wfprev.data.models.SilvicultureTechniqueCodeModel" },
2222
{ "name": "ca.bc.gov.nrs.wfprev.data.models.FileAttachmentModel" },
23+
{ "name": "ca.bc.gov.nrs.wfprev.data.models.WUIRiskClassCodeModel" },
2324

2425
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.ForestAreaCodeEntity" },
2526
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.GeneralScopeCodeEntity" },
@@ -38,6 +39,7 @@
3839
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureBaseCodeEntity" },
3940
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureBaseCodeEntity" },
4041
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.SilvicultureBaseCodeEntity" },
42+
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.WUIRiskClassCodeEntity" },
4143
{ "name": "ca.bc.gov.nrs.wfprev.data.entities.FileAttachmentEntity" },
4244
{ "name": "org.springframework.hateoas.RepresentationModel"},
4345
{ "name": "org.springframework.hateoas.Link"},

0 commit comments

Comments
 (0)