package com.smtaiserver.smtaiserver.attach;
|
|
import com.smtaiserver.smtaiserver.database.SMTDatabase;
|
import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord;
|
import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecords;
|
import com.smtaiserver.smtaiserver.javaai.ast.ASTDBMap;
|
import com.smtservlet.util.Json;
|
import com.smtservlet.util.SMTJsonWriter;
|
import com.smtservlet.util.SMTStatic;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.Map.Entry;
|
import org.dom4j.Document;
|
import org.dom4j.Element;
|
|
public class SMTAIAttachMetricDef
|
{
|
private String _id;
|
private String _title;
|
private String _group;
|
private SMTAttachMetricSqlXml _sqlxmlName;
|
private SMTAttachMetricSqlXml _sqlxmlValue;
|
|
public SMTAIAttachMetricDef(DBRecord rec) throws Exception
|
{
|
_id = rec.getString("metric_id");
|
_title = rec.getString("metric_title");
|
_group = rec.getString("metric_group");
|
Document doc = SMTStatic.convStrToXmlDoc("<ROOT>" + rec.getString("metric_config") + "</ROOT>");
|
Element xmlNameSql = (Element) doc.selectSingleNode("ROOT/NAME_SQL");
|
_sqlxmlName = new SMTAttachMetricSqlXml(xmlNameSql);
|
|
Element xmValueSql = (Element) doc.selectSingleNode("ROOT/VALUE_SQL");
|
_sqlxmlValue = new SMTAttachMetricSqlXml(xmValueSql);
|
|
}
|
|
public String getId()
|
{
|
return _id;
|
}
|
|
public String getTitle()
|
{
|
return _title;
|
}
|
|
public String getGroup()
|
{
|
return _group;
|
}
|
|
public void queryNameToJson(String name, SMTJsonWriter jsonWr) throws Exception
|
{
|
try(ASTDBMap dbMap = new ASTDBMap())
|
{
|
SMTDatabase db = dbMap.getDatabase(_sqlxmlName.getDSId());
|
String sql = _sqlxmlName.createSQL(null);
|
// DBRecords recs = db.querySQL("SELECT * FROM (" + sql + ") T WHERE title ILIKE ? LIMIT 5", new Object[] {"%" + name + "%"});
|
DBRecords recs = db.querySQL("SELECT * FROM (" + sql + ") T WHERE title ILIKE ? ", new Object[] {"%" + name + "%"});
|
for(DBRecord rec : recs.getRecords())
|
{
|
jsonWr.beginMap(null);
|
for(Entry<String, Integer> entry : rec.getFieldMap().entrySet())
|
{
|
jsonWr.addKeyValue(entry.getKey(), rec.getString(entry.getValue()));
|
}
|
jsonWr.endMap();
|
}
|
}
|
}
|
|
public void queryValueToJson(Date startTime, Date endTime, Json jsonQuotaKey, SMTJsonWriter jsonWr,Integer limit) throws Exception
|
{
|
try(ASTDBMap dbMap = new ASTDBMap())
|
{
|
Map<String, String> mapArgs = new HashMap<>();
|
mapArgs.put("start_time", SMTStatic.toString(startTime));
|
mapArgs.put("end_time", SMTStatic.toString(endTime));
|
mapArgs.put("limit", SMTStatic.toString(limit));
|
|
for(Entry<String, Json> entry : jsonQuotaKey.asJsonMap().entrySet())
|
{
|
mapArgs.put(entry.getKey(), entry.getValue().asString());
|
}
|
|
SMTDatabase db = dbMap.getDatabase(_sqlxmlName.getDSId());
|
String sql = _sqlxmlValue.createSQL(mapArgs);
|
DBRecords recs = db.querySQL(sql, null);
|
|
jsonWr.beginArray("columns");
|
{
|
jsonWr.addKeyValue(null, "时间");
|
jsonWr.addKeyValue(null, _title);
|
}
|
jsonWr.endArray();
|
|
jsonWr.beginArray("records");
|
for(DBRecord rec : recs.getRecords())
|
{
|
jsonWr.beginArray(null);
|
{
|
jsonWr.addKeyValue(null, rec.getString("time"));
|
jsonWr.addKeyValue(null, rec.getString("value"));
|
}
|
jsonWr.endArray();
|
}
|
jsonWr.endArray();
|
}
|
}
|
}
|