@@ -12,5 +12,9 @@ public interface DBConnection { | |||||
String get(String key); | String get(String key); | ||||
<T> T get(String key, Class<T> type); | |||||
void delete(String key); | |||||
boolean exist(String dbUrl); | boolean exist(String dbUrl); | ||||
} | } |
@@ -44,4 +44,15 @@ public class MemoryDBConnection implements DBConnection { | |||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
@Override | |||||
public <T> T get(String key, Class<T> type) { | |||||
String record = memory.get(key); | |||||
return JSON.parseObject(record,type); | |||||
} | |||||
@Override | |||||
public void delete(String key) { | |||||
memory.remove(key); | |||||
} | |||||
} | } |
@@ -73,6 +73,32 @@ public class RocksDBConnection implements DBConnection { | |||||
return null; | return null; | ||||
} | } | ||||
@Override | |||||
public <T> T get(String key, Class<T> type) { | |||||
try { | |||||
byte[] value = this.rocksDB.get(key.getBytes(UTF_8)); | |||||
if (value != null && value.length > 0) { | |||||
String strObj = new String(value, UTF_8); | |||||
return JSON.parseObject(strObj,type); | |||||
} | |||||
} catch (Exception e) { | |||||
throw new IllegalStateException(e); | |||||
} | |||||
return null; | |||||
} | |||||
@Override | |||||
public void delete(String key) { | |||||
try { | |||||
byte[] value = this.rocksDB.get(key.getBytes(UTF_8)); | |||||
if (value != null && value.length > 0) { | |||||
this.rocksDB.delete(value); | |||||
} | |||||
} catch (Exception e) { | |||||
throw new IllegalStateException(e); | |||||
} | |||||
} | |||||
@Override | @Override | ||||
public boolean exist(String dbUrl) { | public boolean exist(String dbUrl) { | ||||
// 首先该dbUrl是Rocksdb | // 首先该dbUrl是Rocksdb | ||||
@@ -68,6 +68,16 @@ public class UmpDaoHandler implements UmpDao, CommandLineRunner, DBConnection { | |||||
return dbConnection.get(key); | return dbConnection.get(key); | ||||
} | } | ||||
@Override | |||||
public <T> T get(String key, Class<T> type) { | |||||
return dbConnection.get(key,type); | |||||
} | |||||
@Override | |||||
public void delete(String key) { | |||||
dbConnection.delete(key); | |||||
} | |||||
@Override | @Override | ||||
public boolean exist(String dbUrl) { | public boolean exist(String dbUrl) { | ||||
try { | try { | ||||
@@ -20,7 +20,7 @@ public interface DataAccountUmpService { | |||||
*/ | */ | ||||
boolean addDataAccountSchema(DataAccountSchema dataAccountSchema); | boolean addDataAccountSchema(DataAccountSchema dataAccountSchema); | ||||
DataAccountSchema deleteDataAcccountSchema(String ledgerHash, String dataAccount); | |||||
void deleteDataAcccountSchema(String ledgerHash, String dataAccount); | |||||
DataAccountSchema findDataAccountSchema(String ledgerHash, String dataAccount); | DataAccountSchema findDataAccountSchema(String ledgerHash, String dataAccount); | ||||
} | } |
@@ -1,7 +1,9 @@ | |||||
package com.jd.blockchain.ump.service; | package com.jd.blockchain.ump.service; | ||||
import com.jd.blockchain.ump.dao.DBConnection; | |||||
import com.jd.blockchain.ump.model.penetrate.DataAccountSchema; | import com.jd.blockchain.ump.model.penetrate.DataAccountSchema; | ||||
import com.jd.blockchain.ump.model.penetrate.store.MemStore; | import com.jd.blockchain.ump.model.penetrate.store.MemStore; | ||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
import static com.jd.blockchain.ump.model.UmpConstant.SCHEMA_PREFIX; | import static com.jd.blockchain.ump.model.UmpConstant.SCHEMA_PREFIX; | ||||
@@ -13,19 +15,27 @@ import static com.jd.blockchain.utils.BaseConstant.DELIMETER_UNDERLINE; | |||||
*/ | */ | ||||
@Service | @Service | ||||
public class DataAccountUmpServiceImpl implements DataAccountUmpService { | public class DataAccountUmpServiceImpl implements DataAccountUmpService { | ||||
@Autowired | |||||
private DBConnection dbConnection; | |||||
@Override | @Override | ||||
public boolean addDataAccountSchema(DataAccountSchema dataAccountSchema) { | public boolean addDataAccountSchema(DataAccountSchema dataAccountSchema) { | ||||
return MemStore.instance.put(SCHEMA_PREFIX+dataAccountSchema.getLedgerHash()+ | |||||
DELIMETER_UNDERLINE+dataAccountSchema.getDataAccount(),dataAccountSchema); | |||||
dbConnection.put(SCHEMA_PREFIX+dataAccountSchema.getLedgerHash()+ | |||||
DELIMETER_UNDERLINE+dataAccountSchema.getDataAccount(),dataAccountSchema,DataAccountSchema.class); | |||||
return true; | |||||
// return MemStore.instance.put(SCHEMA_PREFIX+dataAccountSchema.getLedgerHash()+ | |||||
// DELIMETER_UNDERLINE+dataAccountSchema.getDataAccount(),dataAccountSchema); | |||||
} | } | ||||
@Override | @Override | ||||
public DataAccountSchema deleteDataAcccountSchema(String ledgerHash, String dataAccount) { | |||||
return (DataAccountSchema)MemStore.instance.remove(SCHEMA_PREFIX+ledgerHash+ DELIMETER_UNDERLINE+dataAccount); | |||||
public void deleteDataAcccountSchema(String ledgerHash, String dataAccount) { | |||||
dbConnection.delete(SCHEMA_PREFIX+ledgerHash+ DELIMETER_UNDERLINE+dataAccount); | |||||
// MemStore.instance.remove(SCHEMA_PREFIX+ledgerHash+ DELIMETER_UNDERLINE+dataAccount); | |||||
} | } | ||||
@Override | @Override | ||||
public DataAccountSchema findDataAccountSchema(String ledgerHash, String dataAccount) { | public DataAccountSchema findDataAccountSchema(String ledgerHash, String dataAccount) { | ||||
return (DataAccountSchema)MemStore.instance.get(SCHEMA_PREFIX+ledgerHash+ DELIMETER_UNDERLINE+dataAccount); | |||||
return dbConnection.get(SCHEMA_PREFIX+ledgerHash+ DELIMETER_UNDERLINE+dataAccount,DataAccountSchema.class); | |||||
// return (DataAccountSchema)MemStore.instance.get(SCHEMA_PREFIX+ledgerHash+ DELIMETER_UNDERLINE+dataAccount); | |||||
} | } | ||||
} | } |
@@ -249,8 +249,8 @@ public class RetrievalController { | |||||
public ApiResult deleteDataAccountSchema(@PathVariable(name = "ledgerHash") String ledgerHash, | public ApiResult deleteDataAccountSchema(@PathVariable(name = "ledgerHash") String ledgerHash, | ||||
@PathVariable(name = "dataAccount") String dataAccount) { | @PathVariable(name = "dataAccount") String dataAccount) { | ||||
try { | try { | ||||
DataAccountSchema dataAccountSchema = dataAccountUmpService.deleteDataAcccountSchema(ledgerHash, dataAccount); | |||||
return new ApiResult(ErrorCode.SUCCESS,dataAccountSchema); | |||||
dataAccountUmpService.deleteDataAcccountSchema(ledgerHash, dataAccount); | |||||
return new ApiResult(ErrorCode.SUCCESS); | |||||
} catch (Exception e) { | } catch (Exception e) { | ||||
return new ApiResult(ErrorCode.SERVER_ERROR,e.getMessage()); | return new ApiResult(ErrorCode.SERVER_ERROR,e.getMessage()); | ||||
} | } | ||||