* Hexagonal architecture: a quick and practical example

* BAEL 3486

* BAEL-3460

Airline introduction

* BAEL-3460

* BAEL-3460

Airline introduction
BAEL-3460

* BAEL-3460

* Formatting
This commit is contained in:
mguarnaccia 2020-01-27 16:30:53 +01:00 committed by Sam Millington
parent 33849011c8
commit 0648ba53ab
4 changed files with 124 additions and 0 deletions

View File

@ -58,6 +58,11 @@
<artifactId>javase</artifactId>
<version>${qrgen.version}</version>
</dependency>
<dependency>
<groupId>com.github.rvesse</groupId>
<artifactId>airline</artifactId>
<version>${airline.version}</version>
</dependency>
<dependency>
<groupId>org.cactoos</groupId>
<artifactId>cactoos</artifactId>
@ -82,5 +87,6 @@
<qrgen.version>2.6.0</qrgen.version>
<cactoos.version>0.43</cactoos.version>
<airline.version>2.7.2</airline.version>
</properties>
</project>

View File

@ -0,0 +1,17 @@
package com.baeldung.airline;
import com.github.rvesse.airline.annotations.Cli;
import com.github.rvesse.airline.help.Help;
@Cli(name = "baeldung-cli",
description = "Baeldung Airline Tutorial",
defaultCommand = Help.class,
commands = { DatabaseSetupCommand.class, LoggingCommand.class, Help.class })
public class CommandLine {
public static void main(String[] args) {
com.github.rvesse.airline.Cli<Runnable> cli = new com.github.rvesse.airline.Cli<>(CommandLine.class);
Runnable cmd = cli.parse(args);
cmd.run();
}
}

View File

@ -0,0 +1,77 @@
package com.baeldung.airline;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import com.github.rvesse.airline.HelpOption;
import com.github.rvesse.airline.annotations.Command;
import com.github.rvesse.airline.annotations.Option;
import com.github.rvesse.airline.annotations.OptionType;
import com.github.rvesse.airline.annotations.restrictions.AllowedRawValues;
import com.github.rvesse.airline.annotations.restrictions.MutuallyExclusiveWith;
import com.github.rvesse.airline.annotations.restrictions.Pattern;
import com.github.rvesse.airline.annotations.restrictions.RequiredOnlyIf;
@Command(name = "setup-db", description = "Setup our database")
public class DatabaseSetupCommand implements Runnable {
@Inject
private HelpOption<DatabaseSetupCommand> help;
@Option(type = OptionType.COMMAND,
name = {"-d", "--database"},
description = "Type of RDBMS.",
title = "RDBMS type: mysql|postgresql|mongodb")
@AllowedRawValues(allowedValues = { "mysql", "postgres", "mongodb" })
protected String rdbmsMode = "mysql";
@Option(type = OptionType.COMMAND,
name = {"--rdbms:url", "--url"},
description = "URL to use for connection to RDBMS.",
title = "RDBMS URL")
@MutuallyExclusiveWith(tag="mode")
@Pattern(pattern="^(http://.*):(d*)(.*)u=(.*)&p=(.*)")
protected String rdbmsUrl = "";
@Option(type = OptionType.COMMAND,
name = {"--rdbms:host", "--host"},
description = "Host to use for connection to RDBMS.",
title = "RDBMS host")
@MutuallyExclusiveWith(tag="mode")
protected String rdbmsHost = "";
@RequiredOnlyIf(names={"--rdbms:host", "--host"})
@Option(type = OptionType.COMMAND,
name = {"--rdbms:user", "-u", "--user"},
description = "User for login to RDBMS.",
title = "RDBMS user")
protected String rdbmsUser;
@RequiredOnlyIf(names={"--rdbms:host", "--host"})
@Option(type = OptionType.COMMAND,
name = {"--rdbms:password", "--password"},
description = "Password for login to RDBMS.",
title = "RDBMS password")
protected String rdbmsPassword;
@Option(type = OptionType.COMMAND,
name = {"--driver", "--jars"},
description = "List of drivers",
title = "--driver <PATH_TO_YOUR_JAR> --driver <PATH_TO_YOUR_JAR>")
protected List<String> jars = new ArrayList<>();
@Override
public void run() {
//skipping store our choices...
if (!help.showHelpIfRequested()) {
if(!"".equals(rdbmsHost)) {
System.out.println("Connecting to database host: " + rdbmsHost);
System.out.println("Credential: " + rdbmsUser + " / " + rdbmsPassword);
} else {
System.out.println("Connecting to database url: " + rdbmsUrl);
}
System.out.println(jars.toString());
}
}
}

View File

@ -0,0 +1,24 @@
package com.baeldung.airline;
import javax.inject.Inject;
import com.github.rvesse.airline.HelpOption;
import com.github.rvesse.airline.annotations.Command;
import com.github.rvesse.airline.annotations.Option;
@Command(name = "setup-log", description = "Setup our log")
public class LoggingCommand implements Runnable {
@Inject
private HelpOption<LoggingCommand> help;
@Option(name = { "-v", "--verbose" }, description = "Set log verbosity on/off")
private boolean verbose = false;
@Override
public void run() {
//skipping store user choice
if (!help.showHelpIfRequested())
System.out.println("Verbosity: " + verbose);
}
}