From d23a44516bc70bd5808d5e6a8300034b51bc8e32 Mon Sep 17 00:00:00 2001 From: Michael Schnell Date: Fri, 31 May 2019 08:32:02 +0200 Subject: [PATCH] Removed old functional interface and added new isValid method --- .../shared/app/SharedEntityIdFactory.java | 27 ++++++++++++++----- .../shared/domain/PersonId.java | 22 ++++++++++++--- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/fuin/dddcqrs4jexample/shared/app/SharedEntityIdFactory.java b/src/main/java/org/fuin/dddcqrs4jexample/shared/app/SharedEntityIdFactory.java index 4b15be8..381ff35 100644 --- a/src/main/java/org/fuin/dddcqrs4jexample/shared/app/SharedEntityIdFactory.java +++ b/src/main/java/org/fuin/dddcqrs4jexample/shared/app/SharedEntityIdFactory.java @@ -19,10 +19,10 @@ package org.fuin.dddcqrs4jexample.shared.app; import java.util.HashMap; import java.util.Map; +import java.util.function.Function; import org.fuin.ddd4j.ddd.EntityId; import org.fuin.ddd4j.ddd.EntityIdFactory; -import org.fuin.ddd4j.ddd.SingleEntityIdFactory; import org.fuin.dddcqrs4jexample.shared.domain.PersonId; /** @@ -30,29 +30,42 @@ import org.fuin.dddcqrs4jexample.shared.domain.PersonId; */ public final class SharedEntityIdFactory implements EntityIdFactory { - private Map map; + private Map> valueOfMap; + + private Map> isValidMap; /** * Default constructor. */ public SharedEntityIdFactory() { super(); - map = new HashMap(); - map.put(PersonId.TYPE.asString(), PersonId::valueOf); + valueOfMap = new HashMap<>(); + isValidMap = new HashMap<>(); + valueOfMap.put(PersonId.TYPE.asString(), PersonId::valueOf); + isValidMap.put(PersonId.TYPE.asString(), PersonId::isValid); } @Override public EntityId createEntityId(final String type, final String id) { - final SingleEntityIdFactory factory = map.get(type); + final Function factory = valueOfMap.get(type); if (factory == null) { throw new IllegalArgumentException("Unknown type: " + type); } - return factory.createEntityId(id); + return factory.apply(id); } @Override public boolean containsType(final String type) { - return map.containsKey(type); + return valueOfMap.containsKey(type); + } + + @Override + public boolean isValid(String type, String id) { + final Function func = isValidMap.get(type); + if (func == null) { + return false; + } + return func.apply(id); } } diff --git a/src/main/java/org/fuin/dddcqrs4jexample/shared/domain/PersonId.java b/src/main/java/org/fuin/dddcqrs4jexample/shared/domain/PersonId.java index a40d447..1a9de17 100644 --- a/src/main/java/org/fuin/dddcqrs4jexample/shared/domain/PersonId.java +++ b/src/main/java/org/fuin/dddcqrs4jexample/shared/domain/PersonId.java @@ -55,17 +55,33 @@ public final class PersonId extends AggregateRootUuid { /** * Constructor with all data. * - * @param value Persistent value. + * @param value + * Persistent value. */ public PersonId(@NotNull final UUID value) { super(PersonId.TYPE, value); } + /** + * Verifies if the given string can be converted into a Person ID. + * + * @param value + * String with valid UUID string. A null value ris also valid. + * + * @return {@literal true} if the string is a valid UUID. + */ + public static boolean isValid(final String value) { + if (value == null) { + return true; + } + return AggregateRootUuid.isValid(value); + } + /** * Parses a given string and returns a new instance of PersonId. * - * @param value String with valid UUID to convert. A null value - * returns null. + * @param value + * String with valid UUID to convert. A null value returns null. * * @return Converted value. */