E element = elements.next(); if (element==null) throw new IllegalArgumentException("Unexpected null element in result set"); if (metadataSchema==null) metadataSchema=getter.getMetaSchema(element);
dataLength+=dataHandler.getSize(getter.getColumn(element)); dataLength+=dataHandler.getSize(getter.getValue(element)); if (metadataSchema==null) metadataSchema=getter.getMetaSchema(element); dataLength+=getMetaDataSize(metadataSchema,element,getter);
public static EntryList of(Iterable<Entry> entries) { Preconditions.checkNotNull(entries); int num=0; int dataLength=0; EntryMetaData[] metadataSchema = null; for (Entry entry : entries) { num++; dataLength+=entry.length(); if (metadataSchema==null) metadataSchema=StaticArrayEntry.ENTRY_GETTER.getMetaSchema(entry); dataLength+=getMetaDataSize(metadataSchema,entry,StaticArrayEntry.ENTRY_GETTER); } if (num==0) return EMPTY_LIST; byte[] data = new byte[dataLength]; long[] limitAndValuePos = new long[num]; int pos=0; CopyFactory cpf = new CopyFactory(data); for (Entry entry : entries) { cpf.addMetaData(metadataSchema,entry); entry.as(cpf); limitAndValuePos[pos]= getOffsetAndValue(cpf.dataOffset,entry.getValuePosition()); pos++; } assert cpf.dataOffset==data.length; assert pos==limitAndValuePos.length; return new StaticArrayEntryList(data,limitAndValuePos,metadataSchema); }
private static <E,D> Entry of(E element, StaticArrayEntry.GetColVal<E,D> getter, StaticArrayEntry.DataHandler<D> dataHandler) { StaticArrayEntry entry = of(getter.getColumn(element),getter.getValue(element),dataHandler); //Add meta data if exists if (getter.getMetaSchema(element).length>0) { for (EntryMetaData meta : getter.getMetaSchema(element)) { entry.setMetaData(meta,getter.getMetaData(element,meta)); } } return entry; }
private static<D,K> int getMetaDataSize(EntryMetaData[] schema, D entry, StaticArrayEntry.GetColVal<D,K> metaGetter) { int dataSize = 0; if (schema.length>0) { assert schema.length==metaGetter.getMetaSchema(entry).length; for (EntryMetaData meta : schema) { Object data = metaGetter.getMetaData(entry,meta); assert data!=null; dataSize+=getSerializer(meta).getByteLength(data); } } return dataSize; }