@Override protected void preDocStructure(DocStructure docStructure, Void arg) { SubDocType type = docStructure.getType(); int typeId = colSchema.getTypeId(type); int index = docStructure.getIndex(); String subDocAsJson = databaseInfo.get(typeId, index); SubDocType subDocType = colSchema.getSubDocType(typeId); splitDocBuilder.add(subDocConverter.from(subDocAsJson, subDocType)); }
public SplitDocument build() { Preconditions.checkState(!build, "This builder has already been used"); if (root == null) { throw new IllegalStateException("structure must be non null"); } assert checkCorrectness(); build = true; return new SplitDocument( id, root, subDocuments, structures ); }
@Override public Void visit(KVDocument value, TranslatorConsumer arg) { SubDocType type = collectedTypes.get(value); DocStructure.Builder structureBuilder = new DocStructure.Builder(); SubDocument.Builder subDocBuilder = SubDocument.Builder.withKnownType(type); int index = consumeIndex(type); structureBuilder.setIndex(index); structureBuilder.setType(type); subDocBuilder.setIndex(index); subDocBuilder.setDocumentId(docId); ObjectTranslatorConsumer consumer = new ObjectTranslatorConsumer( subDocBuilder, structureBuilder); for (DocEntry<?> entry : value) { consumer.setAttributeName(entry.getKey()); entry.getValue().accept(this, consumer); } splitDocBuilder.add(subDocBuilder.build()); arg.consume(structureBuilder.built()); return null; }
public SplitDocument convert( CollectionSchema colSchema, int docId, int structureId, Table<Integer, Integer, String> databaseInfo ) { SplitDocument.Builder builder = new SplitDocument.Builder(); DocStructure structure = getStructure(colSchema, structureId); builder.setRoot(structure); SubDocAdder adder = new SubDocAdder(databaseInfo, builder, colSchema); structure.accept(adder, null); builder.setId(docId); return builder.build(); }
private SplitDocument translate( ToroDocument doc, int docId, Map<KVDocument, SubDocType> collectedTypes) { SplitDocument.Builder splitDocBuilder = new SplitDocument.Builder(); ValueTranslator translator = new ValueTranslator(docId, splitDocBuilder, collectedTypes); RootTranslatorConsumer consumer = new RootTranslatorConsumer(); doc.getRoot().accept(translator, consumer); splitDocBuilder.setId(docId); splitDocBuilder.setRoot(consumer.getRoot()); return splitDocBuilder.build(); }