SEBSERV-133 Client Configuration
This commit is contained in:
parent
ebcbc134af
commit
698e7231cd
4 changed files with 78 additions and 0 deletions
|
@ -522,6 +522,11 @@ public enum ActionDefinition {
|
||||||
ImageIcon.EXPORT,
|
ImageIcon.EXPORT,
|
||||||
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_VIEW,
|
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_VIEW,
|
||||||
ActionCategory.FORM),
|
ActionCategory.FORM),
|
||||||
|
SEB_CLIENT_CONFIG_DELETE(
|
||||||
|
new LocTextKey("sebserver.clientconfig.action.delete"),
|
||||||
|
ImageIcon.DELETE,
|
||||||
|
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_VIEW,
|
||||||
|
ActionCategory.FORM),
|
||||||
|
|
||||||
SEB_EXAM_CONFIG_LIST(
|
SEB_EXAM_CONFIG_LIST(
|
||||||
new LocTextKey("sebserver.examconfig.action.list"),
|
new LocTextKey("sebserver.examconfig.action.list"),
|
||||||
|
|
|
@ -44,11 +44,13 @@ import ch.ethz.seb.sebserver.gui.service.page.PageContext;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.PageMessageException;
|
import ch.ethz.seb.sebserver.gui.service.page.PageMessageException;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
|
import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
|
||||||
|
import ch.ethz.seb.sebserver.gui.service.page.impl.PageAction;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.download.DownloadService;
|
import ch.ethz.seb.sebserver.gui.service.remote.download.DownloadService;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.download.SEBClientConfigDownload;
|
import ch.ethz.seb.sebserver.gui.service.remote.download.SEBClientConfigDownload;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.ActivateClientConfig;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.ActivateClientConfig;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.DeactivateClientConfig;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.DeactivateClientConfig;
|
||||||
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.DeleteClientConfig;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.GetClientConfig;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.GetClientConfig;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.NewClientConfig;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.NewClientConfig;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.SaveClientConfig;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig.SaveClientConfig;
|
||||||
|
@ -114,6 +116,11 @@ public class SEBClientConfigForm implements TemplateComposer {
|
||||||
private static final LocTextKey FORM_CONFIRM_ENCRYPT_SECRET_TEXT_KEY =
|
private static final LocTextKey FORM_CONFIRM_ENCRYPT_SECRET_TEXT_KEY =
|
||||||
new LocTextKey("sebserver.clientconfig.form.encryptSecret.confirm");
|
new LocTextKey("sebserver.clientconfig.form.encryptSecret.confirm");
|
||||||
|
|
||||||
|
private static final LocTextKey DELETE_CONFIRM =
|
||||||
|
new LocTextKey("sebserver.clientconfig.action.delete.confirm");
|
||||||
|
private static final LocTextKey DELETE_SUCCESS =
|
||||||
|
new LocTextKey("sebserver.clientconfig.action.delete.success");
|
||||||
|
|
||||||
private static final String DEFAULT_PING_INTERVAL = String.valueOf(1000);
|
private static final String DEFAULT_PING_INTERVAL = String.valueOf(1000);
|
||||||
private static final String FALLBACK_DEFAULT_TIME = String.valueOf(30 * Constants.SECOND_IN_MILLIS);
|
private static final String FALLBACK_DEFAULT_TIME = String.valueOf(30 * Constants.SECOND_IN_MILLIS);
|
||||||
private static final String FALLBACK_DEFAULT_ATTEMPTS = String.valueOf(5);
|
private static final String FALLBACK_DEFAULT_ATTEMPTS = String.valueOf(5);
|
||||||
|
@ -193,6 +200,12 @@ public class SEBClientConfigForm implements TemplateComposer {
|
||||||
.withEntityKey(entityKey)
|
.withEntityKey(entityKey)
|
||||||
.publishIf(() -> modifyGrant && isReadonly)
|
.publishIf(() -> modifyGrant && isReadonly)
|
||||||
|
|
||||||
|
.newAction(ActionDefinition.SEB_CLIENT_CONFIG_DELETE)
|
||||||
|
.withEntityKey(entityKey)
|
||||||
|
.withConfirm(() -> DELETE_CONFIRM)
|
||||||
|
.withExec(this::deleteConnectionConfig)
|
||||||
|
.publishIf(() -> modifyGrant && isReadonly)
|
||||||
|
|
||||||
.newAction(ActionDefinition.SEB_CLIENT_CONFIG_EXPORT)
|
.newAction(ActionDefinition.SEB_CLIENT_CONFIG_EXPORT)
|
||||||
.withEntityKey(entityKey)
|
.withEntityKey(entityKey)
|
||||||
.withExec(action -> {
|
.withExec(action -> {
|
||||||
|
@ -234,6 +247,24 @@ public class SEBClientConfigForm implements TemplateComposer {
|
||||||
.publishIf(() -> !isReadonly);
|
.publishIf(() -> !isReadonly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PageAction deleteConnectionConfig(final PageAction pageAction) {
|
||||||
|
|
||||||
|
this.restService.getBuilder(DeleteClientConfig.class)
|
||||||
|
.withURIVariable(API.PARAM_MODEL_ID, pageAction.getEntityKey().modelId)
|
||||||
|
.call()
|
||||||
|
.onError(error -> pageAction.pageContext().notifyUnexpectedError(error))
|
||||||
|
.ifPresent(rep -> {
|
||||||
|
if (rep.getErrors().isEmpty()) {
|
||||||
|
pageAction.pageContext().publishInfo(DELETE_SUCCESS);
|
||||||
|
} else {
|
||||||
|
pageAction.pageContext().notifyUnexpectedError(
|
||||||
|
new RuntimeException(rep.errors.iterator().next().errorMessage.details));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return pageAction;
|
||||||
|
}
|
||||||
|
|
||||||
private void buildForm(
|
private void buildForm(
|
||||||
final SEBClientConfig clientConfig,
|
final SEBClientConfig clientConfig,
|
||||||
final PageContext formContext,
|
final PageContext formContext,
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 ETH Zürich, Educational Development and Technology (LET)
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.clientconfig;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
|
||||||
|
import ch.ethz.seb.sebserver.gbl.api.API;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityProcessingReport;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
||||||
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestCall;
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
@Component
|
||||||
|
@GuiProfile
|
||||||
|
public class DeleteClientConfig extends RestCall<EntityProcessingReport> {
|
||||||
|
|
||||||
|
public DeleteClientConfig() {
|
||||||
|
super(new TypeKey<>(
|
||||||
|
CallType.DELETE,
|
||||||
|
EntityType.EXAM,
|
||||||
|
new TypeReference<EntityProcessingReport>() {
|
||||||
|
}),
|
||||||
|
HttpMethod.DELETE,
|
||||||
|
MediaType.APPLICATION_FORM_URLENCODED,
|
||||||
|
API.SEB_CLIENT_CONFIG_ENDPOINT + API.MODEL_ID_VAR_PATH_SEGMENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -816,6 +816,8 @@ sebserver.clientconfig.action.save=Save Connection Configuration
|
||||||
sebserver.clientconfig.action.activate=Activate Connection Configuration
|
sebserver.clientconfig.action.activate=Activate Connection Configuration
|
||||||
sebserver.clientconfig.action.deactivate=Deactivate Connection Configuration
|
sebserver.clientconfig.action.deactivate=Deactivate Connection Configuration
|
||||||
sebserver.clientconfig.action.export=Export Connection Configuration
|
sebserver.clientconfig.action.export=Export Connection Configuration
|
||||||
|
sebserver.clientconfig.action.delete=Delete Connection Configuration
|
||||||
|
sebserver.clientconfig.action.delete.confirm=Please note that after deletion of this Connection Configuration,<br/>a SEB that loads a former download of this Connection Configuration will never be able to connect to SEB Server again.
|
||||||
|
|
||||||
################################
|
################################
|
||||||
# SEB Exam Configuration
|
# SEB Exam Configuration
|
||||||
|
|
Loading…
Reference in a new issue