private MethodDeclaration createSlotObjects() { SimpleName resultName = factory.newSimpleName("results"); List<Statement> statements = Lists.create(); statements.add( new TypeBuilder(factory, importer.toType(Writable.class)) .array(1) .newArray(getSlotCount()) .toLocalVariableDeclaration(importer.toType(Writable[].class), resultName)); for (ResolvedSlot slot : slots) { Expression object; if (slot.getSortProperties().isEmpty() && ParallelSortClientEmitter.legacy(environment) == false) { object = Models.toNullLiteral(factory); } else { DataClass slotClass = slot.getValueClass(); object = slotClass.createNewInstance(importer.toType(slotClass.getType())); } statements.add( new ExpressionBuilder(factory, resultName) .array(slot.getSlotNumber()) .assignFrom(object) .toStatement()); } statements.add(new ExpressionBuilder(factory, resultName).toReturnStatement()); return factory.newMethodDeclaration( null, new AttributeBuilder(factory) .annotation(importer.toType(Override.class)) .Protected() .toAttributes(), importer.toType(Writable[].class), factory.newSimpleName(SlotSorter.NAME_CREATE_SLOT_OBJECTS), Collections.<FormalParameterDeclaration>emptyList(), statements); }
private MethodDeclaration createSlotNames() { SimpleName resultName = factory.newSimpleName("results"); List<Statement> statements = Lists.create(); statements.add( new TypeBuilder(factory, importer.toType(String.class)) .array(1) .newArray(getSlotCount()) .toLocalVariableDeclaration(importer.toType(String[].class), resultName)); for (ResolvedSlot slot : slots) { Expression outputName; if (slot.getSortProperties().isEmpty() && ParallelSortClientEmitter.legacy(environment) == false) { outputName = Models.toNullLiteral(factory); } else { outputName = Models.toLiteral(factory, slot.getSource().getOutputName()); } statements.add( new ExpressionBuilder(factory, resultName) .array(slot.getSlotNumber()) .assignFrom(outputName) .toStatement()); } statements.add(new ExpressionBuilder(factory, resultName).toReturnStatement()); return factory.newMethodDeclaration( null, new AttributeBuilder(factory) .annotation(importer.toType(Override.class)) .Protected() .toAttributes(), importer.toType(String[].class), factory.newSimpleName(SlotSorter.NAME_GET_OUTPUT_NAMES), Collections.<FormalParameterDeclaration>emptyList(), statements); }