Example usage for org.apache.commons.cli OptionGroup addOption

List of usage examples for org.apache.commons.cli OptionGroup addOption

Introduction

In this page you can find the example usage for org.apache.commons.cli OptionGroup addOption.

Prototype

public OptionGroup addOption(Option option) 

Source Link

Document

Add the specified Option to this group.

Usage

From source file:org.dcm4che.tool.ihe.modality.Modality.java

@SuppressWarnings("static-access")
private static void addOptions(Options opts) {
    opts.addOption(OptionBuilder.hasArg().withArgName("code-value").withDescription(rb.getString("kos-title"))
            .withLongOpt("kos-title").create());
    opts.addOption(/*from  w  w w.  j av a 2s  .  c o m*/
            OptionBuilder.hasArg().withArgName("file").withDescription(rb.getString("o-file")).create("o"));
    opts.addOption(OptionBuilder.hasArg().withArgName("file").withDescription(rb.getString("code-config"))
            .withLongOpt("code-config").create());
    OptionGroup mpps = new OptionGroup();
    mpps.addOption(OptionBuilder.withDescription(rb.getString("mpps-late")).withLongOpt("mpps-late").create());
    mpps.addOption(OptionBuilder.withDescription(rb.getString("mpps")).withLongOpt("mpps").create());
    opts.addOptionGroup(mpps);
    opts.addOption(OptionBuilder.withDescription(rb.getString("stgcmt")).withLongOpt("stgcmt").create());
    opts.addOption(null, "dc", false, rb.getString("dc"));
    opts.addOption(OptionBuilder.hasArg().withArgName("code-value").withDescription(rb.getString("dc-reason"))
            .withLongOpt("dc-reason").create());
    opts.addOption(OptionBuilder.hasArgs().withArgName("[seq/]attr=value").withValueSeparator('=')
            .withDescription(rb.getString("set")).create("s"));
}

From source file:org.dcm4che.tool.mkkos.MkKOS.java

@SuppressWarnings("static-access")
public static void addOptions(Options opts) {
    opts.addOption(OptionBuilder.hasArg().withArgName("code").withDescription(rb.getString("title"))
            .withLongOpt("title").create());
    opts.addOption(OptionBuilder.hasArg().withArgName("code").withDescription(rb.getString("modifier"))
            .withLongOpt("modifier").create());
    opts.addOption(OptionBuilder.hasArg().withArgName("file|url").withDescription(rb.getString("code-config"))
            .withLongOpt("code-config").create());
    opts.addOption(OptionBuilder.hasArg().withArgName("text").withDescription(rb.getString("desc"))
            .withLongOpt("desc").create());
    opts.addOption(OptionBuilder.hasArg().withArgName("no").withDescription(rb.getString("series-no"))
            .withLongOpt("series-no").create());
    opts.addOption(OptionBuilder.hasArg().withArgName("no").withDescription(rb.getString("inst-no"))
            .withLongOpt("inst-no").create());
    opts.addOption(/*from   w ww  .  ja v  a 2s  . c o  m*/
            OptionBuilder.hasArg().withArgName("file").withDescription(rb.getString("o-file")).create("o"));
    OptionGroup group = new OptionGroup();
    group.addOption(OptionBuilder.withLongOpt("no-fmi").withDescription(rb.getString("no-fmi")).create("F"));
    group.addOption(OptionBuilder.withLongOpt("transfer-syntax").hasArg().withArgName("uid")
            .withDescription(rb.getString("transfer-syntax")).create("t"));
    opts.addOptionGroup(group);
    opts.addOption(OptionBuilder.hasArgs().withArgName("[seq/]attr=value").withValueSeparator('=')
            .withDescription(rb.getString("set")).create("s"));
    opts.addOption(OptionBuilder.hasArg().withArgName("suffix").withDescription(rb.getString("uid-suffix"))
            .withLongOpt("uid-suffix").create(null));
    CLIUtils.addEncodingOptions(opts);
}

From source file:org.dcm4che.tool.xml2dcm.Xml2Dcm.java

@SuppressWarnings("static-access")
private static void addBulkdataOptions(Options opts) {
    OptionGroup blkGroup = new OptionGroup();
    blkGroup.addOption(
            OptionBuilder.withLongOpt("no-bulkdata").withDescription(rb.getString("no-bulkdata")).create("B"));
    blkGroup.addOption(OptionBuilder.withLongOpt("alloc-bulkdata")
            .withDescription(rb.getString("alloc-bulkdata")).create("b"));
    opts.addOptionGroup(blkGroup);/*from   www .j av a2s  . c o  m*/
    opts.addOption(OptionBuilder.withLongOpt("blk-file-dir").hasArg().withArgName("directory")
            .withDescription(rb.getString("blk-file-dir")).create("d"));
    opts.addOption(OptionBuilder.withLongOpt("blk-file-prefix").hasArg().withArgName("prefix")
            .withDescription(rb.getString("blk-file-prefix")).create());
    opts.addOption(OptionBuilder.withLongOpt("blk-file-suffix").hasArg().withArgName("suffix")
            .withDescription(rb.getString("blk-file-suffix")).create());
    opts.addOption("c", "cat-blk-files", false, rb.getString("cat-blk-files"));
    opts.addOption(null, "keep-blk-files", false, rb.getString("keep-blk-files"));
    opts.addOption(OptionBuilder.withLongOpt("blk-spec").hasArg().withArgName("xml-file")
            .withDescription(rb.getString("blk-spec")).create("X"));
}

From source file:org.dcm4che.tool.xml2dcm.Xml2Dcm.java

@SuppressWarnings("static-access")
private static void addFileEncodingOptions(Options opts) {
    opts.addOption(OptionBuilder.withLongOpt("transfer-syntax").hasArg().withArgName("uid")
            .withDescription(rb.getString("transfer-syntax")).create("t"));
    OptionGroup fmiGroup = new OptionGroup();
    fmiGroup.addOption(OptionBuilder.withLongOpt("no-fmi").withDescription(rb.getString("no-fmi")).create("F"));
    fmiGroup.addOption(OptionBuilder.withLongOpt("fmi").withDescription(rb.getString("fmi")).create("f"));
    opts.addOptionGroup(fmiGroup);/*from   w  ww.jav  a2s  .c  o m*/
    CLIUtils.addEncodingOptions(opts);
}

From source file:org.dcm4che2.tool.dcmdir.DcmDir.java

private static CommandLine parse(String[] args) {
    Options opts = new Options();
    OptionGroup cmdOpt = new OptionGroup();
    OptionBuilder.withArgName("dicomdir");
    OptionBuilder.hasArg();/*  ww w  . ja  v  a2 s  .  c o  m*/
    OptionBuilder.withDescription("create new directory file <dicomdir> for DICOM file-set "
            + "specified by file.. or directory.. arguments");
    cmdOpt.addOption(OptionBuilder.create("c"));
    OptionBuilder.withArgName("dicomdir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("read directory file <dicomdir> and dump content to stdout");
    cmdOpt.addOption(OptionBuilder.create("t"));
    OptionBuilder.withArgName("dicomdir");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("add references to specified files to existing directory file " + "<dicomdir>");
    cmdOpt.addOption(OptionBuilder.create("a"));
    OptionBuilder.withArgName("dicomdir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "delete references to specified files from existing directory " + "file <dicomdir>");
    cmdOpt.addOption(OptionBuilder.create("d"));
    OptionBuilder.withArgName("dicomdir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("purge records without file references from directory file " + "<dicomdir>.");
    cmdOpt.addOption(OptionBuilder.create("p"));
    OptionBuilder.withArgName("dicomdir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("compact existing directory file <dicomdir> by removing unused entries");
    cmdOpt.addOption(OptionBuilder.create("z"));
    opts.addOptionGroup(cmdOpt);
    OptionBuilder.withArgName("txtfile");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("specify File-set Descriptor File");
    opts.addOption(OptionBuilder.create("desc"));
    OptionBuilder.withArgName("code");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "Character Set used in File-set Descriptor File" + "(\"ISO_IR 100\" = ISO Latin 1).");
    opts.addOption(OptionBuilder.create("desccs"));
    OptionBuilder.withArgName("id");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("specify File-set ID");
    opts.addOption(OptionBuilder.create("id"));
    OptionBuilder.withArgName("uid");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("specify File-set UID");
    opts.addOption(OptionBuilder.create("uid"));
    OptionBuilder.withArgName("max");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal number of characters per line, by default: 80");
    opts.addOption(OptionBuilder.create("w"));
    OptionBuilder.withArgName("max");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("limit value prompt to <maxlen> characters, by default: 64");
    opts.addOption(OptionBuilder.create("W"));
    opts.addOption("inactive", false, "dump also inactive records.");
    opts.addOption("S", false,
            "encode Sequences with undefined length," + "encode with explicit length by default.");
    opts.addOption("I", false,
            "encode Sequence Items with undefined length," + "encode with explicit length by default.");
    opts.addOption("h", "help", false, "print this message");
    opts.addOption("V", "version", false, "print the version information and exit");
    CommandLine cl = null;
    try {
        cl = new GnuParser().parse(opts, args);
    } catch (ParseException e) {
        exit("dcmdir: " + e.getMessage());
        throw new RuntimeException("unreachable");
    }
    if (cl.hasOption('V')) {
        Package p = DcmDir.class.getPackage();
        System.out.println("dcmdir v" + p.getImplementationVersion());
        System.exit(0);
    }
    if (cl.hasOption('h') || !(cl.hasOption("a") || cl.hasOption("c") || cl.hasOption("d") || cl.hasOption("p")
            || cl.hasOption("t") || cl.hasOption("z"))) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp(USAGE, DESCRIPTION, opts, EXAMPLE);
        System.exit(0);
    }
    return cl;
}

From source file:org.dcm4che2.tool.dcmecho.DcmEcho.java

private static CommandLine parse(String[] args) {
    Options opts = new Options();

    OptionBuilder.withArgName("name");
    OptionBuilder.hasArg();//ww w  . j  av a 2s  .  c  om
    OptionBuilder.withDescription("set device name, use DCMECHO by default");
    opts.addOption(OptionBuilder.create("device"));

    OptionBuilder.withArgName("aet[@host]");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set AET and local address of local Application Entity, use "
            + "device name and pick up any valid local address to " + "bind the socket by default");
    opts.addOption(OptionBuilder.create("L"));

    OptionBuilder.withArgName("username");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "enable User Identity Negotiation with specified username and " + " optional passcode");
    opts.addOption(OptionBuilder.create("username"));

    OptionBuilder.withArgName("passcode");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "optional passcode for User Identity Negotiation, " + "only effective with option -username");
    opts.addOption(OptionBuilder.create("passcode"));

    opts.addOption("uidnegrsp", false,
            "request positive User Identity Negotation response, " + "only effective with option -username");

    OptionBuilder.withArgName("NULL|3DES|AES");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("enable TLS connection without, 3DES or AES encryption");
    opts.addOption(OptionBuilder.create("tls"));

    OptionGroup tlsProtocol = new OptionGroup();
    tlsProtocol.addOption(new Option("tls1", "disable the use of SSLv3 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("ssl3", "disable the use of TLSv1 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("no_tls1", "disable the use of TLSv1 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl3", "disable the use of SSLv3 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl2", "disable the use of SSLv2 for TLS connections"));
    opts.addOptionGroup(tlsProtocol);

    opts.addOption("noclientauth", false, "disable client authentification for TLS");

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("file path or URL of P12 or JKS keystore, resource:tls/test_sys_1.p12 by default");
    opts.addOption(OptionBuilder.create("keystore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for keystore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("keystorepw"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("password for accessing the key in the keystore, keystore password by default");
    opts.addOption(OptionBuilder.create("keypw"));

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("file path or URL of JKS truststore, resource:tls/mesa_certs.jks by default");
    opts.addOption(OptionBuilder.create("truststore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for truststore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("truststorepw"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for TCP connect, no timeout by default");
    opts.addOption(OptionBuilder.create("connectTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("delay in ms for Socket close after sending A-ABORT, 50ms by default");
    opts.addOption(OptionBuilder.create("soclosedelay"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("period in ms to check for outstanding DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("reaper"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("rspTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-ASSOCIATE-AC, 5s by default");
    opts.addOption(OptionBuilder.create("acceptTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-RELEASE-RP, 5s by default");
    opts.addOption(OptionBuilder.create("releaseTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving DIMSE-RQ, 10s by default");
    opts.addOption(OptionBuilder.create("idleTO"));

    OptionBuilder.withArgName("num");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("repeat C-ECHO RQ several times");
    opts.addOption(OptionBuilder.create("repeat"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("delay in ms between repeated C-FIND RQ, immediately after C-FIND RSP by default");
    opts.addOption(OptionBuilder.create("repeatdelay"));

    opts.addOption("reuseassoc", false, "Reuse association for repeated C-ECHO");
    opts.addOption("closeassoc", false, "Close association after each C-ECHO");
    opts.addOption("h", "help", false, "print this message");
    opts.addOption("V", "version", false, "print the version information and exit");
    CommandLine cl = null;
    try {
        cl = new GnuParser().parse(opts, args);
    } catch (ParseException e) {
        exit("dcmecho: " + e.getMessage());
        throw new RuntimeException("unreachable");
    }
    if (cl.hasOption('V')) {
        Package p = DcmEcho.class.getPackage();
        System.out.println("dcmecho v" + p.getImplementationVersion());
        System.exit(0);
    }
    if (cl.hasOption('h') || cl.getArgList().size() != 1) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp(USAGE, DESCRIPTION, opts, EXAMPLE);
        System.exit(0);
    }
    return cl;
}

From source file:org.dcm4che2.tool.dcmgpwl.DcmGPWL.java

private static CommandLine parse(String[] args) {
    Options opts = new Options();

    OptionBuilder.withArgName("name");
    OptionBuilder.hasArg();// w w  w  . j  a  v a2s.co  m
    OptionBuilder.withDescription("set device name, use DCMGPWL by default");
    opts.addOption(OptionBuilder.create("device"));

    OptionBuilder.withArgName("aet[@host]");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set AET and local address of local Application Entity, use "
            + "device name and pick up any valid local address to bind the " + "socket by default");
    opts.addOption(OptionBuilder.create("L"));

    OptionBuilder.withArgName("username");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "enable User Identity Negotiation with specified username and " + " optional passcode");
    opts.addOption(OptionBuilder.create("username"));

    OptionBuilder.withArgName("passcode");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "optional passcode for User Identity Negotiation, " + "only effective with option -username");
    opts.addOption(OptionBuilder.create("passcode"));

    opts.addOption("uidnegrsp", false,
            "request positive User Identity Negotation response, " + "only effective with option -username");

    OptionBuilder.withArgName("NULL|3DES|AES");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("enable TLS connection without, 3DES or AES encryption");
    opts.addOption(OptionBuilder.create("tls"));

    OptionGroup tlsProtocol = new OptionGroup();
    tlsProtocol.addOption(new Option("tls1", "disable the use of SSLv3 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("ssl3", "disable the use of TLSv1 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("no_tls1", "disable the use of TLSv1 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl3", "disable the use of SSLv3 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl2", "disable the use of SSLv2 for TLS connections"));
    opts.addOptionGroup(tlsProtocol);

    opts.addOption("noclientauth", false, "disable client authentification for TLS");

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("file path or URL of P12 or JKS keystore, resource:tls/test_sys_1.p12 by default");
    opts.addOption(OptionBuilder.create("keystore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for keystore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("keystorepw"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("password for accessing the key in the keystore, keystore password by default");
    opts.addOption(OptionBuilder.create("keypw"));

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("file path or URL of JKS truststore, resource:tls/mesa_certs.jks by default");
    opts.addOption(OptionBuilder.create("truststore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for truststore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("truststorepw"));

    opts.addOption("metasop", false, "offer General Purpose Worklist Management Meta SOP Class.");
    opts.addOption("ivrle", false, "offer only Implicit VR Little Endian Transfer Syntax.");
    opts.addOption("fuzzy", false, "negotiate support of fuzzy semantic person name attribute matching.");
    opts.addOption("pdv1", false, "send only one PDV in one P-Data-TF PDU, pack command and data "
            + "PDV in one P-DATA-TF PDU by default.");
    opts.addOption("tcpdelay", false, "set TCP_NODELAY socket option to false, true by default");

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for TCP connect, no timeout by default");
    opts.addOption(OptionBuilder.create("connectTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("delay in ms for Socket close after sending A-ABORT, 50ms by default");
    opts.addOption(OptionBuilder.create("soclosedelay"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("period in ms to check for outstanding DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("reaper"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("rspTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-ASSOCIATE-AC, 5s by default");
    opts.addOption(OptionBuilder.create("acceptTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-RELEASE-RP, 5s by default");
    opts.addOption(OptionBuilder.create("releaseTO"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of received P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("rcvpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of sent P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("sndpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_RCVBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sorcvbuf"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_SNDBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sosndbuf"));

    OptionBuilder.withArgName("status");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("match/set GP-SPS/GP-PPS to specified <status>");
    opts.addOption(OptionBuilder.create("status"));

    OptionBuilder.withArgName("iuid:tuid");
    OptionBuilder.hasArgs(2);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription(
            "modify status of GP-SPS with SOP Instance UID <iuid> " + "using Transaction UID <tuid>.");
    opts.addOption(OptionBuilder.create("action"));

    OptionBuilder.withArgName("iuid");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("create GP-PPS with SOP Instance UID <iuid>.");
    opts.addOption(OptionBuilder.create("createpps"));

    OptionBuilder.withArgName("aet");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("retrieve AET used in SOP references in Output Information"
            + "Sequence in created or updated GP-PPS.");
    opts.addOption(OptionBuilder.create("retrieve"));

    OptionBuilder.withArgName("iuid");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("update GP-PPS with SOP Instance UID <iuid>.");
    opts.addOption(OptionBuilder.create("setpps"));

    OptionBuilder.withArgName("iuid:tuid");
    OptionBuilder.hasArgs(2);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription(
            "reference GP-SPS with SOP Instance UID <iuid> and " + "Transaction UID <tuid> in created GP-PPS.");
    opts.addOption(OptionBuilder.create("refsps"));

    OptionBuilder.withArgName("attr=value");
    OptionBuilder.hasArgs();
    OptionBuilder.withValueSeparator('=');
    OptionBuilder.withDescription("specify matching key or PPS attribute. attr can be specified "
            + "by name or tag value (in hex), e.g. PatientName or 00100010.");
    opts.addOption(OptionBuilder.create("A"));

    OptionBuilder.withArgName("datetime");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("specify matching SPS start datetime (range)");
    opts.addOption(OptionBuilder.create("D"));

    OptionBuilder.withArgName("attr=value");
    OptionBuilder.hasArgs();
    OptionBuilder.withValueSeparator('=');
    OptionBuilder.withDescription("specify matching Referenced Request key or PPS attribute. "
            + "attr can be specified by name or tag value (in hex)");
    opts.addOption(OptionBuilder.create("rqA"));

    OptionBuilder.withArgName("code:scheme:[name]");
    OptionBuilder.hasArgs(3);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription("specify matching Scheduled Workitem Code");
    opts.addOption(OptionBuilder.create("workitem"));

    OptionBuilder.withArgName("code:scheme:[name]");
    OptionBuilder.hasArgs(3);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription("specify matching Scheduled Processing Application Code");
    opts.addOption(OptionBuilder.create("application"));

    OptionBuilder.withArgName("code:scheme:[name]");
    OptionBuilder.hasArgs(3);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription("specify matching Scheduled Station Name Code");
    opts.addOption(OptionBuilder.create("station"));

    OptionBuilder.withArgName("code:scheme:[name]");
    OptionBuilder.hasArgs(3);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription("specify matching Scheduled Station Class Code");
    opts.addOption(OptionBuilder.create("class"));

    OptionBuilder.withArgName("code:scheme:[name]");
    OptionBuilder.hasArgs(3);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription("specify matching Scheduled Station Geographic Location Code");
    opts.addOption(OptionBuilder.create("location"));

    OptionBuilder.withArgName("code:scheme:[name]");
    OptionBuilder.hasArgs(3);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription("specify matching Scheduled Human Performer Code");
    opts.addOption(OptionBuilder.create("performer"));

    OptionBuilder.withArgName("code:scheme:name");
    OptionBuilder.hasArgs(3);
    OptionBuilder.withValueSeparator(':');
    OptionBuilder.withDescription("specify Actual Human Performer Code");
    opts.addOption(OptionBuilder.create("perfcode"));

    OptionBuilder.withArgName("name");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("specify Actual Human Performer Name");
    opts.addOption(OptionBuilder.create("perfname"));

    OptionBuilder.withArgName("name");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("specify Actual Human Performer Organisation");
    opts.addOption(OptionBuilder.create("perforg"));

    OptionBuilder.withArgName("num");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "cancel query after receive of specified number of responses, " + "no cancel by default");
    opts.addOption(OptionBuilder.create("C"));

    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("store query results in DICOM files in directory <dir>.");
    opts.addOption(OptionBuilder.create("o"));

    opts.addOption("lowprior", false, "LOW priority of the C-FIND operation, MEDIUM by default");
    opts.addOption("highprior", false, "HIGH priority of the C-FIND operation, MEDIUM by default");

    opts.addOption("h", "help", false, "print this message");
    opts.addOption("V", "version", false, "print the version information and exit");

    CommandLine cl = null;
    try {
        cl = new GnuParser().parse(opts, args);
    } catch (ParseException e) {
        exit("dcmgpwl: " + e.getMessage());
        throw new RuntimeException("unreachable");
    }
    if (cl.hasOption('V')) {
        Package p = DcmGPWL.class.getPackage();
        System.out.println("dcmgpwl v" + p.getImplementationVersion());
        System.exit(0);
    }
    if (cl.hasOption('h') || cl.getArgList().size() < 1) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp(USAGE, DESCRIPTION, opts, EXAMPLE);
        System.exit(0);
    }

    return cl;
}

From source file:org.dcm4che2.tool.dcmhpqr.DcmHPQR.java

private static CommandLine parse(String[] args) {
    Options opts = new Options();

    OptionBuilder.withArgName("name");
    OptionBuilder.hasArg();/*from   w  w  w  .  j a  va2  s.com*/
    OptionBuilder.withDescription("set device name, use DCMHPQR by default");
    opts.addOption(OptionBuilder.create("device"));

    OptionBuilder.withArgName("aet[@host]");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "set AET and local address of local " + "Application Entity, use device name and pick up any valid "
                    + "local address to bind the socket by default");
    opts.addOption(OptionBuilder.create("L"));

    OptionBuilder.withArgName("username");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "enable User Identity Negotiation with specified username and " + " optional passcode");
    opts.addOption(OptionBuilder.create("username"));

    OptionBuilder.withArgName("passcode");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "optional passcode for User Identity Negotiation, " + "only effective with option -username");
    opts.addOption(OptionBuilder.create("passcode"));

    opts.addOption("uidnegrsp", false,
            "request positive User Identity Negotation response, " + "only effective with option -username");

    OptionBuilder.withArgName("NULL|3DES|AES");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("enable TLS connection without, 3DES or AES encryption");
    opts.addOption(OptionBuilder.create("tls"));

    OptionGroup tlsProtocol = new OptionGroup();
    tlsProtocol.addOption(new Option("tls1", "disable the use of SSLv3 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("ssl3", "disable the use of TLSv1 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("no_tls1", "disable the use of TLSv1 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl3", "disable the use of SSLv3 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl2", "disable the use of SSLv2 for TLS connections"));
    opts.addOptionGroup(tlsProtocol);

    opts.addOption("noclientauth", false, "disable client authentification for TLS");

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("file path or URL of P12 or JKS keystore, resource:tls/test_sys_1.p12 by default");
    opts.addOption(OptionBuilder.create("keystore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for keystore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("keystorepw"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("password for accessing the key in the keystore, keystore password by default");
    opts.addOption(OptionBuilder.create("keypw"));

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("file path or URL of JKS truststore, resource:tls/mesa_certs.jks by default");
    opts.addOption(OptionBuilder.create("truststore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for truststore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("truststorepw"));

    opts.addOption("ivrle", false, "offer only Implicit VR Little Endian Transfer Syntax.");
    opts.addOption("pdv1", false, "send only one PDV in one P-Data-TF PDU, pack command and data "
            + "PDV in one P-DATA-TF PDU by default.");
    opts.addOption("tcpdelay", false, "set TCP_NODELAY socket option to false, true by default");

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for TCP connect, no timeout by default");
    opts.addOption(OptionBuilder.create("connectTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("delay in ms for Socket close after sending A-ABORT, 50ms by default");
    opts.addOption(OptionBuilder.create("soclosedelay"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("period in ms to check for outstanding DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("reaper"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("rspTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-ASSOCIATE-AC, 5s by default");
    opts.addOption(OptionBuilder.create("acceptTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-RELEASE-RP, 5s by default");
    opts.addOption(OptionBuilder.create("releaseTO"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of received P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("rcvpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of sent P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("sndpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_RCVBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sorcvbuf"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_SNDBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sosndbuf"));

    OptionBuilder.withArgName("[seq/]attr=value");
    OptionBuilder.hasArgs();
    OptionBuilder.withValueSeparator('=');
    OptionBuilder.withDescription(
            "specify matching key. attr can be " + "specified by name or tag value (in hex), e.g. PatientName "
                    + "or 00100010. Attributes in nested Datasets can "
                    + "be specified by preceding the name/tag value of "
                    + "the sequence attribute, e.g. 0072000C/00080060 "
                    + "for Modality in the Hanging Protocol Definition " + "Sequence.");
    opts.addOption(OptionBuilder.create("q"));

    OptionBuilder.withArgName("Modality");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("specify matching Modality. Shortcut " + "for -q0072000C/00080060=<modality>.");
    opts.addOption(OptionBuilder.create("mod"));

    OptionBuilder.withArgName("Laterality");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("specify matching Laterality. Shortcut for -q0072000C/00200060=<lat>.");
    opts.addOption(OptionBuilder.create("lat"));

    OptionBuilder.withArgName("AnatomicRegion");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "specify matching Anatomic Region Sequence Code Value and Coding Scheme Designator. "
                    + "Code Value and Coding Scheme Designer are separated by ':'. For example, T1234:DCM4CHE.");
    opts.addOption(OptionBuilder.create("ar"));

    OptionBuilder.withArgName("ProcedureCode");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "specify matching Procedure Code Sequence Code Value and Coding Scheme Designator. "
                    + "Code Value and Coding Scheme Designer are separated by ':'. For example, T1234:DCM4CHE.");
    opts.addOption(OptionBuilder.create("pc"));

    OptionBuilder.withArgName("ReasonCode");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "specify matching Reason for Requested Procedure Sequence Code Value and Coding Scheme Designator. "
                    + "Code Value and Coding Scheme Designer are separated by ':'. For example, T1234:DCM4CHE.");
    opts.addOption(OptionBuilder.create("rfrp"));

    OptionBuilder.withArgName("HPUserIDCode");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "specify matching HP User ID Code Sequence Code Value and Coding Scheme Designator. "
                    + "Code Value and Coding Scheme Designer are separated by ':'. For example, T1234:DCM4CHE.");
    opts.addOption(OptionBuilder.create("user"));

    OptionBuilder.withArgName("attr");
    OptionBuilder.hasArgs();
    OptionBuilder.withDescription(
            "specify additional return key. attr can be specified by name or tag value (in hex).");
    opts.addOption(OptionBuilder.create("r"));

    OptionBuilder.withArgName("num");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "cancel query after receive of specified number of responses, no cancel by default");
    opts.addOption(OptionBuilder.create("C"));

    OptionBuilder.withArgName("aet");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("retrieve matching objects to specified move destination.");
    opts.addOption(OptionBuilder.create("dest"));

    opts.addOption("lowprior", false, "LOW priority of the C-FIND/C-MOVE operation, MEDIUM by default");
    opts.addOption("highprior", false, "HIGH priority of the C-FIND/C-MOVE operation, MEDIUM by default");
    opts.addOption("h", "help", false, "print this message");
    opts.addOption("V", "version", false, "print the version information and exit");
    CommandLine cl = null;
    try {
        cl = new GnuParser().parse(opts, args);
    } catch (ParseException e) {
        exit("dcmhp: " + e.getMessage());
        throw new RuntimeException("unreachable");
    }
    if (cl.hasOption('V')) {
        Package p = DcmHPQR.class.getPackage();
        System.out.println("dcmhpqr v" + p.getImplementationVersion());
        System.exit(0);
    }
    if (cl.hasOption('h') || cl.getArgList().size() != 1) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp(USAGE, DESCRIPTION, opts, EXAMPLE);
        System.exit(0);
    }

    return cl;
}

From source file:org.dcm4che2.tool.dcmmwl.DcmMWL.java

private static CommandLine parse(String[] args) {
    Options opts = new Options();

    OptionBuilder.withArgName("name");
    OptionBuilder.hasArg();//from ww w. java  2s  .  co m
    OptionBuilder.withDescription("set device name, use DCMMWL by default");
    opts.addOption(OptionBuilder.create("device"));

    OptionBuilder.withArgName("aet[@host]");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "set AET and local address of local " + "Application Entity, use device name and pick up any valid "
                    + "local address to bind the socket by default");
    opts.addOption(OptionBuilder.create("L"));

    OptionBuilder.withArgName("username");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "enable User Identity Negotiation with specified username and " + " optional passcode");
    opts.addOption(OptionBuilder.create("username"));

    OptionBuilder.withArgName("passcode");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "optional passcode for User Identity Negotiation, " + "only effective with option -username");
    opts.addOption(OptionBuilder.create("passcode"));

    opts.addOption("uidnegrsp", false,
            "request positive User Identity Negotation response, " + "only effective with option -username");

    OptionBuilder.withArgName("NULL|3DES|AES");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("enable TLS connection without, 3DES or AES encryption");
    opts.addOption(OptionBuilder.create("tls"));

    OptionGroup tlsProtocol = new OptionGroup();
    tlsProtocol.addOption(new Option("tls1", "disable the use of SSLv3 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("ssl3", "disable the use of TLSv1 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("no_tls1", "disable the use of TLSv1 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl3", "disable the use of SSLv3 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl2", "disable the use of SSLv2 for TLS connections"));
    opts.addOptionGroup(tlsProtocol);

    opts.addOption("noclientauth", false, "disable client authentification for TLS");

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("file path or URL of P12 or JKS keystore, resource:tls/test_sys_1.p12 by default");
    opts.addOption(OptionBuilder.create("keystore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for keystore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("keystorepw"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("password for accessing the key in the keystore, keystore password by default");
    opts.addOption(OptionBuilder.create("keypw"));

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("file path or URL of JKS truststore, resource:tls/mesa_certs.jks by default");
    opts.addOption(OptionBuilder.create("truststore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for truststore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("truststorepw"));

    opts.addOption("ivrle", false, "offer only Implicit VR Little Endian Transfer Syntax.");
    opts.addOption("fuzzy", false, "negotiate support of fuzzy semantic person name attribute matching.");
    opts.addOption("pdv1", false, "send only one PDV in one P-Data-TF PDU, pack command and data "
            + "PDV in one P-DATA-TF PDU by default.");
    opts.addOption("tcpdelay", false, "set TCP_NODELAY socket option to false, true by default");

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for TCP connect, no timeout by default");
    opts.addOption(OptionBuilder.create("connectTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("delay in ms for Socket close after sending A-ABORT, 50ms by default");
    opts.addOption(OptionBuilder.create("soclosedelay"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("period in ms to check for outstanding DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("reaper"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("rspTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-ASSOCIATE-AC, 5s by default");
    opts.addOption(OptionBuilder.create("acceptTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-RELEASE-RP, 5s by default");
    opts.addOption(OptionBuilder.create("releaseTO"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of received P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("rcvpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of sent P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("sndpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_RCVBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sorcvbuf"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_SNDBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sosndbuf"));

    OptionBuilder.withArgName("[seq/]attr=value");
    OptionBuilder.hasArgs();
    OptionBuilder.withValueSeparator('=');
    OptionBuilder.withDescription(
            "specify matching key. attr can be " + "specified by name or tag value (in hex), e.g. PatientName "
                    + "or 00100010. Attributes in nested Datasets can "
                    + "be specified by preceding the name/tag value of "
                    + "the sequence attribute, e.g. 00400100/00400009 "
                    + "for Scheduled Procedure Step ID in the Scheduled " + "Procedure Step Sequence.");
    opts.addOption(OptionBuilder.create("q"));

    OptionBuilder.withArgName("date");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "specify matching SPS start date " + "(range). Shortcut for -q00400100/00400002=<date>.");
    opts.addOption(OptionBuilder.create("date"));

    OptionBuilder.withArgName("time");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "specify matching SPS start time " + "(range). Shortcut for -q00400100/00400003=<time>.");
    opts.addOption(OptionBuilder.create("time"));

    OptionBuilder.withArgName("modality");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("specify matching Modality. Shortcut " + "for -q00400100/00080060=<modality>.");
    opts.addOption(OptionBuilder.create("mod"));

    OptionBuilder.withArgName("aet");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "specify matching Scheduled Station AE " + "title. Shortcut for -q00400100/00400001=<aet>.");
    opts.addOption(OptionBuilder.create("aet"));

    OptionBuilder.withArgName("attr");
    OptionBuilder.hasArgs();
    OptionBuilder.withDescription(
            "specify additional return key. attr can " + "be specified by name or tag value (in hex).");
    opts.addOption(OptionBuilder.create("r"));

    OptionBuilder.withArgName("num");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "cancel query after receive of specified " + "number of responses, no cancel by default");
    opts.addOption(OptionBuilder.create("C"));

    opts.addOption("lowprior", false, "LOW priority of the C-FIND operation, MEDIUM by default");
    opts.addOption("highprior", false, "HIGH priority of the C-FIND operation, MEDIUM by default");
    opts.addOption("h", "help", false, "print this message");
    opts.addOption("V", "version", false, "print the version information and exit");
    CommandLine cl = null;
    try {
        cl = new GnuParser().parse(opts, args);
    } catch (ParseException e) {
        exit("dcmmwl: " + e.getMessage());
        throw new RuntimeException("unreachable");
    }
    if (cl.hasOption('V')) {
        Package p = DcmMWL.class.getPackage();
        System.out.println("dcmqr v" + p.getImplementationVersion());
        System.exit(0);
    }
    if (cl.hasOption('h') || cl.getArgList().size() != 1) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp(USAGE, DESCRIPTION, opts, EXAMPLE);
        System.exit(0);
    }

    return cl;
}

From source file:org.dcm4che2.tool.dcmof.DcmOF.java

private static CommandLine parse(String[] args) {
    Options opts = new Options();

    OptionBuilder.withArgName("name");
    OptionBuilder.hasArg();/*from ww  w .  jav  a  2  s  . co m*/
    OptionBuilder.withDescription("set device name, use DCMOF by default");
    opts.addOption(OptionBuilder.create("device"));

    OptionBuilder.withArgName("NULL|3DES|AES");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("enable TLS connection without, 3DES or AES encryption");
    opts.addOption(OptionBuilder.create("tls"));

    OptionGroup tlsProtocol = new OptionGroup();
    tlsProtocol.addOption(new Option("tls1", "disable the use of SSLv3 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("ssl3", "disable the use of TLSv1 and SSLv2 for TLS connections"));
    tlsProtocol.addOption(new Option("no_tls1", "disable the use of TLSv1 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl3", "disable the use of SSLv3 for TLS connections"));
    tlsProtocol.addOption(new Option("no_ssl2", "disable the use of SSLv2 for TLS connections"));
    opts.addOptionGroup(tlsProtocol);

    opts.addOption("noclientauth", false, "disable client authentification for TLS");

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("file path or URL of P12 or JKS keystore, resource:tls/test_sys_2.p12 by default");
    opts.addOption(OptionBuilder.create("keystore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for keystore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("keystorepw"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("password for accessing the key in the keystore, keystore password by default");
    opts.addOption(OptionBuilder.create("keypw"));

    OptionBuilder.withArgName("file|url");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("file path or URL of JKS truststore, resource:tls/mesa_certs.jks by default");
    opts.addOption(OptionBuilder.create("truststore"));

    OptionBuilder.withArgName("password");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("password for truststore file, 'secret' by default");
    opts.addOption(OptionBuilder.create("truststorepw"));

    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("Activate MWL SCP, providing MWL Items stored in specified directory.");
    opts.addOption(OptionBuilder.create("mwl"));

    OptionGroup mpps = new OptionGroup();
    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("Activate MPPS SCP, storing received MPPS in specified directory.");
    mpps.addOption(OptionBuilder.create("mpps"));
    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "Activate MPPS SCP, storing XML received MPPS in specified directory in XML format.");
    mpps.addOption(OptionBuilder.create("mppsxml"));
    opts.addOptionGroup(mpps);

    OptionGroup ian = new OptionGroup();
    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("Activate IAN SCP, storing received IAN in specified directory.");
    ian.addOption(OptionBuilder.create("ian"));
    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("Activate IAN SCP, storing received IAN in specified directory in XML format.");
    ian.addOption(OptionBuilder.create("ianxml"));
    opts.addOptionGroup(ian);

    OptionGroup scn = new OptionGroup();
    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("Activate SCN SCP, storing received SCN in specified directory.");
    scn.addOption(OptionBuilder.create("scn"));
    OptionBuilder.withArgName("dir");
    OptionBuilder.hasArg();
    OptionBuilder
            .withDescription("Activate SCN SCP, storing received SCN in specified directory in XML format.");
    scn.addOption(OptionBuilder.create("scnxml"));
    opts.addOptionGroup(scn);

    opts.addOption("c", "compact", false, "suppress additional whitespaces in XML output");
    opts.addOption("C", "comments", false, "include attribute names as comments in XML output");

    OptionGroup ts = new OptionGroup();
    OptionBuilder.withDescription("accept only default Transfer Syntax.");
    ts.addOption(OptionBuilder.create("defts"));
    OptionBuilder.withDescription("accept Explict VR Big Endian Transfer Syntax.");
    ts.addOption(OptionBuilder.create("bigendian"));
    opts.addOptionGroup(ts);

    OptionBuilder.withArgName("maxops");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription(
            "maximum number of outstanding operations performed " + "asynchronously, unlimited by default.");
    opts.addOption(OptionBuilder.create("async"));

    opts.addOption("pdv1", false, "send only one PDV in one P-Data-TF PDU, "
            + "pack command and data PDV in one P-DATA-TF PDU by default.");
    opts.addOption("tcpdelay", false, "set TCP_NODELAY socket option to false, true by default");

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("delay in ms for Socket close after sending A-ABORT, 50ms by default");
    opts.addOption(OptionBuilder.create("soclosedelay"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving -ASSOCIATE-RQ, 5s by default");
    opts.addOption(OptionBuilder.create("requestTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving A-RELEASE-RP, 5s by default");
    opts.addOption(OptionBuilder.create("releaseTO"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("period in ms to check for outstanding DIMSE-RSP, 10s by default");
    opts.addOption(OptionBuilder.create("reaper"));

    OptionBuilder.withArgName("ms");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("timeout in ms for receiving DIMSE-RQ, 60s by default");
    opts.addOption(OptionBuilder.create("idleTO"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of received P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("rcvpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("maximal length in KB of sent P-DATA-TF PDUs, 16KB by default");
    opts.addOption(OptionBuilder.create("sndpdulen"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_RCVBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sorcvbuf"));

    OptionBuilder.withArgName("KB");
    OptionBuilder.hasArg();
    OptionBuilder.withDescription("set SO_SNDBUF socket option to specified value in KB");
    opts.addOption(OptionBuilder.create("sosndbuf"));

    opts.addOption("h", "help", false, "print this message");
    opts.addOption("V", "version", false, "print the version information and exit");

    CommandLine cl = null;
    try {
        cl = new GnuParser().parse(opts, args);
    } catch (ParseException e) {
        exit("dcmof: " + e.getMessage());
        throw new RuntimeException("unreachable");
    }
    if (cl.hasOption("V")) {
        Package p = DcmOF.class.getPackage();
        System.out.println("dcmof v" + p.getImplementationVersion());
        System.exit(0);
    }
    if (cl.hasOption("h") || cl.getArgList().size() == 0) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp(USAGE, DESCRIPTION, opts, EXAMPLE);
        System.exit(0);
    }
    return cl;
}