package
com.zt.ots;
import
java.util.Iterator;
import
java.util.LinkedList;
import
java.util.List;
import
com.aliyun.openservices.ots.ClientException;
import
com.aliyun.openservices.ots.OTSClient;
import
com.aliyun.openservices.ots.OTSException;
import
com.aliyun.openservices.ots.model.ColumnValue;
import
com.aliyun.openservices.ots.model.PrimaryKeyValue;
import
com.aliyun.openservices.ots.model.RangeIteratorParameter;
import
com.aliyun.openservices.ots.model.Row;
import
com.aliyun.openservices.ots.model.RowPrimaryKey;
import
com.aliyun.openservices.ots.model.condition.RelationalCondition;
import
com.zt.mvc.web.model.User;
/**
* @author wanglu
* 描述:OTS 操作类
*
*/
public
class
OTSOperation {
private
static
final
String COLUMN_GID_NAME =
"gid"
;
private
static
final
String COLUMN_UID_NAME =
"uid"
;
private
static
final
String COLUMN_NAME_NAME =
"name"
;
private
static
final
String COLUMN_ADDRESS_NAME =
"address"
;
private
static
final
String COLUMN_AGE_NAME =
"age"
;
private
static
final
String COLUMN_MOBILE_NAME =
"mobile"
;
/**
* 使用过滤功能读取一行数据
* @param gid
* @param uid
*/
public
static
List<User> getRowByFilter(String name) {
final
String accessId =
"<access_key_id>"
;
final
String accessKey =
"<access_key_sceret>"
;
final
String instanceName =
"cloud-report"
;
OTSClient client =
new
OTSClient(endPoint, accessId, accessKey, instanceName);
final
String tableName =
"User_Info"
;
try
{
RangeIteratorParameter param =
new
RangeIteratorParameter(tableName);
RowPrimaryKey startPk =
new
RowPrimaryKey();
startPk.addPrimaryKeyColumn(COLUMN_GID_NAME, PrimaryKeyValue.fromLong(
0
));
startPk.addPrimaryKeyColumn(COLUMN_UID_NAME, PrimaryKeyValue.INF_MIN);
RowPrimaryKey endPk =
new
RowPrimaryKey();
endPk.addPrimaryKeyColumn(COLUMN_GID_NAME, PrimaryKeyValue.fromLong(
500
));
endPk.addPrimaryKeyColumn(COLUMN_UID_NAME, PrimaryKeyValue.INF_MAX);
param.setInclusiveStartPrimaryKey(startPk);
param.setExclusiveEndPrimaryKey(endPk);
RelationalCondition filter =
new
RelationalCondition(COLUMN_NAME_NAME, RelationalCondition.CompareOperator.EQUAL, ColumnValue.fromString(name));
param.setFilter(filter);
Iterator<Row> rowIter = client.createRangeIterator(param);
int
totalRows =
0
;
List<User> result =
new
LinkedList<User>();
User user;
while
(rowIter.hasNext()) {
Row row = rowIter.next();
user =
new
User();
user.setGid(row.getColumns().get(COLUMN_GID_NAME).toString());
user.setUid(row.getColumns().get(COLUMN_UID_NAME).toString());
user.setName(row.getColumns().get(COLUMN_NAME_NAME).toString());
user.setAddress(row.getColumns().get(COLUMN_ADDRESS_NAME).toString());
user.setAge(row.getColumns().get(COLUMN_AGE_NAME).toString());
user.setMobile(row.getColumns().get(COLUMN_MOBILE_NAME).toString());
result.add(user);
totalRows++;
System.out.println(row);
}
System.out.println(
"Total rows read: "
+ totalRows);
System.out.println(
"Get row succeeded."
);
return
result;
}
catch
(ClientException ex) {
System.out.println(
"Get row failed."
);
}
catch
(OTSException ex) {
System.out.println(
"Get row failed."
);
}
finally
{
client.shutdown();
}
return
null
;
}
}