/** * */ package smartkv.client.workloads; import smartkv.client.ColumnProxy; import smartkv.client.tables.ColumnObject; import smartkv.client.tables.ColumnTable; import smartkv.client.tables.ColumnTable_; import smartkv.client.util.Serializer; import smartkv.client.util.UnsafeJavaSerializer; import smartkv.server.RequestType; public class ColumnWorkloadLogger< K,V> extends WorkloadLoggerTable<K,V> implements ColumnTable<K,V>{ ColumnTable<K,V> table2; public ColumnWorkloadLogger(String tableName, RequestLogger logger, ColumnObject<V> valueSerializer){ this(tableName, logger, UnsafeJavaSerializer.<K>getInstance(), valueSerializer); } public ColumnWorkloadLogger(String tableName, RequestLogger logger, Serializer<K> keys, ColumnObject<V> values){ this.entry = new RequestLogEntry(); this.logger = logger; this.tableName = tableName; this.table =this.table2 = ColumnTable_.getTable( new ColumnProxy(0){ @Override protected byte[] invokeRequestWithRawReturn(RequestType type, byte[] request) { entry.setTimeStarted(System.currentTimeMillis()); entry.setSizeOfRequest(request.length); entry.setType(type); byte[] result = super.invokeRequestWithRawReturn(type, request); entry.setTimeEnded(System.currentTimeMillis()); return result; }; } , tableName, keys,values); } /* (non-Javadoc) * @see bonafide.datastore.tables.ColumnTable#getColumn(java.lang.Object, java.lang.String) */ @Override public <C> C getColumn(K key, String columnName) { C val = table2.getColumn(key, columnName); logEntry(new RequestLogWithDataInformation.Builder(). setTable(tableName). setKey(key != null ? key.toString() : "null"). setColumn(columnName). setReturnedValue(val != null ? val.toString() : "null"). build(entry)); return val; } ///XXX em vez de blah != null , podias adicionar o setBlah(Object o) e chamar o toString. /* (non-Javadoc) * @see bonafide.datastore.tables.ColumnTable#setColumn(java.lang.Object, java.lang.String, java.lang.Object) */ @Override public boolean setColumn(K key, String columnName, Object type) { Boolean val = table2.setColumn(key, columnName, type); logEntry(new RequestLogWithDataInformation.Builder(). setTable(tableName). setKey(key != null ? key.toString() : "null"). setColumn(columnName). setValue(type.toString()). setReturnedValue(val != null ? val.toString() : "null"). build(entry)); return val; } /* (non-Javadoc) * @see bonafide.datastore.tables.ColumnTable#getColumnByReference(java.lang.Object, java.lang.String) */ @Override public <C> C getColumnByReference(K key, String columnName) { C val = table2.getColumnByReference(key, columnName); logEntry(new RequestLogWithDataInformation.Builder(). setTable(tableName). setKey(key != null ? key.toString() : "null"). setColumn(columnName). setReturnedValue(val != null ? val.toString() : "null"). build(entry)); return val; } }