entry : documentProperties.entrySet()) {
- String key = entry.getKey();
- Object value = entry.getValue();
-
- // Append key-value pair
- builder.append("[").append(key).append(" : ").append(value).append("]");
-
- // Add comma if not last property
- if (++currentPropertyIndex < numProperties) {
- builder.append(", ");
- }
- }
-
- builder.append("]");
- return builder.toString();
- }
-}
diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java
deleted file mode 100644
index 607b4a7f7913..000000000000
--- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt).
- *
- * The MIT License
- * Copyright © 2014-2022 Ilkka Seppälä
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-package com.iluwatar.abstractdocument;
-
-import com.iluwatar.abstractdocument.domain.Car;
-import com.iluwatar.abstractdocument.domain.enums.Property;
-import java.util.List;
-import java.util.Map;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * The Abstract Document pattern enables handling additional, non-static properties. This pattern
- * uses concept of traits to enable type safety and separate properties of different classes into
- * set of interfaces.
- *
- * In Abstract Document pattern,({@link AbstractDocument}) fully implements {@link Document})
- * interface. Traits are then defined to enable access to properties in usual, static way.
- */
-@Slf4j
-public class App {
-
- /**
- * Program entry point.
- *
- * @param args command line args
- */
- public static void main(String[] args) {
- LOGGER.info("Constructing parts and car");
-
- var wheelProperties =
- Map.of(
- Property.TYPE.toString(), "wheel",
- Property.MODEL.toString(), "15C",
- Property.PRICE.toString(), 100L);
-
- var doorProperties =
- Map.of(
- Property.TYPE.toString(), "door",
- Property.MODEL.toString(), "Lambo",
- Property.PRICE.toString(), 300L);
-
- var carProperties =
- Map.of(
- Property.MODEL.toString(),
- "300SL",
- Property.PRICE.toString(),
- 10000L,
- Property.PARTS.toString(),
- List.of(wheelProperties, doorProperties));
-
- var car = new Car(carProperties);
-
- LOGGER.info("Here is our car:");
- LOGGER.info("-> model: {}", car.getModel().orElseThrow());
- LOGGER.info("-> price: {}", car.getPrice().orElseThrow());
- LOGGER.info("-> parts: ");
- car.getParts()
- .forEach(
- p ->
- LOGGER.info(
- "\t{}/{}/{}",
- p.getType().orElse(null),
- p.getModel().orElse(null),
- p.getPrice().orElse(null)));
- }
-}
diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java
deleted file mode 100644
index 79a51b610337..000000000000
--- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt).
- *
- * The MIT License
- * Copyright © 2014-2022 Ilkka Seppälä
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-package com.iluwatar.abstractdocument;
-
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Stream;
-
-/** Document interface. */
-public interface Document {
-
- /**
- * Puts the value related to the key.
- *
- * @param key element key
- * @param value element value
- * @return Void
- */
- Void put(String key, Object value);
-
- /**
- * Gets the value for the key.
- *
- * @param key element key
- * @return value or null
- */
- Object get(String key);
-
- /**
- * Gets the stream of child documents.
- *
- * @param key element key
- * @param constructor constructor of child class
- * @return child documents
- */
- Stream children(String key, Function