|
|
|
package com.fr.plugin.db.redis.core;
|
|
|
|
|
|
|
|
import com.fanruan.api.data.open.BaseDataModel;
|
|
|
|
import com.fr.plugin.db.redis.core.emb.Redis;
|
|
|
|
import com.fr.plugin.db.redis.core.script.EngineType;
|
|
|
|
import com.fr.plugin.db.redis.help.RedisClient;
|
|
|
|
import com.fr.plugin.db.redis.help.RedisClientSelector;
|
|
|
|
import com.fr.plugin.db.redis.help.client.SimpleDataModel;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author richie
|
|
|
|
* @version 10.0
|
|
|
|
* Created by richie on 2019-03-18
|
|
|
|
*/
|
|
|
|
public class RedisScriptTableDataModel extends BaseDataModel {
|
|
|
|
|
|
|
|
private RedisDatabaseConnection mc;
|
|
|
|
private EngineType engineType;
|
|
|
|
private String script;
|
|
|
|
private int dbIndex;
|
|
|
|
private int rowCount;
|
|
|
|
private List<List<Object>> data = new ArrayList<List<Object>>();
|
|
|
|
private String[] columnNames = null;
|
|
|
|
|
|
|
|
public RedisScriptTableDataModel(RedisDatabaseConnection mc, EngineType engineType, int dbIndex, String script, int rowCount) {
|
|
|
|
this.mc = mc;
|
|
|
|
this.engineType = engineType;
|
|
|
|
this.script = script;
|
|
|
|
this.dbIndex = dbIndex;
|
|
|
|
this.rowCount = rowCount;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void buildData() {
|
|
|
|
if (columnNames != null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
Redis redis = mc.createRedisClient();
|
|
|
|
redis.getClient().select(dbIndex);
|
|
|
|
RedisClient redisClient = RedisClientSelector.select(redis, engineType);
|
|
|
|
SimpleDataModel simple = redisClient.build(redis, script, rowCount);
|
|
|
|
if (simple != null) {
|
|
|
|
this.columnNames = simple.getColumnNames();
|
|
|
|
this.data = simple.getData();
|
|
|
|
this.rowCount = simple.getRowCount();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getColumnCount() {
|
|
|
|
buildData();
|
|
|
|
return columnNames == null ? 0 : columnNames.length;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getColumnName(int i) {
|
|
|
|
buildData();
|
|
|
|
return columnNames == null ? null : columnNames[i];
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getRowCount() {
|
|
|
|
buildData();
|
|
|
|
return data.size();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object getValueAt(int rowIndex, int columnIndex) {
|
|
|
|
buildData();
|
|
|
|
if (data != null && data.size() > rowIndex) {
|
|
|
|
List<Object> rowData = data.get(rowIndex);
|
|
|
|
if (rowData != null && rowData.size() > columnIndex) {
|
|
|
|
return rowData.get(columnIndex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void release() throws Exception {
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|