diff --git a/specification/src/main/java/com/iluwatar/specification/app/App.java b/specification/src/main/java/com/iluwatar/specification/app/App.java index 00b371814..8ca7283c9 100644 --- a/specification/src/main/java/com/iluwatar/specification/app/App.java +++ b/specification/src/main/java/com/iluwatar/specification/app/App.java @@ -23,41 +23,44 @@ package com.iluwatar.specification.app; -import com.iluwatar.specification.creature.*; +import com.iluwatar.specification.creature.Creature; +import com.iluwatar.specification.creature.Dragon; +import com.iluwatar.specification.creature.Goblin; +import com.iluwatar.specification.creature.KillerBee; +import com.iluwatar.specification.creature.Octopus; +import com.iluwatar.specification.creature.Shark; +import com.iluwatar.specification.creature.Troll; import com.iluwatar.specification.property.Color; import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.selector.ColorSelector; import com.iluwatar.specification.selector.MovementSelector; +import java.util.List; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.List; -import java.util.stream.Collectors; - /** - * - * The central idea of the Specification pattern is to separate the statement of how to match a + *

The central idea of the Specification pattern is to separate the statement of how to match a * candidate, from the candidate object that it is matched against. As well as its usefulness in - * selection, it is also valuable for validation and for building to order. - *

- * In this example we have a pool of creatures with different properties. We then have defined - * separate selection rules (Specifications) that we apply to the collection and as output receive - * only the creatures that match the selection criteria. - *

- * http://martinfowler.com/apsupp/spec.pdf + * selection, it is also valuable for validation and for building to order.

* + *

In this example we have a pool of creatures with different properties. We then have defined + * separate selection rules (Specifications) that we apply to the collection and as output receive + * only the creatures that match the selection criteria.

+ * + *

http://martinfowler.com/apsupp/spec.pdf

*/ public class App { private static final Logger LOGGER = LoggerFactory.getLogger(App.class); /** - * Program entry point + * Program entry point. */ public static void main(String[] args) { // initialize creatures list - List creatures = - List.of(new Goblin(), new Octopus(), new Dragon(), new Shark(), new Troll(), new KillerBee()); + List creatures = List.of(new Goblin(), new Octopus(), new Dragon(), new Shark(), + new Troll(), new KillerBee()); // find all walking creatures LOGGER.info("Find all walking creatures"); List walkingCreatures = diff --git a/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java b/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java index 566885560..de7a41417 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/AbstractCreature.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * Base class for concrete creatures. - * */ public abstract class AbstractCreature implements Creature { @@ -40,7 +38,7 @@ public abstract class AbstractCreature implements Creature { private Color color; /** - * Constructor + * Constructor. */ public AbstractCreature(String name, Size size, Movement movement, Color color) { this.name = name; diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Creature.java b/specification/src/main/java/com/iluwatar/specification/creature/Creature.java index c999f546d..3f8ccdfdb 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Creature.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Creature.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * Creature interface. - * */ public interface Creature { diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java b/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java index 833b8522b..d4f5a7f23 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Dragon.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * Dragon creature. - * */ public class Dragon extends AbstractCreature { diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java b/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java index 0153e21fe..0b145b737 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Goblin.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * Goblin creature. - * */ public class Goblin extends AbstractCreature { diff --git a/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java b/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java index 04c416b7a..77f32c9f4 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/KillerBee.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * KillerBee creature. - * */ public class KillerBee extends AbstractCreature { diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java b/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java index bb2c5718b..6958f7fbd 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Octopus.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * Octopus creature. - * */ public class Octopus extends AbstractCreature { diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Shark.java b/specification/src/main/java/com/iluwatar/specification/creature/Shark.java index 56ec1651a..b9e161da4 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Shark.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Shark.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * Shark creature. - * */ public class Shark extends AbstractCreature { diff --git a/specification/src/main/java/com/iluwatar/specification/creature/Troll.java b/specification/src/main/java/com/iluwatar/specification/creature/Troll.java index 1d6a79bb8..3f416bdd1 100644 --- a/specification/src/main/java/com/iluwatar/specification/creature/Troll.java +++ b/specification/src/main/java/com/iluwatar/specification/creature/Troll.java @@ -28,9 +28,7 @@ import com.iluwatar.specification.property.Movement; import com.iluwatar.specification.property.Size; /** - * * Troll creature. - * */ public class Troll extends AbstractCreature { diff --git a/specification/src/main/java/com/iluwatar/specification/property/Color.java b/specification/src/main/java/com/iluwatar/specification/property/Color.java index 9f64e1b77..00f7007ff 100644 --- a/specification/src/main/java/com/iluwatar/specification/property/Color.java +++ b/specification/src/main/java/com/iluwatar/specification/property/Color.java @@ -24,9 +24,7 @@ package com.iluwatar.specification.property; /** - * - * Color property. - * + *

Color property.

*/ public enum Color { diff --git a/specification/src/main/java/com/iluwatar/specification/property/Movement.java b/specification/src/main/java/com/iluwatar/specification/property/Movement.java index 5bf0863e4..f76b0584f 100644 --- a/specification/src/main/java/com/iluwatar/specification/property/Movement.java +++ b/specification/src/main/java/com/iluwatar/specification/property/Movement.java @@ -24,9 +24,7 @@ package com.iluwatar.specification.property; /** - * * Movement property. - * */ public enum Movement { diff --git a/specification/src/main/java/com/iluwatar/specification/property/Size.java b/specification/src/main/java/com/iluwatar/specification/property/Size.java index a4a09e96c..27bc48024 100644 --- a/specification/src/main/java/com/iluwatar/specification/property/Size.java +++ b/specification/src/main/java/com/iluwatar/specification/property/Size.java @@ -24,9 +24,7 @@ package com.iluwatar.specification.property; /** - * * Size property. - * */ public enum Size { diff --git a/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java b/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java index 75e922bff..93caf612f 100644 --- a/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java +++ b/specification/src/main/java/com/iluwatar/specification/selector/ColorSelector.java @@ -23,26 +23,23 @@ package com.iluwatar.specification.selector; -import java.util.function.Predicate; - import com.iluwatar.specification.creature.Creature; import com.iluwatar.specification.property.Color; +import java.util.function.Predicate; /** - * * Color selector. - * */ public class ColorSelector implements Predicate { - private final Color c; + private final Color color; public ColorSelector(Color c) { - this.c = c; + this.color = c; } @Override public boolean test(Creature t) { - return t.getColor().equals(c); + return t.getColor().equals(color); } } diff --git a/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java b/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java index 19613dfed..1818058c1 100644 --- a/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java +++ b/specification/src/main/java/com/iluwatar/specification/selector/MovementSelector.java @@ -23,26 +23,23 @@ package com.iluwatar.specification.selector; -import java.util.function.Predicate; - import com.iluwatar.specification.creature.Creature; import com.iluwatar.specification.property.Movement; +import java.util.function.Predicate; /** - * * Movement selector. - * */ public class MovementSelector implements Predicate { - private final Movement m; + private final Movement movement; public MovementSelector(Movement m) { - this.m = m; + this.movement = m; } @Override public boolean test(Creature t) { - return t.getMovement().equals(m); + return t.getMovement().equals(movement); } } diff --git a/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java b/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java index 1d561e95c..a997c0342 100644 --- a/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java +++ b/specification/src/main/java/com/iluwatar/specification/selector/SizeSelector.java @@ -23,26 +23,23 @@ package com.iluwatar.specification.selector; -import java.util.function.Predicate; - import com.iluwatar.specification.creature.Creature; import com.iluwatar.specification.property.Size; +import java.util.function.Predicate; /** - * * Size selector. - * */ public class SizeSelector implements Predicate { - private final Size s; + private final Size size; public SizeSelector(Size s) { - this.s = s; + this.size = s; } @Override public boolean test(Creature t) { - return t.getSize().equals(s); + return t.getSize().equals(size); } }