added default value handling to setup wizard

added table to store the default values of the whole system, to not require the property files
added ability to cancel setup wizard
This commit is contained in:
Sheldan
2020-05-22 20:13:24 +02:00
parent 992357b2cb
commit 3714fd2582
37 changed files with 535 additions and 69 deletions

View File

@@ -3,9 +3,8 @@ package dev.sheldan.abstracto.core.interactive;
import dev.sheldan.abstracto.core.models.AServerChannelUserId;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public interface SetupStep {
CompletableFuture<List<DelayedActionConfig>> execute(AServerChannelUserId aUserInAServer, SetupStepParameter parameter);
CompletableFuture<SetupStepResult> execute(AServerChannelUserId aUserInAServer, SetupStepParameter parameter);
}

View File

@@ -0,0 +1,19 @@
package dev.sheldan.abstracto.core.interactive;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Builder
public class SetupStepResult {
private List<DelayedActionConfig> delayedActionConfigList;
private SetupStepResultType result;
public static SetupStepResult fromCancelled() {
return SetupStepResult.builder().result(SetupStepResultType.CANCELLED).build();
}
}

View File

@@ -0,0 +1,5 @@
package dev.sheldan.abstracto.core.interactive;
public enum SetupStepResultType {
SUCCESS, CANCELLED
}

View File

@@ -58,6 +58,17 @@ public class AConfig {
this.updated = Instant.now();
}
public String getValueAsString() {
if(getLongValue() != null) {
return getLongValue().toString();
} else if(getDoubleValue() != null) {
return getDoubleValue().toString();
} else if(getStringValue() != null) {
return getStringValue();
}
return null;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@@ -0,0 +1,60 @@
package dev.sheldan.abstracto.core.models.database;
import lombok.*;
import javax.persistence.*;
import java.time.Instant;
@Entity
@Table(name="default_configs")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class ADefaultConfig {
@javax.persistence.Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
@Column
private String name;
@Column
@Setter
private String stringValue;
@Column
@Setter
private Double doubleValue;
@Column
@Setter
private Long longValue;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
public String getValueAsString() {
if(getLongValue() != null) {
return getLongValue().toString();
} else if(getDoubleValue() != null) {
return getDoubleValue().toString();
} else if(getStringValue() != null) {
return getStringValue();
}
return null;
}
}

View File

@@ -9,5 +9,5 @@ import lombok.Setter;
@Setter
@Builder
public class SetupCompletedNotificationModel {
private FeatureConfig completedFeature;
private FeatureConfig featureConfig;
}

View File

@@ -0,0 +1,13 @@
package dev.sheldan.abstracto.core.models.template.commands;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class SetupInitialMessageModel {
private FeatureConfig featureConfig;
}

View File

@@ -0,0 +1,14 @@
package dev.sheldan.abstracto.core.models.template.commands;
import dev.sheldan.abstracto.core.models.database.ADefaultConfig;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class SetupSystemConfigMessageModel {
private String configKey;
private ADefaultConfig defaultConfig;
}

View File

@@ -1,5 +1,7 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.database.AConfig;
public interface ConfigService {
Double getDoubleValue(String name, Long serverId);
Long getLongValue(String name, Long serverId);
@@ -9,8 +11,9 @@ public interface ConfigService {
void setDoubleValue(String name, Long serverId, Double value);
void setLongValue(String name, Long serverId, Long value);
void setConfigValue(String name, Long serverId, String value);
void setConfigValue(String name, Long serverId, AConfig value);
void setStringValue(String name, Long serverId, String value);
boolean configIsFitting(String name, Long serverId, String value);
void validateConfig(String name, Long serverId, String value);
AConfig getFakeConfigForValue(String name, Long serverId, String value);
}

View File

@@ -0,0 +1,10 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.database.ADefaultConfig;
public interface DefaultConfigManagementService {
void createDefaultConfig(String key, String value);
void createDefaultConfig(String key, Long value);
void createDefaultConfig(String key, Double value);
ADefaultConfig getDefaultConfig(String key);
}