package com.smtaiserver.smtaiserver.attach; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node; import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord; import com.smtaiserver.smtaiserver.javaai.ast.ASTDBMap; import com.smtservlet.util.Json; import com.smtservlet.util.SMTJsonWriter; import com.smtservlet.util.SMTStatic; public class SMTAIAttachTableDef { public static class SMTAIAttachTableColumn { private String _name; private String _title; private char _type; private String _filter; private String _chartType; public SMTAIAttachTableColumn(Element xmlColumn) throws Exception { _name = SMTStatic.getXmlAttr(xmlColumn, "name"); _title = SMTStatic.getXmlAttr(xmlColumn, "title"); _type = SMTStatic.getXmlAttr(xmlColumn, "type").charAt(0); _filter = SMTStatic.getXmlAttr(xmlColumn, "filter", null); _chartType = SMTStatic.getXmlAttr(xmlColumn, "chart_type", null); } public String getChartType() { return _chartType; } public String getName() { return _name; } public String getTitle() { return _title; } public char getType() { return _type; } public String getFilter() { return _filter; } } private boolean _isChartTable = false; private String _id; private String _title; private String _group; private SMTAttachTableSqlXml _sqlXml; private List _listColumns = new ArrayList<>(); public SMTAIAttachTableDef(DBRecord rec) throws Exception { _id = rec.getString("table_id"); _title = rec.getString("table_title"); _group = rec.getString("table_group"); Document doc = SMTStatic.convStrToXmlDoc("" + rec.getString("table_config") + ""); Element xmlSQL = (Element)doc.selectSingleNode("ROOT/SQL"); _sqlXml = new SMTAttachTableSqlXml(xmlSQL); Element xmlColumns = (Element)doc.selectSingleNode("ROOT/COLUMNS"); _isChartTable = "true".endsWith(SMTStatic.getXmlAttr(xmlColumns, "is_chart", "false")); for(Node nodeColumn : xmlColumns.selectNodes("COLUMN")) { SMTAIAttachTableColumn column = new SMTAIAttachTableColumn((Element)nodeColumn); _listColumns.add(column); } } public boolean isChartTable() { return _isChartTable; } public List getColumnList() { return _listColumns; } public String getId() { return _id; } public String getTitle() { return _title; } public String getGroup() { return _group; } public void queryRecordsToJson(Json jsonFilter, Json jsonOrder, SMTJsonWriter jsonWr) throws Exception { try(ASTDBMap dbMap = new ASTDBMap()) { _sqlXml.querySQLToJson(dbMap, jsonFilter, jsonOrder, this, jsonWr); } } }