Skip to content

Instantly share code, notes, and snippets.

wspeirs /
Created January 18, 2013 23:03
Parsing a command line
final GnuParser parser = new GnuParser();
final Options options = configureOptions();
// parse with the parser
CommandLine cmdLine = null;
try {
cmdLine = parser.parse(options, args);
} catch(ParseException e) {
// check to see if they need help
// notice we only use the short-version, but it checks both!
if(cmdLine.hasOption("h")) {
new HelpFormatter().printHelp("sop4j-cli", options);
// check to see if they passed in an opt
// recommended to use the long version as it's more readable
if(cmdLine.hasOption("opt")) {
wspeirs /
Created January 18, 2013 22:54
Methods for creation an Option
Options options = new Options();
// create the simple option without using the OptionBuilder
options.addOption("o", "opt", false, "An option, no args");
// simple help option using the builder
// an option with a value separator, defaults to =
wspeirs /
Created January 20, 2013 17:15
Setting the Velocity context.
// create the context to set all the variables
final VelocityContext context = new VelocityContext();
// setup the context
context.put("user", new UserBean("bill"));
context.put("site", "");
context.put("articles", Arrays.asList(new ArticleBean("Welcome"),
new ArticleBean("Parsing the Command Line"),
new ArticleBean("Document Templating or Mail Merge")));
wspeirs /
Created January 20, 2013 17:18
Merging Velocity context and template together.
// get the template
final Template template = velocity.getTemplate("my_template.vm");
final StringWriter sw = new StringWriter();
// merge the template and context
template.merge(context, sw);
// print out the resulting document
wspeirs /
Created January 20, 2013 17:12
Configuring the Velocity engine
// create the velocity engine
final VelocityEngine velocity = new VelocityEngine();
// set the logger to our Log4J root logger
velocity.setProperty("runtime.log.logsystem.log4j.logger", "root");
// use the resource loader as it's easy with Maven's path setup
velocity.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
velocity.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
wspeirs / my_template.vm
Created January 20, 2013 17:24
Velocity template
## this is a single-line comment in the template
Dear ${user.Name}- ## notice we use the formal directive here because we want the - right after the variable
This is an e-mail because you signed up for $site and we're really happy that you did.
This is how you check to see if a value is null
This is also a multi-line comment
#if( $message )
This special message won't be shown because our \$message is null
wspeirs / merged
Created January 20, 2013 17:25
Merged template and context.
Dear Bill-
This is an e-mail because you signed up for and we're really happy that you did.
Here are 3 cool articles you can read:
- Welcome
- Parsing the Command Line
- Document Templating or Mail Merge
public void getIntegerEvent(Integer event) throws InterruptedException {
System.out.println(System.currentTimeMillis() + ":\t" + name + " got " + event);
wspeirs /
Created November 13, 2013 03:55
Simple statistics using commons-math3
final DescriptiveStatistics descriptiveStats = new DescriptiveStatistics(); // stores values
final SummaryStatistics summaryStats = new SummaryStatistics(); // doesn't store values
final Frequency frequency = new Frequency();
// add numbers into our stats
for(int i=0; i < NUM_VALUES; ++i) {
values[i] = rng.nextInt(MAX_VALUE);