Skip to content
Snippets Groups Projects
Commit 774bd074 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-5323 [wip] get document

parent 8505056f
No related branches found
No related tags found
No related merge requests found
Showing
with 273 additions and 6 deletions
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.bescheid.attacheditem;
import java.util.Map;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class AttachedItem {
public static final String PROPERTY_ID = "id";
public static final String PROPERTY_CLIENT = "client";
public static final String PROPERTY_VORGANG_ID = "vorgangId";
public static final String PROPERTY_ITEM_NAME = "itemName";
public static final String PROPERTY_VERSION = "version";
public static final String PROPERTY_ITEM = "item";
private String id;
@Builder.Default
private long version = 0L;
private String client;
private String vorgangId;
private String itemName;
private Map<String, Object> item;
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.bescheid.attacheditem;
import org.mapstruct.Mapper;
import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
@Mapper(uses = { GrpcObjectMapper.class})
public interface AttachedItemMapper {
AttachedItem mapFromVorgangAttachedItem(GrpcVorgangAttachedItem item);
}
...@@ -185,4 +185,7 @@ public class AttachedItemService { ...@@ -185,4 +185,7 @@ public class AttachedItemService {
.build(); .build();
} }
public AttachedItem getItem(String id) {
return remoteService.getItem(id);
}
} }
...@@ -31,6 +31,7 @@ import lombok.Getter; ...@@ -31,6 +31,7 @@ import lombok.Getter;
@Builder(toBuilder = true) @Builder(toBuilder = true)
@Getter @Getter
@Deprecated(since = "2.6.0")
public class BescheidItem { public class BescheidItem {
static final Set<String> ACCEPTED_SEND_BY_VALUES = Set.of("POSTFACH", "MANUAL"); static final Set<String> ACCEPTED_SEND_BY_VALUES = Set.of("POSTFACH", "MANUAL");
......
...@@ -42,6 +42,7 @@ import lombok.RequiredArgsConstructor; ...@@ -42,6 +42,7 @@ import lombok.RequiredArgsConstructor;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
@Deprecated(since = "2.6.0")
public class BescheidItemMapper { public class BescheidItemMapper {
private final GrpcObjectMapper grpcObjectMapper; private final GrpcObjectMapper grpcObjectMapper;
......
...@@ -57,6 +57,8 @@ class VorgangAttachedItemRemoteService { ...@@ -57,6 +57,8 @@ class VorgangAttachedItemRemoteService {
private ClientInterceptor bescheidCallContextInterceptor; private ClientInterceptor bescheidCallContextInterceptor;
@Autowired @Autowired
private BescheidItemMapper bescheidItemMapper; private BescheidItemMapper bescheidItemMapper;
@Autowired
private AttachedItemMapper attachedItemMapper;
public Optional<BescheidItem> findBescheidDraft(String vorgangId) { public Optional<BescheidItem> findBescheidDraft(String vorgangId) {
return findBescheidDraft(buildFindRequest(vorgangId)); return findBescheidDraft(buildFindRequest(vorgangId));
...@@ -90,6 +92,11 @@ class VorgangAttachedItemRemoteService { ...@@ -90,6 +92,11 @@ class VorgangAttachedItemRemoteService {
return bescheidItemMapper.mapFromVorgangAttachedItem(grpcVorgangAttachedItemResponse.getVorgangAttachedItem()); return bescheidItemMapper.mapFromVorgangAttachedItem(grpcVorgangAttachedItemResponse.getVorgangAttachedItem());
} }
public AttachedItem getItem(String id) {
var grpcVorgangAttachedItemResponse = getServiceStub().getById(buildGetByIdRequest(id));
return attachedItemMapper.mapFromVorgangAttachedItem(grpcVorgangAttachedItemResponse.getVorgangAttachedItem());
}
GrpcVorgangAttachedItemRequest buildGetByIdRequest(String bescheidId) { GrpcVorgangAttachedItemRequest buildGetByIdRequest(String bescheidId) {
return GrpcVorgangAttachedItemRequest.newBuilder().setId(bescheidId).build(); return GrpcVorgangAttachedItemRequest.newBuilder().setId(bescheidId).build();
} }
......
...@@ -30,9 +30,10 @@ import lombok.Getter; ...@@ -30,9 +30,10 @@ import lombok.Getter;
@Getter @Getter
public class Document { public class Document {
static final String FIELD_DOCUMENT_TYPE = "type"; public static final String FIELD_DOCUMENT_TYPE = "type";
static final String FIELD_NACHRICHT_TEXT = "nachrichtText"; public static final String FIELD_DOCUMENT_FILE = "documentFile";
static final String FIELD_DOCUMENT_FILE = "documentFile"; public static final String FIELD_NACHRICHT_TEXT = "nachrichtText";
public static final String FIELD_NACHRICHT_SUBJECT = "nachrichtSubject";
private String id; private String id;
private String type; private String type;
......
...@@ -23,9 +23,12 @@ ...@@ -23,9 +23,12 @@
*/ */
package de.ozgcloud.document; package de.ozgcloud.document;
import org.apache.commons.collections.MapUtils;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import de.ozgcloud.bescheid.attacheditem.AttachedItem;
@Mapper @Mapper
interface DocumentMapper { interface DocumentMapper {
...@@ -41,4 +44,13 @@ interface DocumentMapper { ...@@ -41,4 +44,13 @@ interface DocumentMapper {
@Mapping(target = "clearField", ignore = true) @Mapping(target = "clearField", ignore = true)
GrpcDocument toGrpcDocument(Document document); GrpcDocument toGrpcDocument(Document document);
default Document fromAttacheItem(AttachedItem attachedItem) {
return Document.builder()
.id(attachedItem.getId())
.type(MapUtils.getString(attachedItem.getItem(), Document.FIELD_DOCUMENT_TYPE))
.fileId(MapUtils.getString(attachedItem.getItem(), Document.FIELD_DOCUMENT_FILE))
.nachrichtText(MapUtils.getString(attachedItem.getItem(), Document.FIELD_NACHRICHT_TEXT))
.nachrichtSubject(MapUtils.getString(attachedItem.getItem(), Document.FIELD_NACHRICHT_SUBJECT))
.build();
}
} }
...@@ -44,15 +44,17 @@ import lombok.RequiredArgsConstructor; ...@@ -44,15 +44,17 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
public class DocumentService { public class DocumentService {
public static final String DOCUMENT_ITEM_NAME = "Document";
public static final String DOCUMENT_TYPE = "BESCHEID";
static final String CREATE_ATTACHED_ITEM_ORDER = "CREATE_ATTACHED_ITEM"; static final String CREATE_ATTACHED_ITEM_ORDER = "CREATE_ATTACHED_ITEM";
static final String DOCUMENT_ITEM_NAME = "Document";
static final String FIELD_DOCUMENT_TYPE = "type"; static final String FIELD_DOCUMENT_TYPE = "type";
static final String DOCUMENT_TYPE = "BESCHEID";
static final String FIELD_DOCUMENT_FILE = "documentFile"; static final String FIELD_DOCUMENT_FILE = "documentFile";
private final AttachedItemService attachedItemService; private final AttachedItemService attachedItemService;
private final OzgCloudCommandService commandService; private final OzgCloudCommandService commandService;
private final CommandMapper commandMapper; private final CommandMapper commandMapper;
private final DocumentMapper documentMapper;
public String createBescheidDocument(Command command) { public String createBescheidDocument(Command command) {
validateBescheidItem(command.getRelationId()); validateBescheidItem(command.getRelationId());
...@@ -94,6 +96,6 @@ public class DocumentService { ...@@ -94,6 +96,6 @@ public class DocumentService {
} }
public Document getDocument(String id) { public Document getDocument(String id) {
return Document.builder().build(); return documentMapper.fromAttacheItem(attachedItemService.getItem(id));
} }
} }
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.bescheid.attacheditem;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import de.ozgcloud.document.DocumentService;
import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
class AttachedItemMapperTest {
@InjectMocks
private AttachedItemMapper mapper = Mappers.getMapper(AttachedItemMapper.class);
@Mock
private GrpcObjectMapper grpcObjectMapper;
@BeforeEach
void init() {
when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(AttachedItemTestFactory.createDocumentItem());
}
@Test
void shouldMapFromVorgangAttachedItem() {
var grpcVorgangAttachedItem = GrpcVorgangAttachedItemTestFactory.createBuilder().setItemName(DocumentService.DOCUMENT_ITEM_NAME)
.setVersion(AttachedItemTestFactory.VERSION).build();
var result = mapper.mapFromVorgangAttachedItem(grpcVorgangAttachedItem);
assertThat(result).usingRecursiveComparison().isEqualTo(AttachedItemTestFactory.createDocument());
}
}
\ No newline at end of file
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.bescheid.attacheditem;
import java.util.List;
import java.util.Map;
import de.ozgcloud.bescheid.attacheditem.AttachedItem.AttachedItemBuilder;
import de.ozgcloud.command.CommandTestFactory;
import de.ozgcloud.document.Document;
import de.ozgcloud.document.DocumentService;
import de.ozgcloud.document.DocumentTestFactory;
public class AttachedItemTestFactory {
public static final String ID = "bescheid-item-id";
public static final long VERSION = 10L;
public static final String CLIENT = "client";
public static final String BESCHEIDEN_AM = "2024-01-01";
public static final String BESCHEID_DOCUMENT = "bescheid-document";
public static final String ATTACHMENT = "attachment-id";
public static final String SEND_BY = "POSTFACH";
public static final String NACHRICHT_TEXT = "nachricht-text";
public static final String NACHRICHT_SUBJECT = "nachricht-subject";
public static AttachedItem createBescheid() {
return createBuilder()
.itemName(AttachedItemService.BESCHEID_ITEM_NAME)
.item(createBescheidItem())
.build();
}
public static Map<String, Object> createBescheidItem() {
return Map.of(
BescheidItem.FIELD_STATUS, BescheidItem.Status.DRAFT,
BescheidItem.FIELD_BESCHIEDEN_AM, BESCHEIDEN_AM,
BescheidItem.FIELD_BEWILLIGT, true,
BescheidItem.FIELD_BESCHEID_DOCUMENT, BESCHEID_DOCUMENT,
BescheidItem.FIELD_ATTACHMENTS, List.of(ATTACHMENT),
BescheidItem.FIELD_SEND_BY, SEND_BY,
BescheidItem.FIELD_NACHRICHT_TEXT, NACHRICHT_TEXT,
BescheidItem.FIELD_NACHRICHT_SUBJECT, NACHRICHT_SUBJECT);
}
public static AttachedItem createDocument() {
return createBuilder()
.itemName(DocumentService.DOCUMENT_ITEM_NAME)
.item(createDocumentItem())
.build();
}
public static Map<String, Object> createDocumentItem() {
return Map.of(
Document.FIELD_DOCUMENT_TYPE, DocumentService.DOCUMENT_TYPE,
Document.FIELD_DOCUMENT_FILE, DocumentTestFactory.DOCUMENT_FILE,
Document.FIELD_NACHRICHT_TEXT, DocumentTestFactory.NACHRICHT_TEXT,
Document.FIELD_NACHRICHT_SUBJECT, DocumentTestFactory.NACHRICHT_SUBJECT
);
}
public static AttachedItemBuilder createBuilder() {
return AttachedItem.builder()
.id(ID)
.version(VERSION)
.client(CLIENT)
.vorgangId(CommandTestFactory.VORGANG_ID);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment