public HollowEffigy effigy(HollowDataAccess dataAccess, String typeName, int ordinal) { if(ordinal == -1) return null; HollowTypeDataAccess typeState = dataAccess.getTypeDataAccess(typeName, ordinal); if(typeState == null) return null; if(typeState instanceof HollowObjectTypeDataAccess) { return new HollowEffigy(this, (HollowObjectTypeDataAccess) typeState, ordinal); } else if(typeState instanceof HollowCollectionTypeDataAccess) { return new HollowEffigy(this, (HollowCollectionTypeDataAccess) typeState, ordinal); } else if(typeState instanceof HollowMapTypeDataAccess){ return new HollowEffigy(this, (HollowMapTypeDataAccess) typeState, ordinal); } throw new IllegalArgumentException("I don't know how to effigize a " + typeState.getClass()); }
private HollowEffigy list(HollowEffigy... elements) { HollowEffigy list = new HollowEffigy("list"); for(HollowEffigy element : elements) { list.add(new Field("element", element)); } return list; }
private List<Field> createMapFields(HollowEffigy effigy) { List<Field> fields = new ArrayList<Field>(); HollowMapTypeDataAccess typeDataAccess = (HollowMapTypeDataAccess)effigy.dataAccess; HollowMapSchema schema = typeDataAccess.getSchema(); HollowMapEntryOrdinalIterator iter = typeDataAccess.ordinalIterator(effigy.ordinal); while(iter.next()) { HollowEffigy entryEffigy = new HollowEffigy("Map.Entry"); entryEffigy.add(new Field("key", effigy(typeDataAccess.getDataAccess(), schema.getKeyType(), iter.getKey()))); entryEffigy.add(new Field("value", effigy(typeDataAccess.getDataAccess(), schema.getValueType(), iter.getValue()))); fields.add(new Field("entry", "Map.Entry", entryEffigy)); } return fields; }
private HollowEffigy element(String field1, int field2, float field3) { HollowEffigy eff = new HollowEffigy("element"); eff.add(new Field("field1", "STRING", field1)); eff.add(new Field("field2", "INT", field2)); eff.add(new Field("field3", "FLOAT", field3)); return eff; } }