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("" + rec.getString("metric_config") + "");
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 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 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 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();
}
}
}