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.

179 lines
5.5 KiB

package com.eco.plugin.xxx.mkssso.serverdata;
import com.eco.plugin.xxx.mkssso.config.PluginSimpleConfig;
import com.eco.plugin.xxx.mkssso.utils.FRUtils;
import com.eco.plugin.xxx.mkssso.utils.HttpUtils;
import com.fr.base.TableData;
import com.fr.data.AbstractDataModel;
import com.fr.general.data.TableDataException;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
public class UserHttpDataModel extends AbstractDataModel {
private static String[] COLUMN_NAMES = {"id", "name", "disPlayName","email","phone",
"organizationUnitId","organizationUnitName","parentOrganizationUnitId","parentOrganizationUnitName","titleId","titleName","psd"};
private int rowCount = TableData.RESULT_ALL;
private DatasetData datas = new DatasetData();
public UserHttpDataModel(int count) {
this.rowCount = count;
if (this.rowCount == 0) {
return;
}
queryData();
}
//获取列的数量
@Override
public int getColumnCount() throws TableDataException {
return COLUMN_NAMES.length;
}
//获取列的名称
@Override
public String getColumnName(int i) throws TableDataException {
return COLUMN_NAMES[i];
}
//是否还有行
@Override
public boolean hasRow(int rowIndex) throws TableDataException {
int count = getRowCount();
return rowIndex < count;
}
//获取行数量
@Override
public int getRowCount() throws TableDataException {
if (this.datas == null) {
return 0;
}
List<List<Object>> values = this.datas.getValues();
if (values == null) {
return 0;
}
int count = values.size();
return count;
}
//获取数据
@Override
public Object getValueAt(int rowIndex, int columnIndex){
if (this.datas == null) {
return "";
}
List<List<Object>> values = this.datas.getValues();
if ((values == null) || (values.size() <= rowIndex)) {
return "";
}
List<Object> rowValues = values.get(rowIndex);
if ((rowValues == null) || (rowValues.size() <= columnIndex)) {
return "";
}
return rowValues.get(columnIndex);
}
//释放
@Override
public void release() {
this.datas = null;
}
/**
* 查询数据
*/
private void queryData() {
try {
createDatas();
} catch (Exception e) {
FRUtils.FRLogInfo("数据集获取用户信息,请求出错:"+e.getMessage());
throw new NullPointerException("数据集获取用户信息为空," + e.getMessage());
}
}
/**
* 获取用户
* @return
*/
private JSONArray getUser(){
PluginSimpleConfig psc = PluginSimpleConfig.getInstance();
Map<String,String> header = new HashMap<String,String>();
header.put("Authorization","Bearer "+getToken(psc));
String result = HttpUtils.get(psc.getUserinfo(),null,header);
return new JSONArray(result);
}
/**
* 获取token
* @return
*/
private static String getToken(PluginSimpleConfig psc){
String url = psc.getUsertoken();
Map<String,String> param = new HashMap<String,String>();
param.put("grant_type","client_credentials");
param.put("client_id",psc.getUserclientId());
param.put("client_secret",psc.getUsersecret());
param.put("scope","PaaS_Account");
String result = HttpUtils.HttpPostWWWForm(url,null,param);
JSONObject json = new JSONObject(result);
return json.getString("access_token");
}
private void createDatas() {
JSONArray json = getUser();
addRowDatas(json);
}
/**
* 添加行数据
* @param jsonArray
*/
private void addRowDatas(JSONArray jsonArray) {
if(jsonArray == null || jsonArray.size() <= 0){
return ;
}
for(int i =0;i< jsonArray.size();i++){
JSONObject org = jsonArray.getJSONObject(i);
String id = org.getString("id");
String name = org.getString("name");
String disPlayName = org.getString("disPlayName");
String email = org.getString("email ");
String phone = org.getString("phone");
String organizationUnitId = org.getString("organizationUnitId");
String organizationUnitName = org.getString("organizationUnitName");
String parentOrganizationUnitId = org.getString("parentOrganizationUnitId");
String parentOrganizationUnitName = org.getString("parentOrganizationUnitName");
String titleId = org.getString("titleId");
String titleName = org.getString("titleName");
String psd = UUID.randomUUID().toString();
List<Object> rowDatas = new ArrayList<Object>();
rowDatas.add(id);
rowDatas.add(name);
rowDatas.add(disPlayName);
rowDatas.add(email);
rowDatas.add(phone);
rowDatas.add(organizationUnitId);
rowDatas.add(organizationUnitName);
rowDatas.add(parentOrganizationUnitId);
rowDatas.add(parentOrganizationUnitName);
rowDatas.add(titleId);
rowDatas.add(titleName);
rowDatas.add(psd);
List<List<Object>> values = this.datas.getValues();
values.add(rowDatas);
}
}
}