private void buildSurface(HashMap<String, Pair<VolatilitySurfaceKey, ManageableVolatilitySurfaceSnapshot>> surfaceBuilder,
Map<String, String> currentRow) {
String name = currentRow.get(SnapshotColumns.NAME.get());
if (!surfaceBuilder.containsKey(name)) {
ManageableVolatilitySurfaceSnapshot surface = new ManageableVolatilitySurfaceSnapshot();
VolatilitySurfaceKey key = new VolatilitySurfaceKey(UniqueId.parse(currentRow.get(SnapshotColumns.SURFACE_TARGET.get())),
currentRow.get(SnapshotColumns.NAME.get()),
currentRow.get(SnapshotColumns.SURFACE_INSTRUMENT_TYPE.get()),
currentRow.get(SnapshotColumns.SURFACE_QUOTE_TYPE.get()),
currentRow.get(SnapshotColumns.SURFACE_QUOTE_UNITS.get()));
HashMap values = new HashMap<Pair<Object, Object>, ValueSnapshot>();
values.put(Pair.of(currentRow.get(SnapshotColumns.SURFACE_X.get()),
currentRow.get(SnapshotColumns.SURFACE_Y.get())), createValueSnapshot(currentRow));
surface.setValues(values);
surfaceBuilder.put(name, Pair.of(key, surface));
} else {
surfaceBuilder.get(name).getSecond().getValues().put(createOrdinatePair(currentRow),
createValueSnapshot(currentRow));
}