diff --git a/portal-core/src/main/java/nav/portal/core/entities/OpsMessageEntity.java b/portal-core/src/main/java/nav/portal/core/entities/OpsMessageEntity.java new file mode 100644 index 00000000..7e937882 --- /dev/null +++ b/portal-core/src/main/java/nav/portal/core/entities/OpsMessageEntity.java @@ -0,0 +1,94 @@ +package nav.portal.core.entities; + +import java.util.Objects; +import java.util.UUID; + +public class OpsMessageEntity { + + private UUID id; + private String internalHeader; + private String internalText; + private String externalHeader; + private String externalText; + private boolean isActive; + private boolean onlyShowForNavEmployees; + + public OpsMessageEntity() { + } + + public boolean getOnlyShowForNavEmployees() { + return onlyShowForNavEmployees; + } + + public OpsMessageEntity setOnlyShowForNavEmployees(boolean onlyShowForNavEmployees) { + this.onlyShowForNavEmployees = onlyShowForNavEmployees; + return this; + } + + public boolean getIsActive() { + return isActive; + } + + public OpsMessageEntity setIsActive(boolean active) { + isActive = active; + return this; + } + + public UUID getId() { + return id; + } + + public OpsMessageEntity setId(UUID id) { + this.id = id; + return this; + } + + public String getInternalHeader() { + return internalHeader; + } + + public OpsMessageEntity setInternalHeader(String internalHeader) { + this.internalHeader = internalHeader; + return this; + } + + public String getInternalText() { + return internalText; + } + + public OpsMessageEntity setInternalText(String internalText) { + this.internalText = internalText; + return this; + } + + public String getExternalHeader() { + return externalHeader; + } + + public OpsMessageEntity setExternalHeader(String externalHeader) { + this.externalHeader = externalHeader; + return this; + } + + public String getExternalText() { + return externalText; + } + + public OpsMessageEntity setExternalText(String externalText) { + this.externalText = externalText; + return this; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + OpsMessageEntity that = (OpsMessageEntity) o; + return isActive == that.isActive && onlyShowForNavEmployees == that.onlyShowForNavEmployees && Objects.equals(id, that.id) && Objects.equals(internalHeader, that.internalHeader) && Objects.equals(internalText, that.internalText) && Objects.equals(externalHeader, that.externalHeader) && Objects.equals(externalText, that.externalText); + } + + @Override + public int hashCode() { + return Objects.hash(id, internalHeader, internalText, externalHeader, externalText, isActive, onlyShowForNavEmployees); + } +} diff --git a/portal-core/src/main/java/nav/portal/core/repositories/OpsRepository.java b/portal-core/src/main/java/nav/portal/core/repositories/OpsRepository.java new file mode 100644 index 00000000..ef003c9c --- /dev/null +++ b/portal-core/src/main/java/nav/portal/core/repositories/OpsRepository.java @@ -0,0 +1,88 @@ +package nav.portal.core.repositories; + +import nav.portal.core.entities.OpsMessageEntity; +import nav.portal.core.entities.ServiceEntity; +import nav.portal.core.exceptionHandling.ExceptionUtil; +import org.fluentjdbc.*; + +import java.sql.SQLException; +import java.util.*; + +public class OpsRepository { + + + private final DbContextTable opsMessageTable; + private final DbContextTable opsMessageServiceTable; + private final DbContextTable serviceTable; + + + public OpsRepository(DbContext dbContext) { + opsMessageTable = dbContext.table("ops_message"); + serviceTable = dbContext.table("service"); + opsMessageServiceTable = dbContext.table("ops_message_service"); + } + + public UUID save(OpsMessageEntity entity, List services) { + DatabaseSaveResult result = opsMessageTable.newSaveBuilderWithUUID("id", entity.getId()) + .setField("intern_header", entity.getInternalHeader()) + .setField("intern_text", entity.getInternalText()) + .setField("extern_header", entity.getExternalHeader()) + .setField("extern_text", entity.getExternalText()) + .setField("is_active", entity.getIsActive()) + .setField("only_show_for_nav_employees", entity.getOnlyShowForNavEmployees()) + .execute(); + setServicesOnOpsMessage(result.getId(), services); + return result.getId(); + } + + public void setServicesOnOpsMessage(UUID opsId, List services) { + opsMessageServiceTable.where("ops_message_id", opsId).executeDelete(); + + for(int i = 0; i < services.size(); i++){ + opsMessageServiceTable.insert() + .setField("ops_message_id", opsId) + .setField("service_id", services.get(i)) + .execute(); + } + } + + public Map.Entry> retrieveOne(UUID ops_id) { + DbContextTableAlias ops = opsMessageTable.alias("ops"); + DbContextTableAlias o2s = opsMessageServiceTable.alias("o2s"); + DbContextTableAlias service = serviceTable.alias("service"); + + Map> result = new HashMap<>(); + ops + .where("id" , ops_id) + .leftJoin(ops.column("id"), o2s.column("ops_message_id")) + .leftJoin(o2s.column("service_id"), service.column("id")) + .list(row -> { + List serviceList = result + .computeIfAbsent(toOps(row.table(ops)), ignored -> new ArrayList<>()); + + DatabaseRow serivceRow = row.table(service); + Optional.ofNullable(row.getUUID("service_id")) + .ifPresent(serviceId -> serviceList.add(ServiceRepository.toService(serivceRow))); + return null; + }); + return result + .entrySet() + .stream().findFirst() + .orElseThrow(() -> new IllegalArgumentException("Not found: OpsMessage with id " + ops_id)); + } + + static OpsMessageEntity toOps(DatabaseRow row){ + try { + return new OpsMessageEntity() + .setId(row.getUUID("id")) + .setInternalHeader(row.getString("intern_header")) + .setInternalText(row.getString("intern_text")) + .setExternalHeader(row.getString("extern_header")) + .setExternalText(row.getString("extern_text")) + .setIsActive(row.getBoolean("is_active")) + .setOnlyShowForNavEmployees(row.getBoolean("only_show_for_nav_employees")); + } catch (SQLException e) { + throw ExceptionUtil.soften(e); + } + } +} diff --git a/portal-core/src/main/resources/db/migration/V011__add_ops_message.sql b/portal-core/src/main/resources/db/migration/V011__add_ops_message.sql index 1b41021c..dc3f4fa5 100644 --- a/portal-core/src/main/resources/db/migration/V011__add_ops_message.sql +++ b/portal-core/src/main/resources/db/migration/V011__add_ops_message.sql @@ -3,10 +3,10 @@ CREATE TABLE ops_message id UUID NOT NULL, intern_header VARCHAR(100) NOT NULL, intern_text VARCHAR(100) NOT NULL, - extern_header VARCHAR(100) NOT NULL, - extern_text VARCHAR(100) NOT NULL, - isActive boolean NOT NULL, - onlyShowForNavEmployees boolean NOT NULL, + extern_header VARCHAR(100) NULL, + extern_text VARCHAR(100) NULL, + is_active boolean NOT NULL, + only_show_for_nav_employees boolean NOT NULL, created_at timestamp with time zone NOT NULL DEFAULT NOW(), updated_at timestamp with time zone NULL, PRIMARY KEY (id) diff --git a/portal-core/src/test/java/nav/portal/core/repositories/SampleData.java b/portal-core/src/test/java/nav/portal/core/repositories/SampleData.java index 96d1c301..1105a7b4 100644 --- a/portal-core/src/test/java/nav/portal/core/repositories/SampleData.java +++ b/portal-core/src/test/java/nav/portal/core/repositories/SampleData.java @@ -5,6 +5,7 @@ import nav.portal.core.enums.ServiceType; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.ZonedDateTime; import java.util.*; import java.util.stream.Collectors; @@ -29,10 +30,6 @@ public class SampleData { static final ArrayList icons = new ArrayList<>(Arrays.asList("0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010", "0011", "0012")); static final ArrayList firstNames = new ArrayList<>(Arrays.asList("Arne", "Bodil", "Gudrun", "Kjell Åge", "Hufsa", "Elg", "Rake", "Æskild", "Øygunn")); - static final ArrayList lastNames = new ArrayList<>(Arrays.asList("Tacokrydder", "Plaskelaksen", "Grompesen", "Hamsterhjul")); - static final ArrayList emails = new ArrayList<>(Arrays.asList("tacokrydder@elgeforeningen.no", "plaskelaksen@laksegård.com", "epostkongen@hemmelig.no", "usbstick@feilinnsatt.no")); - static final ArrayList phoneNumbers = new ArrayList<>(Arrays.asList("01020304", "13371337", "69691337", "42069117")); - public static String getRandomizedDashboardName() { return getRandomFromArray(dashboardNames); @@ -45,6 +42,13 @@ public static AreaEntity getRandomizedAreaEntity() { .setIcon(getRandomFromArray(icons)); } + public static OpsMessageEntity getRandomOpsMessageEntity() { + return new OpsMessageEntity() + .setInternalHeader(getRandomFromArray(firstNames)) + .setInternalText(getRandomFromArray(areaNames)) + .setOnlyShowForNavEmployees(true) + .setIsActive(true); + } public static AreaEntity getRandomizedAreaEntityWithNameNotInList(List areas) { List usedNames = areas.stream().map(AreaEntity::getName).collect(Collectors.toList()); @@ -116,15 +120,6 @@ public static List getNonEmptyListOfSubAreaEntity(int length) { return subAreas; } - public static CitizenUserEntity getRandomizedCitizenEntity() { - return new CitizenUserEntity() - .setFirstName(getRandomFromArray(firstNames)) - .setLastName(getRandomFromArray(lastNames)) - .setEmail(getRandomFromArray(emails)) - .setPhoneNumber(getRandomFromArray(phoneNumbers)); - } - - public static ServiceEntity getRandomizedServiceEntity() { return new ServiceEntity() .setName(getRandomFromArray(serviceNames)) diff --git a/portal-core/src/test/java/nav/portal/core/repositories/TestUtil.java b/portal-core/src/test/java/nav/portal/core/repositories/TestUtil.java index 1500ebc5..3dbd0325 100644 --- a/portal-core/src/test/java/nav/portal/core/repositories/TestUtil.java +++ b/portal-core/src/test/java/nav/portal/core/repositories/TestUtil.java @@ -44,6 +44,7 @@ public static void clearAllTableData(DbContext dbContext){ DbContextTable dashboardTable = dbContext.table("dashboard"); dashboardTable.whereExpression("id is NOT null").executeDelete(); + } diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/EntityDtoMappers.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/EntityDtoMappers.java index 82624e8d..4e73ef51 100644 --- a/portal-rest-api/src/main/java/no/nav/portal/rest/api/EntityDtoMappers.java +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/EntityDtoMappers.java @@ -52,6 +52,36 @@ public static ServiceDto toServiceDtoShallow(ServiceEntity entity){ return dto; } + public static OPSmessageDto toOpsMessageDtoShallow(OpsMessageEntity entity) { + OPSmessageDto dto = new OPSmessageDto(); + dto.setId(entity.getId()); + dto.setInternalHeader(entity.getInternalHeader()); + dto.setInternalMessage(entity.getInternalText()); + dto.setExternalHeader(entity.getExternalHeader()); + dto.setExternalMessage(entity.getExternalText()); + dto.setIsActive(entity.getIsActive()); + dto.setOnlyShowForNavEmployees(entity.getOnlyShowForNavEmployees()); + return dto; + } + + public static OPSmessageDto toOpsMessageDtoDeep(OpsMessageEntity entity, List services) { + OPSmessageDto dto = toOpsMessageDtoShallow(entity); + dto.setAffectedServices(services); + return dto; + } + + public static OpsMessageEntity toOpsMessageEntity(OPSmessageDto opsMessageDto) { + OpsMessageEntity opsMessageEntity = new OpsMessageEntity(); + opsMessageEntity.setId(opsMessageDto.getId()); + opsMessageEntity.setExternalHeader(opsMessageDto.getExternalHeader()); + opsMessageEntity.setExternalText(opsMessageDto.getExternalMessage()); + opsMessageEntity.setInternalHeader(opsMessageDto.getInternalHeader()); + opsMessageEntity.setInternalText(opsMessageDto.getInternalMessage()); + opsMessageEntity.setIsActive(opsMessageDto.getIsActive()); + opsMessageEntity.setOnlyShowForNavEmployees(opsMessageDto.getOnlyShowForNavEmployees()); + return opsMessageEntity; + } + public static ServiceDto toServiceDtoDeep(ServiceEntity service ,List dependencies){ Map> map = new HashMap<>(); map.put(service,dependencies); diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/AreaRepositoryHelper.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/AreaControllerHelper.java similarity index 94% rename from portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/AreaRepositoryHelper.java rename to portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/AreaControllerHelper.java index 9737d7d8..1c005004 100644 --- a/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/AreaRepositoryHelper.java +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/AreaControllerHelper.java @@ -1,9 +1,7 @@ package no.nav.portal.rest.api.Helpers; import nav.portal.core.entities.AreaEntity; -import nav.portal.core.entities.AreaWithServices; import nav.portal.core.entities.ServiceEntity; -import nav.portal.core.entities.SubAreaEntity; import nav.portal.core.repositories.AreaRepository; import nav.portal.core.repositories.DashboardRepository; import nav.portal.core.repositories.RecordRepository; @@ -20,14 +18,14 @@ import java.util.UUID; import java.util.stream.Collectors; -public class AreaRepositoryHelper { +public class AreaControllerHelper { private final AreaRepository areaRepository; private final DashboardRepository dashboardRepository; private final ServiceRepository serviceRepository; private final RecordRepository recordRepository; - public AreaRepositoryHelper(DbContext dbContext) { + public AreaControllerHelper(DbContext dbContext) { this.areaRepository = new AreaRepository(dbContext); this.dashboardRepository = new DashboardRepository(dbContext); this.serviceRepository = new ServiceRepository(dbContext); diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/DashboardRepositoryHelper.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/DashboardControllerHelper.java similarity index 97% rename from portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/DashboardRepositoryHelper.java rename to portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/DashboardControllerHelper.java index 87496b38..f6725ef9 100644 --- a/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/DashboardRepositoryHelper.java +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/DashboardControllerHelper.java @@ -14,7 +14,7 @@ import java.util.UUID; import java.util.stream.Collectors; -public class DashboardRepositoryHelper { +public class DashboardControllerHelper { private final DashboardRepository dashboardRepository; private final RecordRepository recordRepository; @@ -22,7 +22,7 @@ public class DashboardRepositoryHelper { private final SubAreaRepository subAreaRepository; - public DashboardRepositoryHelper(DbContext dbContext) { + public DashboardControllerHelper(DbContext dbContext) { this.dashboardRepository = new DashboardRepository(dbContext); this.recordRepository = new RecordRepository(dbContext); this.areaRepository = new AreaRepository(dbContext); diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/OpsControllerHelper.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/OpsControllerHelper.java new file mode 100644 index 00000000..8f14f565 --- /dev/null +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/OpsControllerHelper.java @@ -0,0 +1,34 @@ +package no.nav.portal.rest.api.Helpers; + +import nav.portal.core.entities.AreaEntity; +import nav.portal.core.entities.OpsMessageEntity; +import nav.portal.core.entities.ServiceEntity; +import nav.portal.core.entities.SubAreaEntity; +import nav.portal.core.repositories.*; +import no.nav.portal.rest.api.EntityDtoMappers; +import no.portal.web.generated.api.AreaDto; +import no.portal.web.generated.api.OPSmessageDto; +import no.portal.web.generated.api.SubAreaDto; +import org.fluentjdbc.DatabaseRow; +import org.fluentjdbc.DbContext; +import org.fluentjdbc.DbContextTableAlias; + +import java.util.*; +import java.util.stream.Collectors; + +public class OpsControllerHelper { + private final OpsRepository opsRepository; + + public OpsControllerHelper(DbContext dbContext) { + this.opsRepository = new OpsRepository(dbContext); + } + + + + + public OPSmessageDto newOps(OPSmessageDto opsMessageDto){ + UUID uuid = opsRepository.save(EntityDtoMappers.toOpsMessageEntity(opsMessageDto), opsMessageDto.getAffectedServices()); + Map.Entry> ops = opsRepository.retrieveOne(uuid); + return EntityDtoMappers.toOpsMessageDtoDeep(ops.getKey(), ops.getValue().stream().map(ServiceEntity::getId).collect(Collectors.toList())); + } +} diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/ServiceRepositoryHelper.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/ServiceControllerHelper.java similarity index 96% rename from portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/ServiceRepositoryHelper.java rename to portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/ServiceControllerHelper.java index 5fa1bd20..c21a4bc9 100644 --- a/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/ServiceRepositoryHelper.java +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/ServiceControllerHelper.java @@ -14,12 +14,12 @@ import java.util.*; import java.util.stream.Collectors; -public class ServiceRepositoryHelper { +public class ServiceControllerHelper { ServiceRepository serviceRepository; RecordRepository recordRepository; AreaRepository areaRepository; - public ServiceRepositoryHelper(DbContext context){ + public ServiceControllerHelper(DbContext context){ this.areaRepository = new AreaRepository(context); this.serviceRepository = new ServiceRepository(context); this.recordRepository = new RecordRepository(context); @@ -93,7 +93,7 @@ private static List mapToOpeningHoursEntity(ServiceOpeningHo } return serviceOpeningHoursDto.getDailyOpeningHours() .stream() - .map(ServiceRepositoryHelper::mapOneDayToOpeningHoursEntity) + .map(ServiceControllerHelper::mapOneDayToOpeningHoursEntity) .collect(Collectors.toList()); } @@ -152,12 +152,6 @@ public MaintenanceDto setMaintenance(MaintenanceDto maintenanceDto) { return maintenanceDto; } - public OPSmessageDto addOPSmessega(OPSmessageDto opsMessageDto) { - return opsMessageDto; - } - - - public ServiceHistoryDto getServiceHistoryForTwelveMonths(UUID serviceID, int number_of_months) { return mapToHistoryDto(recordRepository.getServiceHistoryForNumberOfMonths(serviceID, number_of_months)); } @@ -188,7 +182,7 @@ static ServiceHistoryMonthEntryDto mapToHistoryMonthDto(List getAllAreas() { - return areaRepositoryHelper.getAllAreas(); + return areaControllerHelper.getAllAreas(); } @POST("/Areas") @JsonBody public UUID newArea(@JsonBody AreaDto areaDto) { - UUID uuid = areaRepositoryHelper.newArea(areaDto).getId(); + UUID uuid = areaControllerHelper.newArea(areaDto).getId(); areaRepository.setServicesOnArea(uuid, areaDto.getServices().stream().map( ServiceDto::getId).collect(Collectors.toList())); @@ -49,7 +49,7 @@ public UUID newArea(@JsonBody AreaDto areaDto) { @PUT("/Area/:Area_id") @JsonBody public void updateArea(@PathParam("Area_id") UUID area_id, @JsonBody AreaDto areaDto ) { - areaRepositoryHelper.updateArea(area_id, areaDto); + areaControllerHelper.updateArea(area_id, areaDto); } @DELETE("/Area/:Area_id") @@ -64,7 +64,7 @@ public void deleteArea(@PathParam("Area_id") UUID area_id ) { @GET("/Areas/:Dashboard_id") @JsonBody public List getAreas(@PathParam("Dashboard_id") UUID dashboard_id) { - return areaRepositoryHelper.getAreasOnDashboard(dashboard_id); + return areaControllerHelper.getAreasOnDashboard(dashboard_id); } @PUT("/Area/:Area_id/:Service_id") @@ -90,7 +90,7 @@ public List getAllSubAreas() { @POST("/SubArea") @JsonBody public UUID newSubArea(@JsonBody SubAreaDto subAreaDto) { - UUID uuid = subAreaRepositoryHelper.newSubArea(subAreaDto).getId(); + UUID uuid = subAreaControllerHelper.newSubArea(subAreaDto).getId(); subAreaRepository.setServicesOnSubArea(uuid, subAreaDto.getServices().stream().map( ServiceDto::getId).collect(Collectors.toList())); diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/DashboardController.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/DashboardController.java index 89659e9d..408ae9e2 100644 --- a/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/DashboardController.java +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/DashboardController.java @@ -3,8 +3,8 @@ import nav.portal.core.repositories.DashboardRepository; import nav.portal.core.util.UuidListBody; import no.nav.portal.rest.api.EntityDtoMappers; -import no.nav.portal.rest.api.Helpers.AreaRepositoryHelper; -import no.nav.portal.rest.api.Helpers.DashboardRepositoryHelper; +import no.nav.portal.rest.api.Helpers.AreaControllerHelper; +import no.nav.portal.rest.api.Helpers.DashboardControllerHelper; import no.portal.web.generated.api.AreaDto; import no.portal.web.generated.api.DashboardDto; @@ -20,14 +20,14 @@ public class DashboardController { private final DashboardRepository dashboardRepository; - private final DashboardRepositoryHelper dashboardRepositoryHelper; - private AreaRepositoryHelper areaRepositoryHelper; + private final DashboardControllerHelper dashboardControllerHelper; + private AreaControllerHelper areaControllerHelper; public DashboardController(DbContext dbContext) { this.dashboardRepository = new DashboardRepository(dbContext); - this.dashboardRepositoryHelper = new DashboardRepositoryHelper(dbContext); - this.areaRepositoryHelper = new AreaRepositoryHelper(dbContext); + this.dashboardControllerHelper = new DashboardControllerHelper(dbContext); + this.areaControllerHelper = new AreaControllerHelper(dbContext); } @GET("/Dashboards") @@ -49,7 +49,7 @@ public UUID postDashboard(@JsonBody DashboardDto dashboardDto) { @DELETE("/Dashboard/:Dashboard_id") @JsonBody public void deleteDashboard(@PathParam("Dashboard_id") UUID dashboard_id) { - dashboardRepositoryHelper.deleteDashboard(dashboard_id); + dashboardControllerHelper.deleteDashboard(dashboard_id); } @@ -66,7 +66,7 @@ public void updateNameOfDashboard(@PathParam("Dashboard_id") UUID dashboard_id, @GET("/Dashboard/:Dashboard_id") @JsonBody public DashboardDto getAreas(@PathParam("Dashboard_id") UUID dashboard_id) { - return dashboardRepositoryHelper.getDashboard(dashboard_id); + return dashboardControllerHelper.getDashboard(dashboard_id); } diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/OPSmessegeAndMaintenanceController.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/OPSmessegeAndMaintenanceController.java deleted file mode 100644 index f3d0b627..00000000 --- a/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/OPSmessegeAndMaintenanceController.java +++ /dev/null @@ -1,34 +0,0 @@ -package no.nav.portal.rest.api.v3.controllers; - -import no.nav.portal.rest.api.Helpers.ServiceRepositoryHelper; -import no.portal.web.generated.api.MaintenanceDto; -import no.portal.web.generated.api.OPSmessageDto; -import org.actioncontroller.POST; -import org.actioncontroller.json.JsonBody; -import org.fluentjdbc.DbContext; - -public class OPSmessegeAndMaintenanceController { - - - private ServiceRepositoryHelper serviceRepositoryHelper; - - public OPSmessegeAndMaintenanceController(DbContext dbContext) { - this.serviceRepositoryHelper = new ServiceRepositoryHelper(dbContext); - } - - @POST("/OpsMessage") - @JsonBody - public OPSmessageDto createOpsMessage(@JsonBody OPSmessageDto opsMessageDto) { - return serviceRepositoryHelper.addOPSmessega(opsMessageDto); - } - - - @POST("/Maintenance") - @JsonBody - public MaintenanceDto createMaintenanceMessage(@JsonBody MaintenanceDto maintenanceDto) { - return serviceRepositoryHelper.setMaintenance(maintenanceDto); - } - - - -} diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/OpsController.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/OpsController.java new file mode 100644 index 00000000..c25b4458 --- /dev/null +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/OpsController.java @@ -0,0 +1,24 @@ +package no.nav.portal.rest.api.v3.controllers; + +import no.nav.portal.rest.api.Helpers.OpsControllerHelper; +import no.nav.portal.rest.api.Helpers.ServiceControllerHelper; +import no.portal.web.generated.api.OPSmessageDto; +import org.actioncontroller.POST; +import org.actioncontroller.json.JsonBody; +import org.fluentjdbc.DbContext; + +public class OpsController { + + + private OpsControllerHelper opsControllerHelper; + + public OpsController(DbContext dbContext) { + this.opsControllerHelper = new OpsControllerHelper(dbContext); + } + + @POST("/OpsMessage") + @JsonBody + public OPSmessageDto createOpsMessage(@JsonBody OPSmessageDto opsMessageDto) { + return opsControllerHelper.newOps(opsMessageDto); + } +} diff --git a/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/ServiceController.java b/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/ServiceController.java index 37640739..39713738 100644 --- a/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/ServiceController.java +++ b/portal-rest-api/src/main/java/no/nav/portal/rest/api/v3/controllers/ServiceController.java @@ -3,7 +3,7 @@ import nav.portal.core.repositories.ServiceRepository; import no.nav.portal.rest.api.EntityDtoMappers; -import no.nav.portal.rest.api.Helpers.ServiceRepositoryHelper; +import no.nav.portal.rest.api.Helpers.ServiceControllerHelper; import no.portal.web.generated.api.*; import org.actioncontroller.*; import org.actioncontroller.json.JsonBody; @@ -16,57 +16,57 @@ public class ServiceController { - private final ServiceRepositoryHelper serviceRepositoryHelper; + private final ServiceControllerHelper serviceControllerHelper; private final ServiceRepository serviceRepository; public ServiceController(DbContext dbContext) { - this.serviceRepositoryHelper = new ServiceRepositoryHelper(dbContext); + this.serviceControllerHelper = new ServiceControllerHelper(dbContext); this.serviceRepository = new ServiceRepository(dbContext); } @GET("/Services") @JsonBody public List getServices() { - return serviceRepositoryHelper.getAllServices(); + return serviceControllerHelper.getAllServices(); } @GET("/Components") @JsonBody public List getComponents() { - return serviceRepositoryHelper.getAllComponents(); + return serviceControllerHelper.getAllComponents(); } @DELETE("/Component/:Service_id") @JsonBody public void deleteComponent(@PathParam("Service_id") UUID componentId) { - serviceRepositoryHelper.deleteComponent(componentId); + serviceControllerHelper.deleteComponent(componentId); } @GET("/Service/:Service_id") @JsonBody public ServiceDto getService(@PathParam("Service_id") UUID service_id) { - return serviceRepositoryHelper.retrieveOneService(service_id); + return serviceControllerHelper.retrieveOneService(service_id); } @GET("/Service/HistoryAggregated/:Service_id") @JsonBody public ServiceHistoryDto getServiceHistoryTwelveMonthsBack(@PathParam("Service_id") UUID service_id) { - return serviceRepositoryHelper.getServiceHistoryForTwelveMonths(service_id, 12); + return serviceControllerHelper.getServiceHistoryForTwelveMonths(service_id, 12); } @POST("/Service") @JsonBody public ServiceDto newService(@JsonBody ServiceDto serviceDto) { - return serviceRepositoryHelper.saveNewService(serviceDto); + return serviceControllerHelper.saveNewService(serviceDto); } @PUT("/Service/:Service_id") @JsonBody public void updateService(@PathParam("Service_id") UUID service_id, @JsonBody ServiceDto serviceDto) { serviceDto.setId(service_id); - serviceRepositoryHelper.updateService(serviceDto); + serviceControllerHelper.updateService(serviceDto); } @PUT("/Service/:Service_id/:DependentOnService_id") @@ -87,7 +87,7 @@ public void removeDependencyFromService(@PathParam("Service_id") UUID service_id @DELETE("/Service/:Service_id") @JsonBody public void deleteService(@PathParam("Service_id") UUID service_id) { - serviceRepositoryHelper.deleteService(service_id); + serviceControllerHelper.deleteService(service_id); } @@ -108,7 +108,7 @@ public List addMaintenance(@PathParam("Service_id") UUID service @JsonBody public List getAreasContainingService(@PathParam("Service_id") UUID service_id) { - return serviceRepositoryHelper.getAreasContainingService(service_id); + return serviceControllerHelper.getAreasContainingService(service_id); } diff --git a/portal-rest-api/src/main/resources/webapp-web/portal-rest-api.yaml b/portal-rest-api/src/main/resources/webapp-web/portal-rest-api.yaml index 2a2b2030..7df724ed 100644 --- a/portal-rest-api/src/main/resources/webapp-web/portal-rest-api.yaml +++ b/portal-rest-api/src/main/resources/webapp-web/portal-rest-api.yaml @@ -1134,34 +1134,32 @@ components: title: OPSmessage type: object properties: + id: + type: string + format: uuid + readOnly: true affectedServices: type: array example: "[Liste av påvirkede service/komponent UUIDer]" items: type: string format: uuid - internal_header: + internalHeader: type: string - internal_text: + internalMessage: type: string - external_header: + externalHeader: type: string - external_text: + externalMessage: type: string - only_show_for_internal: + onlyShowForNavEmployees: + type: boolean + isActive: type: boolean - startTime: - type: string - format: date-time - example: "2017-07-21T17:30:00Z" - endTime: - type: string - format: date-time - example: "2017-07-21T19:32:28Z" required: - - internal_text - - internal_header - - only_show_for_internal + - internalMessage + - internalHeader + - onlyShowForInternal ServiceHistory: title: ServiceHistory type: object diff --git a/portal-rest-api/src/test/java/no/nav/portal/rest/api/v3/controllers/OpsControllerTest.java b/portal-rest-api/src/test/java/no/nav/portal/rest/api/v3/controllers/OpsControllerTest.java new file mode 100644 index 00000000..2fb7c1bb --- /dev/null +++ b/portal-rest-api/src/test/java/no/nav/portal/rest/api/v3/controllers/OpsControllerTest.java @@ -0,0 +1,60 @@ +package no.nav.portal.rest.api.v3.controllers; + +import nav.portal.core.entities.OpsMessageEntity; +import nav.portal.core.repositories.*; +import no.nav.portal.rest.api.EntityDtoMappers; +import no.nav.portal.rest.api.Helpers.OpsControllerHelper; +import no.nav.portal.rest.api.Helpers.ServiceControllerHelper; +import no.portal.web.generated.api.OPSmessageDto; +import org.assertj.core.api.Assertions; +import org.fluentjdbc.DbContext; +import org.fluentjdbc.DbContextConnection; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import javax.sql.DataSource; +import java.util.UUID; + +class OpsControllerTest { + private final DataSource dataSource = TestDataSource.create(); + private final DbContext dbContext = new DbContext(); + + private final OpsController opsController = new OpsController(dbContext); + private final OpsControllerHelper opsControllerHelper = new OpsControllerHelper(dbContext); + private final OpsRepository opsRepository = new OpsRepository(dbContext); + + private DbContextConnection connection; + + + @BeforeEach + void startConnection() { + connection = dbContext.startConnection(dataSource); + TestUtil.clearAllTableData(dbContext); + } + + @AfterEach + void endConnection() { + connection.close(); + } + + + @Test + void createOpsMessage() { + //Arrange + OpsMessageEntity opsMessageEntity = SampleData.getRandomOpsMessageEntity(); + OPSmessageDto opsMessageDto = EntityDtoMappers.toOpsMessageDtoShallow(opsMessageEntity); + + //Act + UUID opsMessageId = opsController.createOpsMessage(opsMessageDto).getId(); + opsMessageEntity.setId(opsMessageId); + OpsMessageEntity retrievedEntity = opsRepository.retrieveOne(opsMessageId).getKey(); + + //Assert + Assertions.assertThat(retrievedEntity).isEqualTo(opsMessageEntity); + } + + @Test + void createMaintenanceMessage() { + } +} \ No newline at end of file