RegionChooserCommandLineInterface.java 1.81 KB
Newer Older
Eric Duminil's avatar
Eric Duminil committed
1
2
3
package eu.simstadt.regionchooser;

import java.nio.file.Path;
Eric Duminil's avatar
Eric Duminil committed
4
import java.util.List;
Eric Duminil's avatar
Eric Duminil committed
5
import java.util.Scanner;
Eric Duminil's avatar
Eric Duminil committed
6
7
8
9
import java.util.concurrent.Callable;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;
Eric Duminil's avatar
Eric Duminil committed
10
11


Eric Duminil's avatar
Eric Duminil committed
12
13
@Command(name = "region_chooser", mixinStandardHelpOptions = true, version = "regionChooser x.x", description = "Extracts a region from one or more citygmls.")
class RegionChooserCommandLineInterface implements Callable<Integer>
Eric Duminil's avatar
Eric Duminil committed
14
{
Eric Duminil's avatar
Eric Duminil committed
15
16
	@Parameters(index = "0", description = "SRS Name : 'EPSG:31467' or just 31467")
	String srsName;
Eric Duminil's avatar
Eric Duminil committed
17

Eric Duminil's avatar
Eric Duminil committed
18
19
	@Parameters(index = "1", description = "Output file : output.gml")
	Path outputCityGML;
Eric Duminil's avatar
Eric Duminil committed
20

Eric Duminil's avatar
Eric Duminil committed
21
22
	@Parameters(index = "2..*", arity = "1..*", description = "The citygml files to extract from : input1.gml input2.gml")
	List<Path> citygmls;
Eric Duminil's avatar
Eric Duminil committed
23

Eric Duminil's avatar
Eric Duminil committed
24
25
	@Override
	public Integer call() throws Exception { // your business logic goes here...
Eric Duminil's avatar
Eric Duminil committed
26
27
28
		System.out.println("Should extract from :");
		for (Path input_citygml : citygmls) {
			System.out.println("  " + input_citygml);
Eric Duminil's avatar
Eric Duminil committed
29
		}
Eric Duminil's avatar
Eric Duminil committed
30
31
32
33
34
		System.out.print("And write to : ");
		System.out.println(outputCityGML);
		System.out.print("in ");
		System.out.println(srsName + " coordinates.");

Eric Duminil's avatar
Eric Duminil committed
35
36
37
38
39
40
41
		if (System.in.available() == 0) {
			System.out.println("OH NOEs, NO INPUT!");
		} else {
			System.out.println("Here's standard input:");
			System.out.println(getInput());
			System.out.println("Done");
		}
Eric Duminil's avatar
Eric Duminil committed
42
		return 0;
Eric Duminil's avatar
Eric Duminil committed
43
44
	}

Eric Duminil's avatar
Eric Duminil committed
45
46
47
48
49
	private static String getInput() {
		Scanner myObj = new Scanner(System.in);
		return myObj.nextLine();
	}

Eric Duminil's avatar
Eric Duminil committed
50
51
52
53
54
	// this example implements Callable, so parsing, error handling and handling user
	// requests for usage help or version help can be done with one line of code.
	public static void main(String... args) {
		int exitCode = new CommandLine(new RegionChooserCommandLineInterface()).execute(args);
		System.exit(exitCode);
Eric Duminil's avatar
Eric Duminil committed
55
	}
Eric Duminil's avatar
Eric Duminil committed
56
}