Mercurial > repos > timpalpant > java_genomics_toolkit
comparison src/edu/unc/genomics/CommandLineTool.java @ 2:e16016635b2a
Uploaded
author | timpalpant |
---|---|
date | Mon, 13 Feb 2012 22:12:06 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1:a54db233ee3d | 2:e16016635b2a |
---|---|
1 package edu.unc.genomics; | |
2 | |
3 import java.io.IOException; | |
4 | |
5 import com.beust.jcommander.JCommander; | |
6 import com.beust.jcommander.ParameterException; | |
7 | |
8 /** | |
9 * A command-line script | |
10 * @author timpalpant | |
11 * | |
12 */ | |
13 public abstract class CommandLineTool { | |
14 | |
15 /** | |
16 * JCommander command-line argument parser | |
17 */ | |
18 private final JCommander jc = new JCommander(this); | |
19 | |
20 public CommandLineTool() { | |
21 // Add factories for parsing Paths, Assemblies, IntervalFiles, and WigFiles | |
22 jc.addConverterFactory(new PathFactory()); | |
23 jc.addConverterFactory(new AssemblyFactory()); | |
24 jc.addConverterFactory(new IntervalFileFactory()); | |
25 jc.addConverterFactory(new WigFileFactory()); | |
26 | |
27 // Set the program name to be the class name | |
28 jc.setProgramName(this.getClass().getSimpleName()); | |
29 } | |
30 | |
31 /** | |
32 * The default bite-size to use for applications that process files in chunks | |
33 */ | |
34 public static final int DEFAULT_CHUNK_SIZE = 500_000; | |
35 | |
36 /** | |
37 * Do the main computation of this tool | |
38 * @throws IOException | |
39 */ | |
40 public abstract void run() throws IOException; | |
41 | |
42 /** | |
43 * Parse command-line arguments and run the tool | |
44 * Exit on parameter exceptions | |
45 * @param args | |
46 */ | |
47 public void instanceMain(String[] args) throws CommandLineToolException { | |
48 try { | |
49 toolRunnerMain(args); | |
50 } catch (ParameterException e) { | |
51 System.err.println(e.getMessage()); | |
52 jc.usage(); | |
53 System.exit(-1); | |
54 } | |
55 } | |
56 | |
57 /** | |
58 * Parse command-line arguments and run the tool | |
59 * @param args | |
60 * @throws ParameterException if there are invalid/missing parameters | |
61 * @throws CommandLineToolException if an exception occurs while running the tool | |
62 */ | |
63 public void toolRunnerMain(String[] args) throws ParameterException, CommandLineToolException { | |
64 jc.parse(args); | |
65 | |
66 try { | |
67 run(); | |
68 } catch (IOException e) { | |
69 e.printStackTrace(); | |
70 throw new CommandLineToolException("IO error while running tool"); | |
71 } | |
72 } | |
73 } |