Skip scan if validation has been skipped

This commit is contained in:
crschnick 2024-03-10 09:47:53 +00:00
parent fe885d7e80
commit 1e7c2f9c93

View file

@ -40,14 +40,14 @@ import net.synedra.validatorfx.GraphicDecorationStackPane;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer; import java.util.function.BiConsumer;
import java.util.function.Predicate; import java.util.function.Predicate;
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
public class StoreCreationComp extends DialogComp { public class StoreCreationComp extends DialogComp {
Stage window; Stage window;
Consumer<DataStoreEntry> consumer; BiConsumer<DataStoreEntry, Boolean> consumer;
Property<DataStoreProvider> provider; Property<DataStoreProvider> provider;
Property<DataStore> store; Property<DataStore> store;
Predicate<DataStoreProvider> filter; Predicate<DataStoreProvider> filter;
@ -64,7 +64,7 @@ public class StoreCreationComp extends DialogComp {
public StoreCreationComp( public StoreCreationComp(
Stage window, Stage window,
Consumer<DataStoreEntry> consumer, BiConsumer<DataStoreEntry, Boolean> consumer,
Property<DataStoreProvider> provider, Property<DataStoreProvider> provider,
Property<DataStore> store, Property<DataStore> store,
Predicate<DataStoreProvider> filter, Predicate<DataStoreProvider> filter,
@ -148,7 +148,7 @@ public class StoreCreationComp extends DialogComp {
e.getProvider(), e.getProvider(),
e.getStore(), e.getStore(),
v -> true, v -> true,
newE -> { (newE, validated) -> {
ThreadHelper.runAsync(() -> { ThreadHelper.runAsync(() -> {
if (!DataStorage.get().getStoreEntries().contains(e)) { if (!DataStorage.get().getStoreEntries().contains(e)) {
DataStorage.get().addStoreEntryIfNotPresent(newE); DataStorage.get().addStoreEntryIfNotPresent(newE);
@ -171,7 +171,7 @@ public class StoreCreationComp extends DialogComp {
base != null ? DataStoreProviders.byStore(base) : null, base != null ? DataStoreProviders.byStore(base) : null,
base, base,
dataStoreProvider -> category.equals(dataStoreProvider.getCreationCategory()), dataStoreProvider -> category.equals(dataStoreProvider.getCreationCategory()),
e -> { (e, validated) -> {
try { try {
DataStorage.get().addStoreEntryIfNotPresent(e); DataStorage.get().addStoreEntryIfNotPresent(e);
if (e.getProvider().shouldHaveChildren() if (e.getProvider().shouldHaveChildren()
@ -193,7 +193,7 @@ public class StoreCreationComp extends DialogComp {
DataStoreProvider provider, DataStoreProvider provider,
DataStore s, DataStore s,
Predicate<DataStoreProvider> filter, Predicate<DataStoreProvider> filter,
Consumer<DataStoreEntry> con, BiConsumer<DataStoreEntry, Boolean> con,
boolean staticDisplay, boolean staticDisplay,
DataStoreEntry existingEntry) { DataStoreEntry existingEntry) {
var prop = new SimpleObjectProperty<>(provider); var prop = new SimpleObjectProperty<>(provider);
@ -223,7 +223,7 @@ public class StoreCreationComp extends DialogComp {
protected List<Comp<?>> customButtons() { protected List<Comp<?>> customButtons() {
return List.of(new ButtonComp(AppI18n.observable("skip"), null, () -> { return List.of(new ButtonComp(AppI18n.observable("skip"), null, () -> {
if (showInvalidConfirmAlert()) { if (showInvalidConfirmAlert()) {
commit(); commit(false);
} else { } else {
finish(); finish();
} }
@ -248,7 +248,7 @@ public class StoreCreationComp extends DialogComp {
// We didn't change anything // We didn't change anything
if (existingEntry != null && existingEntry.getStore().equals(store.getValue())) { if (existingEntry != null && existingEntry.getStore().equals(store.getValue())) {
commit(); commit(false);
return; return;
} }
@ -274,7 +274,7 @@ public class StoreCreationComp extends DialogComp {
try (var b = new BooleanScope(busy).start()) { try (var b = new BooleanScope(busy).start()) {
DataStorage.get().addStoreEntryInProgress(entry.getValue()); DataStorage.get().addStoreEntryInProgress(entry.getValue());
entry.getValue().validateOrThrow(); entry.getValue().validateOrThrow();
commit(); commit(true);
} catch (Throwable ex) { } catch (Throwable ex) {
if (ex instanceof ValidationException) { if (ex instanceof ValidationException) {
ErrorEvent.expected(ex); ErrorEvent.expected(ex);
@ -349,14 +349,14 @@ public class StoreCreationComp extends DialogComp {
.build(); .build();
} }
private void commit() { private void commit(boolean validated) {
if (finished.get()) { if (finished.get()) {
return; return;
} }
finished.setValue(true); finished.setValue(true);
if (entry.getValue() != null) { if (entry.getValue() != null) {
consumer.accept(entry.getValue()); consumer.accept(entry.getValue(), validated);
} }
PlatformThread.runLaterIfNeeded(() -> { PlatformThread.runLaterIfNeeded(() -> {