Bael 3460 (#8550)
* 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:
parent
33849011c8
commit
0648ba53ab
|
@ -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>
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue