@Override public int next() { if(currentElement == size) return NO_MORE_ORDINALS; return dataAccess.getElementOrdinal(listOrdinal, currentElement++); }
@Override public T get(HollowList<T> list, int ordinal, int index) { int elementOrdinal = dataAccess.getElementOrdinal(ordinal, index); return list.instantiateElement(elementOrdinal); }
@Override public int getElementOrdinal(int ordinal, int listIndex) { return currentDataAccess().getElementOrdinal(ordinal, listIndex); }
private HollowListCachedDelegate(HollowListTypeDataAccess dataAccess, HollowListTypeAPI typeAPI, int ordinal) { int ordinals[] = new int[dataAccess.size(ordinal)]; for(int i=0;i<ordinals.length;i++) ordinals[i] = dataAccess.getElementOrdinal(ordinal, i); this.ordinals = ordinals; this.dataAccess = dataAccess; this.typeAPI = typeAPI; }
public int getElementOrdinal(int ordinal, int listIdx) { return getTypeDataAccess().getElementOrdinal(ordinal, listIdx); }
@Override public final int lastIndexOf(HollowList<T> list, int ordinal, Object o) { int size = size(ordinal); for(int i=size - 1; i>=0; i--) { int elementOrdinal = dataAccess.getElementOrdinal(ordinal, i); if(list.equalsElement(elementOrdinal, o)) return i; } return -1; }
@Override public final int indexOf(HollowList<T> list, int ordinal, Object o) { int size = size(ordinal); for(int i=0;i<size;i++) { int elementOrdinal = dataAccess.getElementOrdinal(ordinal, i); if(list.equalsElement(elementOrdinal, o)) return i; } return -1; }
private void appendListStringify(Writer writer, HollowDataAccess dataAccess, HollowListTypeDataAccess typeDataAccess, int ordinal, int indentation) throws IOException { HollowListSchema schema = typeDataAccess.getSchema(); if(showTypes) writer.append("(").append(schema.getName()).append(")"); if(showOrdinals) writer.append(" (ordinal ").append(Integer.toString(ordinal)).append(")"); indentation++; int size = typeDataAccess.size(ordinal); String elementType = schema.getElementType(); for(int i=0;i<size;i++) { writer.append(NEWLINE); int elementOrdinal = typeDataAccess.getElementOrdinal(ordinal, i); appendIndentation(writer, indentation); writer.append("e" + i + ": "); appendStringify(writer, dataAccess, elementType, elementOrdinal, indentation); } }
private void appendListStringify(Writer writer, HollowDataAccess dataAccess, HollowListTypeDataAccess typeDataAccess, int ordinal, int indentation) throws IOException { HollowListSchema schema = typeDataAccess.getSchema(); indentation++; int size = typeDataAccess.size(ordinal); if(size == 0) { writer.append("[]"); } else { writer.append("[\n"); String elementType = schema.getElementType(); for(int i=0;i<size;i++) { int elementOrdinal = typeDataAccess.getElementOrdinal(ordinal, i); if(prettyPrint) appendIndentation(writer, indentation); appendStringify(writer, dataAccess, elementType, elementOrdinal, indentation); if(i < size - 1) writer.append(",\n"); } if(prettyPrint) { writer.append(NEWLINE); appendIndentation(writer, indentation - 1); } writer.append("]"); } }
private void assertRecord(HollowDataAccess dataAccess, int ordinal, int... expectedElements) { HollowListTypeDataAccess typeDataAccess = (HollowListTypeDataAccess)dataAccess.getTypeDataAccess("TestList"); for(int i=0;i<expectedElements.length;i++) { Assert.assertEquals(expectedElements[i], typeDataAccess.getElementOrdinal(ordinal, i)); } }
@Override public int doTraversal(int ordinal) { if(child == null) return 1; int size = dataAccess().size(ordinal); int numMatches = 0; for(int i=0;i<size;i++) { prepareMultiply(); child.traverse(dataAccess().getElementOrdinal(ordinal, i)); numMatches += doMultiply(); } return numMatches; }
@Override public int getElementOrdinal(int ordinal, int listIndex) { sampler().recordGet(); recordStackTrace(); if(!ordinalIsPresent(ordinal)) return ((HollowListTypeDataAccess)dataAccess.getTypeDataAccess(getSchema().getName(), ordinal)).getElementOrdinal(ordinal, listIndex); return removedRecords().getElementOrdinal(getMappedOrdinal(ordinal), listIndex); }
Assert.assertEquals(i, listDataAccess.getElementOrdinal(i, 0)); Assert.assertEquals(i+1, listDataAccess.getElementOrdinal(i, 1)); Assert.assertEquals(i+2, listDataAccess.getElementOrdinal(i, 2)); Assert.assertEquals(expectedValue, listDataAccess.getElementOrdinal(ordinal, 0)); Assert.assertEquals(expectedValue+1, listDataAccess.getElementOrdinal(ordinal, 1)); Assert.assertEquals(expectedValue+2, listDataAccess.getElementOrdinal(ordinal, 2));