package org.cryptocoinpartners.bin; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import org.apache.commons.lang.StringUtils; import org.cryptocoinpartners.report.AdHocJpaReport; import org.cryptocoinpartners.report.Report; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @SuppressWarnings("UnusedDeclaration") @Parameters(commandNames = "report-jpa",separators = "",commandDescription = "interprets the command-line args as a JPA query") public class AdHocJpaReportRunMode extends ReportRunMode { @Override protected Report getReport() { Iterator<String> quotedStringIter = new Iterator<String>() { private Iterator<String> queryIter = query.iterator(); public boolean hasNext() { return queryIter.hasNext(); } public void remove() { throw new Error("Unimplemented"); } public String next() { String next = queryIter.next(); return next.matches(".*\\s.*") ? '\'' + next + '\'' : next; } }; final String queryStr = StringUtils.join(quotedStringIter, " "); AdHocJpaReport report = injector.getInstance(AdHocJpaReport.class); report.setQueryString(queryStr); return report; } @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") @Parameter private final List<String> query = new ArrayList<>(); }