@Override public String serializeOperation(Operation operation) throws SerializingMarshallingException { try { switch (operation.type()) { case InsertOperation.TYPE: { InsertOperation simpleOperation = (InsertOperation) operation; List<Object> operationAsList = new ArrayList<>(); operationAsList.add(simpleOperation.getClass().getName()); operationAsList.add(simpleOperation.table()); operationAsList.add(simpleOperation.key()); // TODO // operationAsList.add( simpleOperation.fields() ); return OBJECT_MAPPER.writeValueAsString(operationAsList); } case ReadOperation.TYPE: { ReadOperation simpleOperation = (ReadOperation) operation; List<Object> operationAsList = new ArrayList<>(); operationAsList.add(simpleOperation.getClass().getName()); operationAsList.add(simpleOperation.table()); operationAsList.add(simpleOperation.key()); operationAsList.add(simpleOperation.fields()); return OBJECT_MAPPER.writeValueAsString(operationAsList); } case UpdateOperation.TYPE: { UpdateOperation simpleOperation = (UpdateOperation) operation; List<Object> operationAsList = new ArrayList<>(); operationAsList.add(simpleOperation.getClass().getName()); operationAsList.add(simpleOperation.table()); operationAsList.add(simpleOperation.key()); // TODO // operationAsList.add( simpleOperation.fields() ); return OBJECT_MAPPER.writeValueAsString(operationAsList); } case ScanOperation.TYPE: { ScanOperation simpleOperation = (ScanOperation) operation; List<Object> operationAsList = new ArrayList<>(); operationAsList.add(simpleOperation.getClass().getName()); operationAsList.add(simpleOperation.table()); operationAsList.add(simpleOperation.startkey()); operationAsList.add(simpleOperation.recordCount()); operationAsList.add(simpleOperation.fields()); return OBJECT_MAPPER.writeValueAsString(operationAsList); } case ReadModifyWriteOperation.TYPE: { ReadModifyWriteOperation simpleOperation = (ReadModifyWriteOperation) operation; List<Object> operationAsList = new ArrayList<>(); operationAsList.add(simpleOperation.getClass().getName()); operationAsList.add(simpleOperation.table()); operationAsList.add(simpleOperation.key()); operationAsList.add(simpleOperation.fields()); // TODO // operationAsList.add( simpleOperation.values() ); return OBJECT_MAPPER.writeValueAsString(operationAsList); } default: { throw new SerializingMarshallingException( format( "Workload does not know how to serialize operation\nWorkload: %s\nOperation Type: " + "%s\nOperation: %s", getClass().getName(), operation.getClass().getName(), operation)); } } } catch (IOException e) { throw new SerializingMarshallingException( format("Error serializing operation\n%s", operation), e); } }