Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WFPREV-145 - Added sequence to LB for project number and project status code. #352

Merged
merged 9 commits into from
Dec 9, 2024
27 changes: 27 additions & 0 deletions db/main-changelog.json
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,33 @@
{ "sql": "DROP TABLE wfprev.project_type_code" }
]
}
},
{
"changeSet": {
"id": "01_00_02_00",
"author": "agordon",
"tagDatabase": { "tag" : "version_01_00_02_00" },
"changes": [
{
"sqlFile": {
"dbms": "postgresql",
"endDelimiter": ";",
"path": "scripts/01_00_02/00/ddl/sequences/WFPREV.project_number_seq.sql"
}
},
{
"sqlFile": {
"dbms": "postgresql",
"endDelimiter": ";",
"path": "scripts/01_00_02/00/ddl/tables/WFPREV.project_update.sql"
}
}
],
"rollback": [
{ "sql": "ALTER TABLE wfprev.project ALTER COLUMN project_number DROP DEFAULT" },
{ "sql": "DROP SEQUENCE wfprev.project_number_seq" }
]
}
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CREATE SEQUENCE "wfprev"."project_number_seq" INCREMENT BY 1 START WITH 1000 MAXVALUE 9999999999 MINVALUE 1000 NO CYCLE;

GRANT USAGE ON SEQUENCE "wfprev"."project_number_seq" TO PROXY_WF1_PREV_REST;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE "wfprev"."project" ALTER COLUMN "project_number" SET DEFAULT nextval('wfprev.project_number_seq');
2 changes: 2 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
services:
api:
profiles:
- api
build:
context: .
dockerfile: server/wfprev-api/Dockerfile.graalvm
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.Date;
import java.util.UUID;

import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.hateoas.CollectionModel;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand Down Expand Up @@ -113,6 +114,9 @@ public ResponseEntity<ProjectModel> createProject(@RequestBody ProjectModel reso

ProjectModel newResource = projectService.createOrUpdateProject(resource);
response = newResource == null ? badRequest() : created(newResource);
} catch (DataIntegrityViolationException e) {
response = conflict();
log.error(" ### Error while creating resource", e);
} catch(ServiceException e) {
response = internalServerError();
log.error(" ### Error while creating resource", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,23 @@ public ProjectEntity toEntity(ProjectModel resource) {
ProjectEntity entity = new ProjectEntity();

entity.setProjectGuid(UUID.fromString(resource.getProjectGuid()));
entity.setProjectTypeCode(toProjectTypeCodeEntity(resource.getProjectTypeCode()));
entity.setProjectNumber(resource.getProjectNumber());
if (resource.getProjectTypeCode() != null) {
entity.setProjectTypeCode(toProjectTypeCodeEntity(resource.getProjectTypeCode()));
}
// Only set project number if it exists (for updates)
if (resource.getProjectNumber() != null) {
entity.setProjectNumber(resource.getProjectNumber());
}
entity.setSiteUnitName(resource.getSiteUnitName());
entity.setForestAreaCode(toForestAreaCodeEntity(resource.getForestAreaCode()));
entity.setGeneralScopeCode(toGeneralScopeCodeEntity(resource.getGeneralScopeCode()));
entity.setProgramAreaGuid(UUID.fromString(resource.getProgramAreaGuid()));
if (resource.getForestAreaCode() != null) {
entity.setForestAreaCode(toForestAreaCodeEntity(resource.getForestAreaCode()));
}
if (resource.getGeneralScopeCode() != null) {
entity.setGeneralScopeCode(toGeneralScopeCodeEntity(resource.getGeneralScopeCode()));
}
if (resource.getProgramAreaGuid() != null) {
entity.setProgramAreaGuid(UUID.fromString(resource.getProgramAreaGuid()));
}
entity.setForestRegionOrgUnitId(resource.getForestRegionOrgUnitId());
entity.setForestDistrictOrgUnitId(resource.getForestDistrictOrgUnitId());
entity.setFireCentreOrgUnitId(resource.getFireCentreOrgUnitId());
Expand Down Expand Up @@ -79,8 +90,12 @@ public ProjectModel toModel(ProjectEntity entity) {
resource.setProjectTypeCode(toProjectTypeCodeModel(entity.getProjectTypeCode()));
resource.setProjectNumber(entity.getProjectNumber());
resource.setSiteUnitName(entity.getSiteUnitName());
resource.setForestAreaCode(toForestAreaCodeModel(entity.getForestAreaCode()));
resource.setGeneralScopeCode(toGeneralScopeCodeModel(entity.getGeneralScopeCode()));
if (entity.getForestAreaCode() != null) {
resource.setForestAreaCode(toForestAreaCodeModel(entity.getForestAreaCode()));
}
if (entity.getGeneralScopeCode() != null) {
resource.setGeneralScopeCode(toGeneralScopeCodeModel(entity.getGeneralScopeCode()));
}
resource.setProgramAreaGuid(entity.getProgramAreaGuid().toString());
resource.setForestRegionOrgUnitId(entity.getForestRegionOrgUnitId());
resource.setForestDistrictOrgUnitId(entity.getForestDistrictOrgUnitId());
Expand Down Expand Up @@ -125,6 +140,7 @@ private ProjectTypeCodeModel toProjectTypeCodeModel(ProjectTypeCodeEntity code)
}

private ProjectTypeCodeEntity toProjectTypeCodeEntity(ProjectTypeCodeModel code) {
if (code == null) return null;
ProjectTypeCodeResourceAssembler ra = new ProjectTypeCodeResourceAssembler();
return ra.toEntity(code);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package ca.bc.gov.nrs.wfprev.data.assemblers;

import ca.bc.gov.nrs.wfprev.controllers.CodesController;
import ca.bc.gov.nrs.wfprev.data.entities.ProjectStatusCodeEntity;
import ca.bc.gov.nrs.wfprev.data.models.ProjectStatusCodeModel;
import org.springframework.hateoas.server.mvc.RepresentationModelAssemblerSupport;
import org.springframework.stereotype.Component;

@Component
public class ProjectStatusCodeResourceAssembler extends RepresentationModelAssemblerSupport<ProjectStatusCodeEntity, ProjectStatusCodeModel> {
public ProjectStatusCodeResourceAssembler() {
super(CodesController.class, ProjectStatusCodeModel.class);
}

@Override
public ProjectStatusCodeModel toModel(ProjectStatusCodeEntity entity) {
ProjectStatusCodeModel model = instantiateModel(entity);

model.setProjectStatusCode(entity.getProjectStatusCode());
model.setDescription(entity.getDescription());
model.setDisplayOrder(entity.getDisplayOrder());
model.setEffectiveDate(entity.getEffectiveDate());
model.setExpiryDate(entity.getExpiryDate());
model.setDisplayOrder(entity.getDisplayOrder());
model.setCreateDate(entity.getCreateDate());
model.setCreateUser(entity.getCreateUser());
model.setUpdateDate(entity.getUpdateDate());
model.setUpdateUser(entity.getUpdateUser());
model.setRevisionCount(entity.getRevisionCount());

return model;
}

public ProjectStatusCodeEntity toEntity(ProjectStatusCodeModel model) {
if (model == null) {
return null;
}

ProjectStatusCodeEntity entity = new ProjectStatusCodeEntity();

entity.setProjectStatusCode(model.getProjectStatusCode());
entity.setDescription(model.getDescription());
entity.setDisplayOrder(model.getDisplayOrder());
entity.setEffectiveDate(model.getEffectiveDate());
entity.setExpiryDate(model.getExpiryDate());
entity.setCreateDate(model.getCreateDate());
entity.setCreateUser(model.getCreateUser());
entity.setUpdateDate(model.getUpdateDate());
entity.setUpdateUser(model.getUpdateUser());
entity.setRevisionCount(model.getRevisionCount());

return entity;
}
}
Loading
Loading