Skip to content

Commit

Permalink
Merge pull request #58 from itesla/itools_sort_themes
Browse files Browse the repository at this point in the history
Sort tool themes by alphabetical order
  • Loading branch information
geofjamg committed Sep 14, 2016
2 parents c4dfa89 + cdfb799 commit 652b2e0
Showing 1 changed file with 9 additions and 27 deletions.
36 changes: 9 additions & 27 deletions commons/src/main/java/eu/itesla_project/commons/tools/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,20 @@
*/
package eu.itesla_project.commons.tools;

import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.ServiceLoader;
import java.util.*;
import java.util.stream.Collectors;

import com.google.common.collect.TreeMultimap;
import org.apache.commons.cli.*;

/**
*
* @author Geoffroy Jamgotchian <geoffroy.jamgotchian at rte-france.com>
* @author Mathieu Bague <mathieu.bague@rte-france.com>
*/
public class Main {

Expand All @@ -43,22 +36,11 @@ private static void printUsage() {
.filter(t -> !t.getCommand().isHidden()).collect(Collectors.toList());

// group commands by theme
Multimap<String, Tool> toolsByTheme = Multimaps.index(allTools, new Function<Tool, String>() {
@Override
public String apply(Tool tool) {
return tool.getCommand().getTheme();
}
});

for (Map.Entry<String, Collection<Tool>> entry : toolsByTheme.asMap().entrySet()) {
Map<String, Collection<Tool>> toolsByTheme = new TreeMap<>(Multimaps.index(allTools, tool -> tool.getCommand().getTheme()).asMap());
for (Map.Entry<String, Collection<Tool>> entry : toolsByTheme.entrySet()) {
String theme = entry.getKey();
List<Tool> tools = new ArrayList<>(entry.getValue());
Collections.sort(tools, new Comparator<Tool>() {
@Override
public int compare(Tool t1, Tool t2) {
return t1.getCommand().getName().compareTo(t2.getCommand().getName());
}
});
Collections.sort(tools, (t1, t2) -> t1.getCommand().getName().compareTo(t2.getCommand().getName()));
usage.append(theme != null ? theme : "Others").append(":\n");
for (Tool tool : tools) {
usage.append(String.format(" %-40s %s", tool.getCommand().getName(), tool.getCommand().getDescription())).append("\n");
Expand All @@ -72,9 +54,9 @@ public int compare(Tool t1, Tool t2) {

private static Options getOptionsWithHelp(Options options) {
Options optionsWithHelp = new Options();
options.getOptions().forEach(o -> optionsWithHelp.addOption((Option) o));
options.getOptions().forEach(optionsWithHelp::addOption);
optionsWithHelp.addOption(Option.builder().longOpt("help")
.desc("display the help and quit)")
.desc("display the help and quit")
.build());
return optionsWithHelp;
}
Expand Down Expand Up @@ -105,7 +87,7 @@ public static void main(String[] args) throws IOException {
}

try {
CommandLineParser parser = new PosixParser();
CommandLineParser parser = new DefaultParser();
CommandLine line = parser.parse(getOptionsWithHelp(tool.getCommand().getOptions()), Arrays.copyOfRange(args, 1, args.length));
if (line.hasOption("help")) {
printCommandUsage(tool.getCommand());
Expand Down

0 comments on commit 652b2e0

Please sign in to comment.