Search in sources :

Example 6 with Query

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;
}
Also used : LoggerAndSourceData(lucee.commons.io.log.LoggerAndSourceData) QueryImpl(lucee.runtime.type.QueryImpl) DebugEntry(lucee.runtime.config.DebugEntry) Entry(java.util.Map.Entry) GatewayEntry(lucee.runtime.gateway.GatewayEntry) Query(lucee.runtime.type.Query)

Example 7 with Query

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);
}
Also used : QueryImpl(lucee.runtime.type.QueryImpl) Stopwatch(lucee.runtime.timer.Stopwatch) ResultSet(java.sql.ResultSet) Query(lucee.runtime.type.Query)

Example 8 with Query

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);
}
Also used : QueryImpl(lucee.runtime.type.QueryImpl) Stopwatch(lucee.runtime.timer.Stopwatch) Query(lucee.runtime.type.Query)

Example 9 with Query

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);
}
Also used : QueryImpl(lucee.runtime.type.QueryImpl) Stopwatch(lucee.runtime.timer.Stopwatch) Key(lucee.runtime.type.Collection.Key) Query(lucee.runtime.type.Query)

Example 10 with Query

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;
}
Also used : SecurityManager(lucee.runtime.security.SecurityManager) Query(lucee.runtime.type.Query) AndResourceFilter(lucee.commons.io.res.filter.AndResourceFilter) ArrayImpl(lucee.runtime.type.ArrayImpl) FileResource(lucee.commons.io.res.type.file.FileResource) IOException(java.io.IOException) Array(lucee.runtime.type.Array) AndResourceFilter(lucee.commons.io.res.filter.AndResourceFilter) NotResourceFilter(lucee.commons.io.res.filter.NotResourceFilter) FileResourceFilter(lucee.commons.io.res.filter.FileResourceFilter) OrResourceFilter(lucee.commons.io.res.filter.OrResourceFilter) ResourceFilter(lucee.commons.io.res.filter.ResourceFilter) DirectoryResourceFilter(lucee.commons.io.res.filter.DirectoryResourceFilter) QueryImpl(lucee.runtime.type.QueryImpl) ApplicationException(lucee.runtime.exp.ApplicationException) ResourceMetaData(lucee.commons.io.res.ResourceMetaData)

Aggregations

Query (lucee.runtime.type.Query)82 QueryImpl (lucee.runtime.type.QueryImpl)52 Struct (lucee.runtime.type.Struct)19 Array (lucee.runtime.type.Array)16 Collection (lucee.runtime.type.Collection)14 Iterator (java.util.Iterator)13 PageException (lucee.runtime.exp.PageException)12 Map (java.util.Map)11 StructImpl (lucee.runtime.type.StructImpl)11 ApplicationException (lucee.runtime.exp.ApplicationException)10 Stopwatch (lucee.runtime.timer.Stopwatch)10 Key (lucee.runtime.type.Collection.Key)9 List (java.util.List)8 IOException (java.io.IOException)7 ArrayList (java.util.ArrayList)7 HashMap (java.util.HashMap)7 QueryColumn (lucee.runtime.type.QueryColumn)7 Enumeration (java.util.Enumeration)6 Entry (java.util.Map.Entry)6 FunctionException (lucee.runtime.exp.FunctionException)6