package com.basic.security.utils;
|
|
import android.text.TextUtils;
|
|
import com.basic.security.model.ModelAdapter;
|
import com.basic.security.utils.socket.server.SqliteSocketServer;
|
import com.ericsson.otp.erlang.OtpAuthException;
|
import com.ericsson.otp.erlang.OtpConnection;
|
import com.ericsson.otp.erlang.OtpPeer;
|
import com.ericsson.otp.erlang.OtpSelf;
|
import com.ericsson.otp.erlang.OtpTransport;
|
import com.google.gson.Gson;
|
import com.google.gson.reflect.TypeToken;
|
|
import java.io.IOException;
|
import java.lang.reflect.Type;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
public class MyOtpConnection extends OtpConnection {
|
public boolean isLocal = false;
|
public String nodeName = "";
|
|
public MyOtpConnection(OtpSelf self, OtpTransport s) throws IOException, OtpAuthException {
|
super(self, s);
|
}
|
|
public MyOtpConnection(OtpSelf self, OtpPeer other) throws IOException, OtpAuthException {
|
super(self, other);
|
}
|
|
public MyOtpConnection() {
|
}
|
|
public String getNodeIp() {
|
if (nodeName.contains("@")) {
|
try {
|
return nodeName.split("@")[1].trim();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
return "";
|
}
|
|
public void executeSql(String databaseName, String sql) {
|
getUrlResponseText(databaseName, sql);
|
}
|
|
public String getUrlResponseText(String databaseName, String sql) {
|
String remoteIp = getNodeIp();
|
if (!TextUtils.isEmpty(remoteIp)) {
|
Map<String, String> requestMap = new HashMap<>();
|
requestMap.put(SqliteSocketServer.sql_field, sql);
|
requestMap.put(SqliteSocketServer.database_name_field, databaseName);
|
Map<String, String> responseMap = SocketUtil.rpcCall(remoteIp, Constants.sqliteServerPort, requestMap);
|
System.out.println("MyOtpConnection.getUrlResponseText " + responseMap);
|
if (responseMap != null) {
|
return responseMap.get(SqliteSocketServer.data_list_field);
|
}
|
// System.out.println("MyOtpConnection.getUrlResponseText databaseName="
|
// + databaseName+", sql="+sql
|
// +" responseMap="+responseMap +" frames="+FrameUtil.getFrames()
|
// );
|
// System.out.println("MyOtpConnection.getUrlResponseText request="+requestMap+" response=" + responseMap);
|
// String url = "http://"+remoteIp+":8080/query?query="+sql;
|
// try{
|
// OkHttpClient okHttpClient = new OkHttpClient();
|
// Request request = new Request.Builder()
|
// .url(url)
|
// .get()
|
// .build();
|
// Call call = okHttpClient.newCall(request);
|
// String responseJson = call.execute().body().toString();
|
// System.out.println("MyOtpConnection.query responseJson = "+ responseJson);
|
// }catch (Exception e){
|
// e.printStackTrace();
|
// }
|
}
|
return null;
|
}
|
|
public List<Map<String, String>> query(String databaseName, String sql) {
|
String data_list_field = getUrlResponseText(databaseName, sql);
|
List<Map<String, String>> queryList = new ArrayList<>();
|
// "data_list_field" -> "[{"model":{"node_id":"liu123@192.168.1.119","father_node":" "}}]"
|
if (!TextUtils.isEmpty(data_list_field)) {
|
Type listType = new TypeToken<List<ModelAdapter>>() {
|
}.getType();
|
List<ModelAdapter> modelList = new Gson().fromJson(data_list_field, listType);
|
for (ModelAdapter model : modelList) {
|
Map<String, String> queryMap = new HashMap<>();
|
for (Map.Entry<String, Object> entry : model.model.entrySet()) {
|
queryMap.put(entry.getKey(), entry.getValue() + "");
|
}
|
queryList.add(queryMap);
|
}
|
}
|
return queryList;
|
}
|
}
|