From aedebe2a0ebf75e8621bd4829e92a00960b3d372 Mon Sep 17 00:00:00 2001 From: jetoile Date: Thu, 9 Nov 2017 18:24:57 +0100 Subject: [PATCH] refactor code --- .../java/fr/jetoile/hadoopunit/Component.java | 11 +++++++ .../jetoile/hadoopunit/HadoopBootstrap.java | 32 +++++++++---------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/Component.java b/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/Component.java index f1e3b8aa..f14fe244 100644 --- a/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/Component.java +++ b/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/Component.java @@ -13,6 +13,8 @@ */ package fr.jetoile.hadoopunit; +import java.util.Arrays; + /** * List of component which can be bootstrap. * Warning : this list should be sorted @@ -57,5 +59,14 @@ public String getMainClass() { public String getArtifactKey() { return artifactKey; } + + public static boolean isComponent(String key) { + return Arrays.stream(values()) + .anyMatch(enumValue -> enumValue.key.equalsIgnoreCase(key)); + } + + public static int getOrdinal(String key) { + return valueOf(key).ordinal(); + } } diff --git a/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/HadoopBootstrap.java b/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/HadoopBootstrap.java index ed1a2310..1856df6d 100644 --- a/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/HadoopBootstrap.java +++ b/hadoop-unit-commons/src/main/java/fr/jetoile/hadoopunit/HadoopBootstrap.java @@ -19,6 +19,9 @@ import org.slf4j.LoggerFactory; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import static java.util.stream.Collectors.toList; import static org.fusesource.jansi.Ansi.Color.GREEN; @@ -40,18 +43,16 @@ public enum HadoopBootstrap { HadoopBootstrap() { commands.clear(); commandLoader.reload(); - Iterator commandsIterator = commandLoader.iterator(); - while (commandsIterator.hasNext()) { - Bootstrap command = commandsIterator.next(); - commands.put(command.getName(), command); - } + Iterable iterable = commandLoader::iterator; + commands = StreamSupport.stream(iterable.spliterator(), false) + .collect(Collectors.toMap(Bootstrap::getName, Function.identity())); - Arrays.asList(Component.values()).stream().forEach(c -> { - if (commands.containsKey(c.name())) { - componentsToStart.add(commands.get(c.name())); - } - }); + componentsToStart = commands.entrySet().stream() + .filter(entry -> Component.isComponent(entry.getKey())) + .sorted(Comparator.comparingInt(e -> Component.getOrdinal(e.getKey()))) + .map(Map.Entry::getValue) + .collect(toList()); componentsToStop = this.componentsToStart.stream().collect(toList()); Collections.reverse(componentsToStop); @@ -98,18 +99,15 @@ public HadoopBootstrap add(Component component) throws NotFoundServiceException } private void internalStart(List componentsToStart) { - componentsToStart.stream().forEach(c -> { - startService(c); - }); + componentsToStart.forEach(this::startService); + HadoopUtils.INSTANCE.printBanner(System.out); - componentsToStart.stream().forEach(c -> HadoopUtils.printColorLine(System.out, GREEN, "\t\t - " + c.getName() + " " + c.getProperties())); + componentsToStart.forEach(c -> HadoopUtils.printColorLine(System.out, GREEN, "\t\t - " + c.getName() + " " + c.getProperties())); System.out.println(); } private void internalStop(List componentsToStop) { - componentsToStop.stream().forEach(c -> { - stopService(c); - }); + componentsToStop.forEach(this::stopService); } private void startService(Bootstrap c) {