in asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/CreateProcedureStatement.java [157:177]
private void initialize() throws CompilationException, HyracksDataException {
BADParserFactory factory = new BADParserFactory();
List<Statement> fStatements = factory.createParser(new StringReader(procedureBody)).parse();
if (fStatements.size() != 2) {
//TODO: Add a test for this error
throw new CompilationException("Procedure can only execute a single statement");
}
procedureBodyStatement = fStatements.get(1);
if (period == null) {
return;
}
if (!period.getFunctionSignature().getName().equals("duration")) {
throw new MetadataException(
"Expected argument period as a duration, but got " + period.getFunctionSignature().getName() + ".");
}
duration = ((StringLiteral) ((LiteralExpr) period.getExprList().get(0)).getValue()).getValue();
IValueParser durationParser = ADurationParserFactory.INSTANCE.createValueParser();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream outputStream = new DataOutputStream(bos);
durationParser.parse(duration.toCharArray(), 0, duration.toCharArray().length, outputStream);
}