From b3d0580439b9a00c7eb918085de1694151066004 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 16:02:49 +0000
Subject: [PATCH] rename packages
---
fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 177 insertions(+), 0 deletions(-)
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java
new file mode 100644
index 0000000..65ad037
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java
@@ -0,0 +1,177 @@
+package com.megatim.fdxconvert.viewmodel;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.views.jsonstructure.DefaultNestedJsonStructure;
+import com.megatim.fdxconvert.views.jsonstructure.NestedJsonStructure;
+import javafx.beans.Observable;
+import javafx.beans.binding.Bindings;
+import javafx.beans.property.*;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+
+import java.util.UUID;
+
+public class JsonStructureViewModel {
+
+ private final String id;
+ private final boolean root;
+ private final int level;
+
+ private final StringProperty name = new SimpleStringProperty();
+ private final ObjectProperty<TypeDonnee> type = new SimpleObjectProperty(TypeDonnee.ALPHANUMERIQUE);
+ private final StringProperty format = new SimpleStringProperty();
+ private final ObjectProperty<Delimiteur> delimitor = new SimpleObjectProperty<>(null);
+ private final IntegerProperty taille = new SimpleIntegerProperty(1);
+ private final BooleanProperty required = new SimpleBooleanProperty(false);
+ private final BooleanProperty collection = new SimpleBooleanProperty(false);
+
+ private final BooleanProperty valid = new SimpleBooleanProperty(false);
+ private final BooleanProperty validName = new SimpleBooleanProperty(false);
+ private final BooleanProperty validType = new SimpleBooleanProperty(false);
+ private final BooleanProperty validFormat = new SimpleBooleanProperty(false);
+ private final BooleanProperty validDelimitor = new SimpleBooleanProperty(false);
+ private final BooleanProperty validTaille = new SimpleBooleanProperty(false);
+
+ private final BooleanProperty hasChild = new SimpleBooleanProperty(false);
+ private final BooleanProperty hasDateType = new SimpleBooleanProperty(false);
+ private final BooleanProperty hasSquareBracket = new SimpleBooleanProperty(false);
+ private final BooleanProperty hasObjectSquareBracket = new SimpleBooleanProperty(false);
+
+ private final ObservableList<JsonStructureViewModel> children = FXCollections.observableArrayList(vm -> new Observable[]{vm.validProperty()});
+
+ public JsonStructureViewModel(boolean root, int level, NestedJsonStructure nestedJsonStructure) {
+
+ this.root = root;
+ this.level = level;
+ id = UUID.randomUUID().toString();
+
+ if (nestedJsonStructure != null) {
+
+ name.set(nestedJsonStructure.name());
+ type.set(nestedJsonStructure.typeDonnee());
+ format.set(nestedJsonStructure.format());
+ delimitor.set(nestedJsonStructure.delimiteur());
+ taille.set(nestedJsonStructure.taille());
+ required.set(nestedJsonStructure.isRequired());
+ collection.set(nestedJsonStructure.isCollection());
+
+ nestedJsonStructure.children().forEach(nS -> {
+ children.add(new JsonStructureViewModel(false, level + 1, nS));
+ });
+ }
+ }
+
+ public void init() {
+
+ hasChild.bind(Bindings.createBooleanBinding(() -> isObjectType(), type));
+ hasDateType.bind(Bindings.createBooleanBinding(() -> isDateType(), type));
+ hasSquareBracket.bind(Bindings.createBooleanBinding(() -> !isObjectType() && collection.get(), type, collection));
+ hasObjectSquareBracket.bind(Bindings.createBooleanBinding(() -> isObjectType() && collection.get(), type, collection));
+ if (root) {
+ this.required.set(true);
+ this.collection.set(true);
+ this.type.set(TypeDonnee.OBJET);
+ }
+
+ validName.bind(Bindings.createBooleanBinding(() -> name.get() != null && name.get().length() > 0, name));
+ validType.bind(Bindings.createBooleanBinding(() -> type.get() != null && (!root || type.get().equals(TypeDonnee.OBJET)), type));
+ validFormat.bind(Bindings.createBooleanBinding(() -> !TypeDonnee.DATE.equals(type.get()) || (format.get() != null && format.get().length() > 0), type, format));
+ validDelimitor.bind(Bindings.createBooleanBinding(() -> !TypeDonnee.DATE.equals(type.get()) || (delimitor.get() != null), type, delimitor));
+ validTaille.bind(Bindings.createBooleanBinding(() -> TypeDonnee.OBJET.equals(type.get()) || taille.get() > 0, type, taille));
+
+ valid.bind(Bindings.createBooleanBinding(() -> (validName.get() && validType.get() && validFormat.get() && validDelimitor.get() && validTaille.get()
+ && (!TypeDonnee.OBJET.equals(type.get()) || (!children.isEmpty() && children.stream().map(c -> c.validProperty()).allMatch(c -> c.get())))),
+ validName, validType, validFormat, validDelimitor, validTaille, type, children)
+ );
+ }
+
+ public NestedJsonStructure nestedJsonStructure() {
+ return new DefaultNestedJsonStructure(this);
+ }
+
+ public void addNewChild() {
+ JsonStructureViewModel newChild = new JsonStructureViewModel(false, level + 1, null);
+ children.add(newChild);
+ }
+
+ public void removeChild(String id) {
+ children.removeIf(item -> item.id == id);
+ }
+
+ public void removeAllChild() {
+ children.removeIf(item -> true);
+ }
+
+ public ObservableList<JsonStructureViewModel> getChildren() {
+ return children;
+ }
+
+ public StringProperty nameProperty() {
+ return name;
+ }
+
+ public ObjectProperty<TypeDonnee> typeProperty() {
+ return type;
+ }
+
+ public IntegerProperty tailleProperty() {
+ return taille;
+ }
+
+ public StringProperty formatProperty() {
+ return format;
+ }
+
+ public ObjectProperty<Delimiteur> delimitorProperty() {
+ return delimitor;
+ }
+
+ public BooleanProperty requiredProperty() {
+ return required;
+ }
+
+ public BooleanProperty collectionProperty() {
+ return collection;
+ }
+
+ public BooleanProperty hasChildProperty() {
+ return hasChild;
+ }
+
+ public BooleanProperty hasDateTypeProperty() {
+ return hasDateType;
+ }
+
+ public BooleanProperty hasSquareBracketProperty() {
+ return hasSquareBracket;
+ }
+
+ public BooleanProperty hasObjectSquareBracketProperty() {
+ return hasObjectSquareBracket;
+ }
+
+ public BooleanProperty validProperty() {
+ return valid;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public boolean isRoot() {
+ return root;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ private boolean isDateType() {
+ return type.get() != null && type.get() == TypeDonnee.DATE;
+ }
+
+ private boolean isObjectType() {
+ return type.get() != null && type.get() == TypeDonnee.OBJET;
+ }
+}
--
Gitblit v1.10.0