forked from fanruan/demo-tabledata-redis
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.6 KiB
90 lines
2.6 KiB
package com.fr.plugin.db.redis.core; |
|
|
|
import com.fanruan.api.data.open.BaseDataModel; |
|
import com.fr.plugin.context.PluginContexts; |
|
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; |
|
} |
|
if (!PluginContexts.currentContext().isAvailable()) { |
|
throw new RuntimeException("Redis Plugin License Expired!"); |
|
} |
|
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 { |
|
|
|
} |
|
}
|
|
|