Browse Source

REPORT-11622 信息收集移至云中心

research/10.0
alex.sung 6 years ago
parent
commit
c8ca6714ae
  1. 187
      designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java

187
designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java

@ -20,15 +20,23 @@ import com.fr.general.DesUtils;
import com.fr.general.GeneralUtils; import com.fr.general.GeneralUtils;
import com.fr.general.IOUtils; import com.fr.general.IOUtils;
import com.fr.general.http.HttpClient; import com.fr.general.http.HttpClient;
import com.fr.intelli.record.FocusPoint;
import com.fr.intelli.record.MetricException;
import com.fr.intelli.record.MetricRegistry;
import com.fr.json.JSONArray; import com.fr.json.JSONArray;
import com.fr.json.JSONException; import com.fr.json.JSONException;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
import com.fr.log.message.ParameterMessage;
import com.fr.record.DBRecordXManager; import com.fr.record.DBRecordXManager;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.EncodeConstants; import com.fr.stable.EncodeConstants;
import com.fr.stable.ProductConstants; import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.query.QueryFactory;
import com.fr.stable.query.condition.QueryCondition;
import com.fr.stable.query.data.DataList;
import com.fr.stable.query.restriction.RestrictionFactory;
import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLReadable; import com.fr.stable.xml.XMLReadable;
import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLTools;
@ -84,6 +92,8 @@ public class InformationCollector implements XMLReadable, XMLWriter {
public static final String TABLE_NAME = "fr_functionrecord"; public static final String TABLE_NAME = "fr_functionrecord";
public static final String FUNC_COLUMNNAME = "func"; public static final String FUNC_COLUMNNAME = "func";
public static final String COLUMN_TIME = "time";
public static final String TABLE_FUNCTION_RECORD = "function.record";
private static InformationCollector collector; private static InformationCollector collector;
@ -211,129 +221,39 @@ public class InformationCollector implements XMLReadable, XMLWriter {
if (currentTime - lastTime <= DELTA) { if (currentTime - lastTime <= DELTA) {
return; return;
} }
String content = null;
// byte[] content = ArrayUtils.EMPTY_BYTE_ARRAY;
// Connection conn = null;
// Table table = new Table(TABLE_NAME);
// try {
// conn = DBRecordXManager.getDB().createConnection();
// ResultSet rs = selectAllFromLogDB(conn, table);
//
// if(rs == null){
// return;
// }
// content = getFunctionsContentAsByte(rs);
// } catch (Exception e) {
// FRContext.getLogger().error(e.getMessage(), e);
// } finally {
// DBUtils.closeConnection(conn);
// }
//
// HttpClient httpClient = new HttpClient(CloudCenter.getInstance().acquireUrlByKind("functions.info"));
// httpClient.setContent(content);
// httpClient.setTimeout(5000);
//
// if (!httpClient.isServerAlive()) {
// return;
// }
//
// String res = httpClient.getResponseText();
// boolean success = false;
// try {
// success = ComparatorUtils.equals(new JSONObject(res).get("status"), "success");
// } catch (JSONException e) {
// FRContext.getLogger().error(e.getMessage(), e);
// }
// //服务器返回true, 说明已经获取成功, 清空当前记录的信息
// if (success) {
// deleteLogDB(conn, table);
// }
}
private void deleteLogDB(Connection conn, Table table) {
try { try {
conn = DBRecordXManager.getDB().createConnection(); content = getFunctionsContentAsByte(currentTime);
Delete delete = new Delete(table); } catch (JSONException e) {
delete.execute(conn); e.printStackTrace();
} catch (Exception e) { }
FRContext.getLogger().error(e.getMessage(), e); if(StringUtils.isNotEmpty(content)){
} finally { HashMap<String, String> para = new HashMap<>();
DBUtils.closeConnection(conn); String url = CloudCenter.getInstance().acquireUrlByKind(TABLE_FUNCTION_RECORD);
} para.put("token", SiteCenterToken.generateToken());
} para.put("content", content);
HttpClient httpClient = new HttpClient(url, para, true);
httpClient.setTimeout(5000);
private byte[] getFunctionsContentAsByte(ResultSet rs) throws JSONException{ httpClient.asGet();
com.fr.json.JSONObject content = new com.fr.json.JSONObject();
HashMap resultMap = new HashMap(); if (!httpClient.isServerAlive()) {
return;
try {
while (rs.next()) {
com.fr.json.JSONObject js = new com.fr.json.JSONObject(rs.getString(FUNC_COLUMNNAME));
Map tempMap = js.toMap();
for (Object key : tempMap.keySet()) {
if(resultMap.containsKey(key)){
int cacheCount = Integer.parseInt(resultMap.get(key).toString());
int currentCount = Integer.parseInt(tempMap.get(key).toString());
resultMap.put(key, cacheCount + currentCount);
} else {
resultMap.put(key, tempMap.get(key));
}
}
}
rs.close();
} catch (SQLException e) {
//这边不记,可能还没建表
}
JSONArray functionArray = new JSONArray();
for(Object key : resultMap.keySet()){
com.fr.json.JSONObject jsonObject = new com.fr.json.JSONObject();
jsonObject.put("point", key);
jsonObject.put("times", resultMap.get(key));
functionArray.put(jsonObject);
} }
DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); String res = httpClient.getResponseText();
content.put("username", MarketConfig.getInstance().getBbsUsername()); boolean success = false;
content.put("uuid", envManager.getUUID());
content.put("functions", functionArray);
try { try {
return content.toString().getBytes(EncodeConstants.ENCODING_UTF_8); success = ComparatorUtils.equals(new JSONObject(res).get("status"), "success");
} catch (UnsupportedEncodingException e) { } catch (JSONException e) {
FRContext.getLogger().error(e.getMessage(), e); FRContext.getLogger().error(e.getMessage(), e);
return ArrayUtils.EMPTY_BYTE_ARRAY;
} }
//服务器返回true, 说明已经获取成功, 清空当前记录的信息
if (success) {
deleteFunctionRecords(currentTime);
} }
private ResultSet selectAllFromLogDB(Connection conn, Table table) {
Select select = new Select(table, DialectFactory.generateDialect(conn));
PreparedStatement ps;
ResultSet rs;
try {
ps = select.createPreparedStatement(conn);
} catch (SQLException e) {
return null;
} }
try {
rs = ps.executeQuery();
} catch (SQLException e) {
try {
ps.close();
} catch (SQLException e1) {
//这边不记,可能还没建表
}
return null;
}
return rs;
} }
/** /**
* 收集开始使用时间发送信息 * 收集开始使用时间发送信息
*/ */
@ -494,6 +414,47 @@ public class InformationCollector implements XMLReadable, XMLWriter {
}); });
} }
public static String getFunctionsContentAsByte(long currentTime) throws JSONException{
com.fr.json.JSONObject content = new com.fr.json.JSONObject();
QueryCondition condition = QueryFactory.create().addRestriction(
RestrictionFactory.lte(COLUMN_TIME, currentTime)
);
try {
DataList<FocusPoint> focusPoints = MetricRegistry.getMetric().find(FocusPoint.class, condition);
JSONArray functionArray = new JSONArray();
if(!focusPoints.isEmpty()){
for(FocusPoint focusPoint : focusPoints.getList()){
com.fr.json.JSONObject jsonObject = new com.fr.json.JSONObject();
jsonObject.put("id", focusPoint.getId());
jsonObject.put("text", focusPoint.getText());
jsonObject.put("source", focusPoint.getSource());
jsonObject.put("time", focusPoint.getTime());
jsonObject.put("title", focusPoint.getTitle());
functionArray.put(jsonObject);
}
DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();
content.put("username", MarketConfig.getInstance().getBbsUsername());
content.put("uuid", envManager.getUUID());
content.put("functions", functionArray);
}
} catch (MetricException e) {
e.printStackTrace();
}
return content.toString();
}
private void deleteFunctionRecords(long currentTime) {
QueryCondition condition = QueryFactory.create().addRestriction(
RestrictionFactory.lte(COLUMN_TIME, currentTime)
);
try {
MetricRegistry.getMetric().clean(condition);
}catch (Exception e){
e.printStackTrace();
}
}
private class StartStopTime implements XMLReadable, XMLWriter { private class StartStopTime implements XMLReadable, XMLWriter {
private String startDate; private String startDate;

Loading…
Cancel
Save