Package com.asakusafw.utils.java.model.util

Examples of com.asakusafw.utils.java.model.util.ExpressionBuilder


                break;
            case DECIMAL:
                statements.add(createResultSetMapping(object, resultSet, position, property, "getBigDecimal"));
                break;
            case TEXT:
                statements.add(new ExpressionBuilder(f, resultSet)
                    .method("getString", position)
                    .toLocalVariableDeclaration(context.resolve(String.class), value));
                statements.add(f.newIfStatement(
                        new ExpressionBuilder(f, value)
                            .apply(InfixOperator.NOT_EQUALS, Models.toNullLiteral(f))
                            .toExpression(),
                        f.newBlock(
                                new ExpressionBuilder(f, text)
                                    .method("set", value)
                                    .toStatement(),
                                new ExpressionBuilder(f, object)
                                    .method(context.getValueSetterName(property), text)
                                    .toStatement()),
                        f.newBlock(setNullToProperty(object, property))));
                break;
            case DATE:
                statements.add(new ExpressionBuilder(f, resultSet)
                    .method("getDate", position, calendar)
                    .toLocalVariableDeclaration(context.resolve(java.sql.Date.class), value));
                statements.add(f.newIfStatement(
                        new ExpressionBuilder(f, value)
                            .apply(InfixOperator.NOT_EQUALS, Models.toNullLiteral(f))
                            .toExpression(),
                        f.newBlock(
                                new ExpressionBuilder(f, calendar)
                                    .method("setTime", value)
                                    .toStatement(),
                                new ExpressionBuilder(f, date)
                                    .method("setElapsedDays", new TypeBuilder(f, context.resolve(DateUtil.class))
                                        .method("getDayFromCalendar", calendar)
                                        .toExpression())
                                    .toStatement(),
                                new ExpressionBuilder(f, object)
                                    .method(context.getValueSetterName(property), date)
                                    .toStatement()),
                        f.newBlock(setNullToProperty(object, property))));
                break;
            case DATETIME:
                statements.add(new ExpressionBuilder(f, resultSet)
                    .method("getTimestamp", position, calendar)
                    .toLocalVariableDeclaration(context.resolve(java.sql.Timestamp.class), value));
                statements.add(f.newIfStatement(
                        new ExpressionBuilder(f, value)
                            .apply(InfixOperator.NOT_EQUALS, Models.toNullLiteral(f))
                            .toExpression(),
                        f.newBlock(
                                new ExpressionBuilder(f, calendar)
                                    .method("setTime", value)
                                    .toStatement(),
                                new ExpressionBuilder(f, datetime)
                                    .method("setElapsedSeconds", new TypeBuilder(f, context.resolve(DateUtil.class))
                                        .method("getSecondFromCalendar", calendar)
                                        .toExpression())
                                    .toStatement(),
                                new ExpressionBuilder(f, object)
                                    .method(context.getValueSetterName(property), datetime)
                                    .toStatement()),
                        f.newBlock(setNullToProperty(object, property))));
                break;
            default:
                throw new AssertionError(kind);
            }
            return f.newIfStatement(
                    new ExpressionBuilder(f, position)
                        .apply(InfixOperator.NOT_EQUALS, Models.toLiteral(f, 0))
                        .toExpression(),
                    f.newBlock(statements));
        }
View Full Code Here


        private Statement createResultSetNullMapping(
                Expression object,
                Expression resultSet,
                PropertyDeclaration property) {
            return f.newIfStatement(
                    new ExpressionBuilder(f, resultSet)
                        .method("wasNull")
                        .toExpression(),
                    f.newBlock(setNullToProperty(object, property)));
        }
View Full Code Here

        private ExpressionStatement setNullToProperty(
                Expression object,
                PropertyDeclaration property) {
            assert object != null;
            assert property != null;
            return new ExpressionBuilder(f, object)
                .method(context.getOptionSetterName(property), Models.toNullLiteral(f))
                .toStatement();
        }
View Full Code Here

            assert object != null;
            assert statement != null;
            assert position != null;
            assert property != null;
            return f.newIfStatement(
                    new ExpressionBuilder(f, position)
                        .apply(InfixOperator.NOT_EQUALS, Models.toLiteral(f, 0))
                        .toExpression(),
                    f.newBlock(f.newIfStatement(
                            new ExpressionBuilder(f, object)
                                .method(context.getOptionGetterName(property))
                                .method("isNull")
                                .toExpression(),
                            f.newBlock(new ExpressionBuilder(f, statement)
                                .method("setNull", position, createNullType(property))
                                .toStatement()),
                            f.newBlock(createParameterSetter(object, statement, position, property)))));
        }
View Full Code Here

                break;
            case DECIMAL:
                statements.add(createParameterMapping(object, statement, position, property, "setBigDecimal"));
                break;
            case TEXT:
                statements.add(new ExpressionBuilder(f, statement)
                    .method("setString", position, new ExpressionBuilder(f, object)
                        .method(context.getValueGetterName(property))
                        .method("toString")
                        .toExpression())
                    .toStatement());
                break;
            case DATE:
                statements.add(new TypeBuilder(f, context.resolve(DateUtil.class))
                    .method("setDayToCalendar",
                            new ExpressionBuilder(f, object)
                                .method(context.getValueGetterName(property))
                                .method("getElapsedDays")
                                .toExpression(),
                            calendar)
                    .toStatement());
                statements.add(new ExpressionBuilder(f, date)
                    .method("setTime", new ExpressionBuilder(f, calendar)
                        .method("getTimeInMillis")
                        .toExpression())
                    .toStatement());
                statements.add(new ExpressionBuilder(f, statement)
                    .method("setDate", position, date)
                    .toStatement());
                break;
            case DATETIME:
                statements.add(new TypeBuilder(f, context.resolve(DateUtil.class))
                    .method("setSecondToCalendar",
                            new ExpressionBuilder(f, object)
                                .method(context.getValueGetterName(property))
                                .method("getElapsedSeconds")
                                .toExpression(),
                            calendar)
                    .toStatement());
                statements.add(new ExpressionBuilder(f, datetime)
                    .method("setTime", new ExpressionBuilder(f, calendar)
                        .method("getTimeInMillis")
                        .toExpression())
                    .toStatement());
                statements.add(new ExpressionBuilder(f, statement)
                    .method("setTimestamp", position, datetime)
                    .toStatement());
                break;
            default:
                throw new AssertionError(kind);
View Full Code Here

            assert object != null;
            assert statement != null;
            assert position != null;
            assert property != null;
            assert name != null;
            return new ExpressionBuilder(f, statement)
                .method(name, position, new ExpressionBuilder(f, object)
                    .method(context.getValueGetterName(property))
                    .toExpression())
                .toStatement();
        }
View Full Code Here

            assert object != null;
            assert resultSet != null;
            assert position != null;
            assert property != null;
            assert name != null;
            return new ExpressionBuilder(f, object)
                .method(context.getValueSetterName(property), new ExpressionBuilder(f, resultSet)
                    .method(name, position)
                    .toExpression())
                .toStatement();
        }
View Full Code Here

            BasicType basicType = (BasicType) type;
            return basicType.getKind();
        }

        private ExpressionStatement mapField(SimpleName name) {
            return new ExpressionBuilder(f, f.newThis())
                .field(name)
                .assignFrom(name)
                .toStatement();
        }
View Full Code Here

            statements.add(new TypeBuilder(factory, t(WritableComparator.class))
                .method("readInt", b2, s2)
                .toLocalVariableDeclaration(t(int.class), segmentId2));

            SimpleName diff = factory.newSimpleName("diff");
            statements.add(new ExpressionBuilder(factory, factory.newThis())
                .method(ShuffleEmiterUtil.COMPARE_INT,
                        new ExpressionBuilder(factory, factory.newThis())
                            .method(ShuffleEmiterUtil.PORT_TO_ELEMENT, segmentId1)
                            .toExpression(),
                        new ExpressionBuilder(factory, factory.newThis())
                            .method(ShuffleEmiterUtil.PORT_TO_ELEMENT, segmentId2)
                            .toExpression())
                .toLocalVariableDeclaration(t(int.class), diff));
            statements.add(createDiff(diff));

            SimpleName o1 = factory.newSimpleName("o1");
            SimpleName o2 = factory.newSimpleName("o2");
            SimpleName lim1 = factory.newSimpleName("lim1");
            SimpleName lim2 = factory.newSimpleName("lim2");
            statements.add(new ExpressionBuilder(factory, v(4)).toLocalVariableDeclaration(t(int.class), o1));
            statements.add(new ExpressionBuilder(factory, v(4)).toLocalVariableDeclaration(t(int.class), o2));
            statements.add(new ExpressionBuilder(factory, v(-1)).toLocalVariableDeclaration(t(int.class), lim1));
            statements.add(new ExpressionBuilder(factory, v(-1)).toLocalVariableDeclaration(t(int.class), lim2));

            List<Statement> cases = Lists.create();
            for (List<Segment> segments : ShuffleEmiterUtil.groupByElement(model)) {
                for (Segment segment : segments) {
                    cases.add(factory.newSwitchCaseLabel(v(segment.getPortId())));
                }
                for (Term term : segments.get(0).getTerms()) {
                    if (term.getArrangement() != Arrangement.GROUPING) {
                        continue;
                    }
                    cases.add(new ExpressionBuilder(factory, lim1)
                        .assignFrom(term.getSource().createBytesSize(
                                b1,
                                factory.newInfixExpression(s1, InfixOperator.PLUS, o1),
                                factory.newInfixExpression(l1, InfixOperator.MINUS, o1)))
                        .toStatement());
                    cases.add(new ExpressionBuilder(factory, lim2)
                        .assignFrom(term.getSource().createBytesSize(
                                b2,
                                factory.newInfixExpression(s2, InfixOperator.PLUS, o2),
                                factory.newInfixExpression(l2, InfixOperator.MINUS, o2)))
                        .toStatement());
                    cases.add(new ExpressionBuilder(factory, diff)
                        .assignFrom(
                                term.getSource().createBytesDiff(
                                        b1, factory.newInfixExpression(s1, InfixOperator.PLUS, o1), lim1,
                                        b2, factory.newInfixExpression(s2, InfixOperator.PLUS, o2), lim2))
                        .toStatement());
                    cases.add(createDiff(diff));
                    cases.add(new ExpressionBuilder(factory, o1)
                        .assignFrom(InfixOperator.PLUS, lim1)
                        .toStatement());
                    cases.add(new ExpressionBuilder(factory, o2)
                        .assignFrom(InfixOperator.PLUS, lim2)
                        .toStatement());
                }
                cases.add(factory.newBreakStatement());
            }
            cases.add(factory.newSwitchDefaultLabel());
            cases.add(createAssertionError());

            statements.add(factory.newSwitchStatement(segmentId1, cases));
            statements.add(new ExpressionBuilder(factory, diff)
                .assignFrom(new ExpressionBuilder(factory, factory.newThis())
                    .method(ShuffleEmiterUtil.COMPARE_INT, segmentId1, segmentId2)
                    .toExpression())
                .toStatement());
            statements.add(createDiff(diff));
            cases = Lists.create();
            for (Segment segment : model.getSegments()) {
                cases.add(factory.newSwitchCaseLabel(v(segment.getPortId())));
                for (Term term : segment.getTerms()) {
                    if (term.getArrangement() == Arrangement.GROUPING) {
                        continue;
                    }
                    cases.add(new ExpressionBuilder(factory, lim1)
                        .assignFrom(term.getSource().createBytesSize(
                                b1,
                                factory.newInfixExpression(s1, InfixOperator.PLUS, o1),
                                factory.newInfixExpression(l1, InfixOperator.MINUS, o1)))
                        .toStatement());
                    cases.add(new ExpressionBuilder(factory, lim2)
                        .assignFrom(term.getSource().createBytesSize(
                                b2,
                                factory.newInfixExpression(s2, InfixOperator.PLUS, o2),
                                factory.newInfixExpression(l2, InfixOperator.MINUS, o2)))
                        .toStatement());
                    cases.add(new ExpressionBuilder(factory, diff)
                        .assignFrom(
                                term.getSource().createBytesDiff(
                                        b1, factory.newInfixExpression(s1, InfixOperator.PLUS, o1), lim1,
                                        b2, factory.newInfixExpression(s2, InfixOperator.PLUS, o2), lim2))
                        .toStatement());
                    cases.add(createDiff(diff, term.getArrangement() == Arrangement.DESCENDING));
                    cases.add(new ExpressionBuilder(factory, o1)
                        .assignFrom(InfixOperator.PLUS, lim1)
                        .toStatement());
                    cases.add(new ExpressionBuilder(factory, o2)
                        .assignFrom(InfixOperator.PLUS, lim2)
                        .toStatement());
                }
                cases.add(factory.newBreakStatement());
            }
            cases.add(factory.newSwitchDefaultLabel());
            cases.add(createAssertionError());
            statements.add(factory.newSwitchStatement(segmentId1, cases));

            statements.add(new ExpressionBuilder(factory, v(0))
                .toReturnStatement());

            return factory.newMethodDeclaration(
                    null,
                    new AttributeBuilder(factory)
View Full Code Here

                                .toType(),
                            headers));
                for (PropertyDeclaration property : model.getDeclaredProperties()) {
                    if (isValueField(property)) {
                        String fieldName = CsvFieldTrait.getFieldName(property);
                        statements.add(new ExpressionBuilder(f, headers)
                            .method("add", Models.toLiteral(f, fieldName))
                            .toStatement());
                    }
                }
                arguments.add(headers);
View Full Code Here

TOP

Related Classes of com.asakusafw.utils.java.model.util.ExpressionBuilder

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.