forked from navikt/statusplattform
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
dd32d5f
commit 1eae9aa
Showing
19 changed files
with
400 additions
and
118 deletions.
There are no files selected for viewing
94 changes: 94 additions & 0 deletions
94
portal-core/src/main/java/nav/portal/core/entities/OpsMessageEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
} |
88 changes: 88 additions & 0 deletions
88
portal-core/src/main/java/nav/portal/core/repositories/OpsRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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<UUID> services) { | ||
DatabaseSaveResult<UUID> 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<UUID> 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<OpsMessageEntity, List<ServiceEntity>> retrieveOne(UUID ops_id) { | ||
DbContextTableAlias ops = opsMessageTable.alias("ops"); | ||
DbContextTableAlias o2s = opsMessageServiceTable.alias("o2s"); | ||
DbContextTableAlias service = serviceTable.alias("service"); | ||
|
||
Map<OpsMessageEntity, List<ServiceEntity>> 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<ServiceEntity> 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); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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<String> icons = new ArrayList<>(Arrays.asList("0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010", "0011", "0012")); | ||
|
||
static final ArrayList<String> firstNames = new ArrayList<>(Arrays.asList("Arne", "Bodil", "Gudrun", "Kjell Åge", "Hufsa", "Elg", "Rake", "Æskild", "Øygunn")); | ||
static final ArrayList<String> lastNames = new ArrayList<>(Arrays.asList("Tacokrydder", "Plaskelaksen", "Grompesen", "Hamsterhjul")); | ||
static final ArrayList<String> emails = new ArrayList<>(Arrays.asList("[email protected]", "plaskelaksen@laksegård.com", "[email protected]", "[email protected]")); | ||
static final ArrayList<String> 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<AreaEntity> areas) { | ||
List<String> usedNames = areas.stream().map(AreaEntity::getName).collect(Collectors.toList()); | ||
|
@@ -116,15 +120,6 @@ public static List<SubAreaEntity> 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)) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
34 changes: 34 additions & 0 deletions
34
portal-rest-api/src/main/java/no/nav/portal/rest/api/Helpers/OpsControllerHelper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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<OpsMessageEntity, List<ServiceEntity>> ops = opsRepository.retrieveOne(uuid); | ||
return EntityDtoMappers.toOpsMessageDtoDeep(ops.getKey(), ops.getValue().stream().map(ServiceEntity::getId).collect(Collectors.toList())); | ||
} | ||
} |
Oops, something went wrong.