use of lucee.runtime.type.Query in project Lucee by lucee.
the class Admin method _doGetLogSettings.
private Query _doGetLogSettings() {
Map<String, LoggerAndSourceData> loggers = config.getLoggers();
Query qry = new QueryImpl(new String[] { "name", "level", "appenderClass", "appenderBundleName", "appenderBundleVersion", "appenderArgs", "layoutClass", "layoutBundleName", "layoutBundleVersion", "layoutArgs", "readonly" }, 0, lucee.runtime.type.util.ListUtil.last("logs", '.'));
int row = 0;
Iterator<Entry<String, LoggerAndSourceData>> it = loggers.entrySet().iterator();
Entry<String, LoggerAndSourceData> e;
LoggerAndSourceData logger;
while (it.hasNext()) {
e = it.next();
logger = e.getValue();
if (logger.getDyn())
continue;
row = qry.addRow();
// row++;
qry.setAtEL("name", row, e.getKey());
qry.setAtEL("level", row, logger.getLevel().toString());
qry.setAtEL("appenderClass", row, logger.getAppenderClassDefinition().getClassName());
qry.setAtEL("appenderBundleName", row, logger.getAppenderClassDefinition().getName());
qry.setAtEL("appenderBundleVersion", row, logger.getAppenderClassDefinition().getVersionAsString());
qry.setAtEL("appenderArgs", row, toStruct(logger.getAppenderArgs()));
qry.setAtEL("layoutClass", row, logger.getLayoutClassDefinition().getClassName());
qry.setAtEL("layoutBundleName", row, logger.getLayoutClassDefinition().getName());
qry.setAtEL("layoutBundleVersion", row, logger.getLayoutClassDefinition().getVersionAsString());
qry.setAtEL("layoutArgs", row, toStruct(logger.getLayoutArgs()));
qry.setAtEL("readonly", row, logger.getReadOnly());
}
return qry;
}
use of lucee.runtime.type.Query in project Lucee by lucee.
the class DBInfo method typeIndex.
private void typeIndex(DatabaseMetaData metaData) throws PageException, SQLException {
required("table", table);
Stopwatch stopwatch = new Stopwatch(Stopwatch.UNIT_NANO);
stopwatch.start();
table = setCase(metaData, table);
int index = table.indexOf('.');
String schema = null;
if (index > 0) {
schema = table.substring(0, index);
table = table.substring(index + 1);
}
checkTable(metaData);
ResultSet tables = metaData.getIndexInfo(dbname, schema, table, false, true);
lucee.runtime.type.Query qry = new QueryImpl(tables, "query", pageContext.getTimeZone());
// type int 2 string
int rows = qry.getRecordcount();
String strType;
int type, card;
for (int row = 1; row <= rows; row++) {
// type
switch(type = Caster.toIntValue(qry.getAt(KeyConstants._type, row))) {
case 0:
strType = "Table Statistic";
break;
case 1:
strType = "Clustered Index";
break;
case 2:
strType = "Hashed Index";
break;
case 3:
strType = "Other Index";
break;
default:
strType = Caster.toString(type);
}
qry.setAt(KeyConstants._type, row, strType);
// CARDINALITY
card = Caster.toIntValue(qry.getAt(CARDINALITY, row), 0);
qry.setAt(CARDINALITY, row, Caster.toDouble(card));
}
qry.setExecutionTime(stopwatch.time());
pageContext.setVariable(name, qry);
}
use of lucee.runtime.type.Query in project Lucee by lucee.
the class DBInfo method typeProcedureColumns.
private void typeProcedureColumns(DatabaseMetaData metaData) throws SQLException, PageException {
required("procedure", procedure);
Stopwatch stopwatch = new Stopwatch(Stopwatch.UNIT_NANO);
stopwatch.start();
procedure = setCase(metaData, procedure);
pattern = setCase(metaData, pattern);
if (StringUtil.isEmpty(pattern, true))
pattern = null;
String schema = null;
int index = procedure.indexOf('.');
if (index > 0) {
schema = procedure.substring(0, index);
procedure = procedure.substring(index + 1);
}
lucee.runtime.type.Query qry = new QueryImpl(metaData.getProcedureColumns(dbname, schema, procedure, pattern), "query", pageContext.getTimeZone());
qry.setExecutionTime(stopwatch.time());
pageContext.setVariable(name, qry);
}
use of lucee.runtime.type.Query in project Lucee by lucee.
the class DBInfo method typeVersion.
private void typeVersion(DatabaseMetaData metaData) throws PageException, SQLException {
Stopwatch stopwatch = new Stopwatch(Stopwatch.UNIT_NANO);
stopwatch.start();
Key[] columns = new Key[] { DATABASE_PRODUCTNAME, DATABASE_VERSION, DRIVER_NAME, DRIVER_VERSION, JDBC_MAJOR_VERSION, JDBC_MINOR_VERSION };
String[] types = new String[] { "VARCHAR", "VARCHAR", "VARCHAR", "VARCHAR", "DOUBLE", "DOUBLE" };
lucee.runtime.type.Query qry = new QueryImpl(columns, types, 1, "query");
qry.setAt(DATABASE_PRODUCTNAME, 1, metaData.getDatabaseProductName());
qry.setAt(DATABASE_VERSION, 1, metaData.getDatabaseProductVersion());
qry.setAt(DRIVER_NAME, 1, metaData.getDriverName());
qry.setAt(DRIVER_VERSION, 1, metaData.getDriverVersion());
qry.setAt(JDBC_MAJOR_VERSION, 1, new Double(metaData.getJDBCMajorVersion()));
qry.setAt(JDBC_MINOR_VERSION, 1, new Double(metaData.getJDBCMinorVersion()));
qry.setExecutionTime(stopwatch.time());
pageContext.setVariable(name, qry);
}
use of lucee.runtime.type.Query in project Lucee by lucee.
the class Directory method actionList.
/**
* list all files and directories inside a directory
* @throws PageException
*/
public static Object actionList(PageContext pageContext, Resource directory, String serverPassword, int type, ResourceFilter filter, int listInfo, boolean recurse, String sort) throws PageException {
// check directory
SecurityManager securityManager = pageContext.getConfig().getSecurityManager();
securityManager.checkFileLocation(pageContext.getConfig(), directory, serverPassword);
if (type != TYPE_ALL) {
ResourceFilter typeFilter = (type == TYPE_DIR) ? DIRECTORY_FILTER : FILE_FILTER;
if (filter == null)
filter = typeFilter;
else
filter = new AndResourceFilter(new ResourceFilter[] { typeFilter, filter });
}
// create query Object
String[] names = new String[] { "name", "size", "type", "dateLastModified", "attributes", "mode", "directory" };
String[] types = new String[] { "VARCHAR", "DOUBLE", "VARCHAR", "DATE", "VARCHAR", "VARCHAR", "VARCHAR" };
boolean hasMeta = directory instanceof ResourceMetaData;
if (hasMeta) {
names = new String[] { "name", "size", "type", "dateLastModified", "attributes", "mode", "directory", "meta" };
types = new String[] { "VARCHAR", "DOUBLE", "VARCHAR", "DATE", "VARCHAR", "VARCHAR", "VARCHAR", "OBJECT" };
}
Array array = null;
Query query = null;
Object rtn;
if (listInfo == LIST_INFO_QUERY_ALL || listInfo == LIST_INFO_QUERY_NAME) {
boolean listOnlyNames = listInfo == LIST_INFO_QUERY_NAME;
rtn = query = new QueryImpl(listOnlyNames ? new String[] { "name" } : names, listOnlyNames ? new String[] { "VARCHAR" } : types, 0, "query");
} else
rtn = array = new ArrayImpl();
if (!directory.exists()) {
if (directory instanceof FileResource)
return rtn;
throw new ApplicationException("directory [" + directory.toString() + "] doesn't exist");
}
if (!directory.isDirectory()) {
if (directory instanceof FileResource)
return rtn;
throw new ApplicationException("file [" + directory.toString() + "] exists, but isn't a directory");
}
if (!directory.isReadable()) {
if (directory instanceof FileResource)
return rtn;
throw new ApplicationException("no access to read directory [" + directory.toString() + "]");
}
long startNS = System.nanoTime();
try {
// Query All
if (listInfo == LIST_INFO_QUERY_ALL)
_fillQueryAll(query, directory, filter, 0, hasMeta, recurse);
else // Query Name
if (listInfo == LIST_INFO_QUERY_NAME) {
if (recurse || type != TYPE_ALL)
_fillQueryNamesRec("", query, directory, filter, 0, recurse);
else
_fillQueryNames(query, directory, filter, 0);
} else // Array Name/Path
if (listInfo == LIST_INFO_ARRAY_NAME || listInfo == LIST_INFO_ARRAY_PATH) {
boolean onlyName = listInfo == LIST_INFO_ARRAY_NAME;
if (// QueryNamesRec("",query, directory, filter, 0,recurse);
!onlyName || recurse || type != TYPE_ALL)
// QueryNamesRec("",query, directory, filter, 0,recurse);
_fillArrayPathOrName(array, directory, filter, 0, recurse, onlyName);
else
_fillArrayName(array, directory, filter, 0);
}
} catch (IOException e) {
throw Caster.toPageException(e);
}
// sort
if (sort != null && query != null) {
String[] arr = sort.toLowerCase().split(",");
for (int i = arr.length - 1; i >= 0; i--) {
try {
String[] col = arr[i].trim().split("\\s+");
if (col.length == 1)
query.sort(col[0].trim());
else if (col.length == 2) {
String order = col[1].toLowerCase().trim();
if (order.equals("asc"))
query.sort(col[0], lucee.runtime.type.Query.ORDER_ASC);
else if (order.equals("desc"))
query.sort(col[0], lucee.runtime.type.Query.ORDER_DESC);
else
throw new ApplicationException("invalid order type [" + col[1] + "]");
}
} catch (Throwable t) {
ExceptionUtil.rethrowIfNecessary(t);
}
}
}
if (query != null)
query.setExecutionTime(System.nanoTime() - startNS);
return rtn;
}
Aggregations