Skip to content
Snippets Groups Projects
Commit 555aa711 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-7037 move ClientAttributeService into Archive Service

parent 2bc66507
No related branches found
No related tags found
2 merge requests!2Ozg 7037 refactor package structure,!1Ozg 7037 vorgang an dms
...@@ -58,7 +58,6 @@ public class ArchiveManagerConfiguration { ...@@ -58,7 +58,6 @@ public class ArchiveManagerConfiguration {
public static final String CALL_CONTEXT_PROVIDER_NAME = "archive_CallContextProvider"; public static final String CALL_CONTEXT_PROVIDER_NAME = "archive_CallContextProvider";
public static final String CALL_CONTEXT_MAPPER_NAME = "archive_CallContextMapper"; public static final String CALL_CONTEXT_MAPPER_NAME = "archive_CallContextMapper";
public static final String CLIENT_ATTRIBUTE_SERVICE_NAME = "archive_ClientAttributeService";
public static final String OZGCLOUD_CLIENT_ATTRIBUTE_SERVICE_NAME = "archive_OzgCloudClientAttributeService"; public static final String OZGCLOUD_CLIENT_ATTRIBUTE_SERVICE_NAME = "archive_OzgCloudClientAttributeService";
public static final String KOMMENTAR_SERVICE_NAME = "archive_KommentarService"; public static final String KOMMENTAR_SERVICE_NAME = "archive_KommentarService";
......
...@@ -34,7 +34,6 @@ import org.springframework.security.core.context.SecurityContext; ...@@ -34,7 +34,6 @@ import org.springframework.security.core.context.SecurityContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.ozgcloud.archive.ArchiveManagerConfiguration; import de.ozgcloud.archive.ArchiveManagerConfiguration;
import de.ozgcloud.archive.attributes.ClientAttributeService;
import de.ozgcloud.archive.common.callcontext.CallContextUser; import de.ozgcloud.archive.common.callcontext.CallContextUser;
import de.ozgcloud.archive.common.callcontext.CurrentUserService; import de.ozgcloud.archive.common.callcontext.CurrentUserService;
import de.ozgcloud.archive.common.command.CommandService; import de.ozgcloud.archive.common.command.CommandService;
...@@ -69,13 +68,12 @@ class ArchiveEventListener { ...@@ -69,13 +68,12 @@ class ArchiveEventListener {
@Qualifier(ArchiveManagerConfiguration.CURRENT_USER_SERVICE_NAME) // NOSONAR @Qualifier(ArchiveManagerConfiguration.CURRENT_USER_SERVICE_NAME) // NOSONAR
private final CurrentUserService currentUserService; private final CurrentUserService currentUserService;
@Qualifier(ArchiveManagerConfiguration.CLIENT_ATTRIBUTE_SERVICE_NAME) // NOSONAR
private final ClientAttributeService clientAttributeService;
@Qualifier(ArchiveManagerConfiguration.VORGANG_SERVICE_NAME) // NOSONAR @Qualifier(ArchiveManagerConfiguration.VORGANG_SERVICE_NAME) // NOSONAR
private final VorgangService vorgangService; private final VorgangService vorgangService;
private final ApplicationEventPublisher eventPublisher; private final ApplicationEventPublisher eventPublisher;
@Qualifier(ArchiveManagerConfiguration.COMMAND_SERVICE_NAME) // NOSONAR
private final CommandService commandService; private final CommandService commandService;
private final ArchiveService archiveService; private final ArchiveService archiveService;
...@@ -85,7 +83,7 @@ class ArchiveEventListener { ...@@ -85,7 +83,7 @@ class ArchiveEventListener {
} }
void doLockVorgang(Command command) { void doLockVorgang(Command command) {
clientAttributeService.setVorgangArchiving(command.getVorgangId()); archiveService.setVorgangArchiving(command.getVorgangId());
vorgangService.lockVorgang(command); vorgangService.lockVorgang(command);
} }
......
...@@ -7,8 +7,15 @@ import java.util.UUID; ...@@ -7,8 +7,15 @@ import java.util.UUID;
import jakarta.activation.DataHandler; import jakarta.activation.DataHandler;
import jakarta.activation.FileDataSource; import jakarta.activation.FileDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import de.ozgcloud.apilib.client_attribute.OzgCloudAccessPermission;
import de.ozgcloud.apilib.client_attribute.OzgCloudBooleanClientAttribute;
import de.ozgcloud.apilib.client_attribute.OzgCloudClientAttributeService;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
import de.ozgcloud.archive.ArchiveManagerConfiguration;
import de.ozgcloud.archive.common.callcontext.CallContextUser;
import de.ozgcloud.archive.common.xta.XtaService; import de.ozgcloud.archive.common.xta.XtaService;
import de.ozgcloud.archive.export.ExportService; import de.ozgcloud.archive.export.ExportService;
import de.ozgcloud.command.Command; import de.ozgcloud.command.Command;
...@@ -20,8 +27,25 @@ import lombok.RequiredArgsConstructor; ...@@ -20,8 +27,25 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
class ArchiveService { class ArchiveService {
public static final String ATTRIBUTE_NAME_ANTRAG_ARCHIVING = "ARCHIVING";
private final XtaService xtaService; private final XtaService xtaService;
private final ExportService exportService; private final ExportService exportService;
@Qualifier(ArchiveManagerConfiguration.OZGCLOUD_CLIENT_ATTRIBUTE_SERVICE_NAME) // NOSONAR
private final OzgCloudClientAttributeService ozgCloudAttributesService;
private final OzgCloudVorgangIdMapper vorgangIdMapper;
public void setVorgangArchiving(String vorgangId) {
ozgCloudAttributesService.setClientAttribute(buildBooleanClientAttribute(true), vorgangIdMapper.fromString(vorgangId));
}
OzgCloudBooleanClientAttribute buildBooleanClientAttribute(boolean isArchiving) {
return OzgCloudBooleanClientAttribute.builder()
.clientName(CallContextUser.ARCHIVE_MANAGER_CLIENT_NAME)
.access(OzgCloudAccessPermission.READ_ONLY)
.attributeName(ATTRIBUTE_NAME_ANTRAG_ARCHIVING)
.value(isArchiving)
.build();
}
public void archiveVorgang(Command command) { public void archiveVorgang(Command command) {
xtaService.sendXdomeaFile(buildXdomeaXtaFile(command.getVorgangId())); xtaService.sendXdomeaFile(buildXdomeaXtaFile(command.getVorgangId()));
......
/*
* 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.archive.attributes;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import de.ozgcloud.apilib.client_attribute.OzgCloudAccessPermission;
import de.ozgcloud.apilib.client_attribute.OzgCloudBooleanClientAttribute;
import de.ozgcloud.apilib.client_attribute.OzgCloudClientAttributeService;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
import de.ozgcloud.archive.ArchiveManagerConfiguration;
import de.ozgcloud.archive.common.callcontext.CallContextUser;
import lombok.RequiredArgsConstructor;
@Service(ArchiveManagerConfiguration.CLIENT_ATTRIBUTE_SERVICE_NAME) // NOSONAR
@RequiredArgsConstructor
public class ClientAttributeService {
public static final String ATTRIBUTE_NAME_ANTRAG_ARCHIVING = "ARCHIVING";
@Qualifier(ArchiveManagerConfiguration.OZGCLOUD_CLIENT_ATTRIBUTE_SERVICE_NAME) // NOSONAR
private final OzgCloudClientAttributeService ozgCloudAttributesService;
private final OzgCloudVorgangIdMapper vorgangIdMapper;
public void setVorgangArchiving(String vorgangId) {
ozgCloudAttributesService.setClientAttribute(buildBooleanClientAttribute(true), vorgangIdMapper.fromString(vorgangId));
}
OzgCloudBooleanClientAttribute buildBooleanClientAttribute(boolean isArchiving) {
return OzgCloudBooleanClientAttribute.builder()
.clientName(CallContextUser.ARCHIVE_MANAGER_CLIENT_NAME)
.access(OzgCloudAccessPermission.READ_ONLY)
.attributeName(ATTRIBUTE_NAME_ANTRAG_ARCHIVING)
.value(isArchiving)
.build();
}
}
...@@ -40,7 +40,6 @@ import org.mockito.Spy; ...@@ -40,7 +40,6 @@ import org.mockito.Spy;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContext;
import de.ozgcloud.archive.attributes.ClientAttributeService;
import de.ozgcloud.archive.common.callcontext.CurrentUserService; import de.ozgcloud.archive.common.callcontext.CurrentUserService;
import de.ozgcloud.archive.common.command.CommandService; import de.ozgcloud.archive.common.command.CommandService;
import de.ozgcloud.archive.common.errorhandling.TimeoutException; import de.ozgcloud.archive.common.errorhandling.TimeoutException;
...@@ -63,8 +62,6 @@ class ArchiveEventListenerTest { ...@@ -63,8 +62,6 @@ class ArchiveEventListenerTest {
@Mock @Mock
private CurrentUserService currentUserService; private CurrentUserService currentUserService;
@Mock @Mock
private ClientAttributeService clientAttributeService;
@Mock
private VorgangService vorgangService; private VorgangService vorgangService;
@Mock @Mock
private ApplicationEventPublisher eventPublisher; private ApplicationEventPublisher eventPublisher;
...@@ -103,7 +100,7 @@ class ArchiveEventListenerTest { ...@@ -103,7 +100,7 @@ class ArchiveEventListenerTest {
void shouldCallSetVorgangArchiving() { void shouldCallSetVorgangArchiving() {
doLockVorgang(); doLockVorgang();
verify(clientAttributeService).setVorgangArchiving(CommandTestFactory.VORGANG_ID); verify(archiveService).setVorgangArchiving(CommandTestFactory.VORGANG_ID);
} }
@Test @Test
......
...@@ -17,11 +17,18 @@ import org.junit.jupiter.api.AfterEach; ...@@ -17,11 +17,18 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockedConstruction; import org.mockito.MockedConstruction;
import org.mockito.Spy; import org.mockito.Spy;
import de.ozgcloud.apilib.client_attribute.OzgCloudAccessPermission;
import de.ozgcloud.apilib.client_attribute.OzgCloudClientAttributeService;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
import de.ozgcloud.archive.common.callcontext.CallContextUser;
import de.ozgcloud.archive.common.xta.XtaService; import de.ozgcloud.archive.common.xta.XtaService;
import de.ozgcloud.archive.export.ExportService; import de.ozgcloud.archive.export.ExportService;
import de.ozgcloud.archive.vorgang.VorgangWithEingangTestFactory; import de.ozgcloud.archive.vorgang.VorgangWithEingangTestFactory;
...@@ -42,6 +49,76 @@ class ArchiveServiceTest { ...@@ -42,6 +49,76 @@ class ArchiveServiceTest {
private ExportService exportService; private ExportService exportService;
@Mock @Mock
private XtaService xtaService; private XtaService xtaService;
@Mock
private OzgCloudClientAttributeService ozgCloudAttributesService;
@Mock
private OzgCloudVorgangIdMapper vorgangIdMapper;
@Nested
class TestSetVorgangArchiving {
@Test
void shouldBuildBooleanClientAttribute() {
setVorgangArchiving();
verify(service).buildBooleanClientAttribute(true);
}
@Test
void shouldCallVorgangIdMapper() {
setVorgangArchiving();
verify(vorgangIdMapper).fromString(VorgangWithEingangTestFactory.ID);
}
@Test
void shouldSetClientAttribute() {
var attribute = OzgCloudBooleanClientAttributeTestFactory.create();
doReturn(attribute).when(service).buildBooleanClientAttribute(true);
when(vorgangIdMapper.fromString(VorgangWithEingangTestFactory.ID)).thenReturn(OzgCloudVorgangId.from(VorgangWithEingangTestFactory.ID));
setVorgangArchiving();
verify(ozgCloudAttributesService).setClientAttribute(attribute, OzgCloudVorgangId.from(VorgangWithEingangTestFactory.ID));
}
private void setVorgangArchiving() {
service.setVorgangArchiving(VorgangWithEingangTestFactory.ID);
}
}
@Nested
class TestBuildBooleanClientAttribute {
@Test
void shouldSetClientName() {
var attribute = service.buildBooleanClientAttribute(false);
assertThat(attribute.getClientName()).isEqualTo(CallContextUser.ARCHIVE_MANAGER_CLIENT_NAME);
}
@Test
void shouldSetAccess() {
var attribute = service.buildBooleanClientAttribute(false);
assertThat(attribute.getAccess()).isEqualTo(OzgCloudAccessPermission.READ_ONLY);
}
@Test
void shouldSetAttributeName() {
var attribute = service.buildBooleanClientAttribute(false);
assertThat(attribute.getAttributeName()).isEqualTo(ArchiveService.ATTRIBUTE_NAME_ANTRAG_ARCHIVING);
}
@ParameterizedTest
@ValueSource(booleans = { true, false })
void shouldSetValue(boolean isArchiving) {
var attribute = service.buildBooleanClientAttribute(isArchiving);
assertThat(attribute.getValue()).isEqualTo(isArchiving);
}
}
@Nested @Nested
class TestArchiveVorgang { class TestArchiveVorgang {
......
package de.ozgcloud.archive.archivierung;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.apilib.client_attribute.OzgCloudAccessPermission;
import de.ozgcloud.apilib.client_attribute.OzgCloudBooleanClientAttribute;
import de.ozgcloud.apilib.client_attribute.OzgCloudBooleanClientAttribute.OzgCloudBooleanClientAttributeBuilder;
import de.ozgcloud.archive.common.callcontext.CallContextUserTestFactory;
public class OzgCloudBooleanClientAttributeTestFactory {
private static final boolean VALUE = true;
private static final String ATTRIBUTE_NAME = LoremIpsum.getInstance().getWords(1);
private static final OzgCloudAccessPermission ACCESS = OzgCloudAccessPermission.READ_ONLY;
private static final String CLIENT_NAME = CallContextUserTestFactory.CLIENT_NAME;
public static OzgCloudBooleanClientAttribute create() {
return createBuilder().build();
}
private static OzgCloudBooleanClientAttributeBuilder<?, ?> createBuilder() {
return OzgCloudBooleanClientAttribute.builder()
.clientName(CLIENT_NAME)
.access(ACCESS)
.attributeName(ATTRIBUTE_NAME)
.value(VALUE);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment