private void initialize()

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);
    }