Search in sources :

Example 46 with Column

use of com.servoy.j2db.persistence.Column in project servoy-client by Servoy.

the class ViewFoundSet method sort.

@Override
public void sort(List<SortColumn> sortColumns, boolean defer) throws ServoyException {
    if (!defer && doSave(null) != ISaveConstants.STOPPED) {
        // $NON-NLS-1$
        manager.getApplication().reportJSError("Couldn't do a sort because there are edited records on this foundset: " + this, null);
        return;
    }
    this.select.clearSorts();
    if (sortColumns != null)
        this.select.setSorts((ArrayList<? extends IQuerySort>) sortColumns.stream().map(sort -> new QuerySort(((Column) sort.getColumn()).queryColumn(this.select.getTable()), sort.getSortOrder() == SortColumn.ASCENDING, manager.getSortOptions(sort.getColumn()))).collect(Collectors.toList()));
    this.loadAllRecordsImpl();
}
Also used : QueryColumn(com.servoy.j2db.query.QueryColumn) IColumn(com.servoy.j2db.persistence.IColumn) IBaseColumn(com.servoy.base.persistence.IBaseColumn) Column(com.servoy.j2db.persistence.Column) ArrayList(java.util.ArrayList) QuerySort(com.servoy.j2db.query.QuerySort) IQuerySort(com.servoy.j2db.query.IQuerySort) IQuerySort(com.servoy.j2db.query.IQuerySort)

Example 47 with Column

use of com.servoy.j2db.persistence.Column in project servoy-client by Servoy.

the class LookupValueList method getDisplayFormat.

public String[] getDisplayFormat() {
    String[] displayFormats = new String[3];
    if (// format is linked to dataproviderid, so returning it could lead to incorrect display
    displayFormat == null || hasRealValues()) {
        if (table != null) {
            Column col1 = table.getColumn(valueList.getDataProviderID1());
            if (col1 != null && col1.getColumnInfo() != null)
                displayFormats[0] = col1.getColumnInfo().getDefaultFormat();
            Column col2 = table.getColumn(valueList.getDataProviderID2());
            if (col2 != null && col2.getColumnInfo() != null)
                displayFormats[1] = col2.getColumnInfo().getDefaultFormat();
            Column col3 = table.getColumn(valueList.getDataProviderID3());
            if (col3 != null && col3.getColumnInfo() != null)
                displayFormats[2] = col3.getColumnInfo().getDefaultFormat();
        }
    } else {
        for (int i = 0; i < displayFormats.length; i++) {
            displayFormats[i] = displayFormat;
        }
    }
    return displayFormats;
}
Also used : Column(com.servoy.j2db.persistence.Column) DisplayString(com.servoy.j2db.dataprocessing.CustomValueList.DisplayString)

Example 48 with Column

use of com.servoy.j2db.persistence.Column in project servoy-client by Servoy.

the class MetaDataUtils method generateMetaDataFileContents.

public static String generateMetaDataFileContents(ITable table, int max) throws RemoteException, ServoyException, JSONException, TooManyRowsException {
    // LinkedHashMap to keep order for column names
    LinkedHashMap<Column, QueryColumn> qColumns = new LinkedHashMap<Column, QueryColumn>();
    QuerySelect query = createTableMetadataQuery(table, qColumns);
    BufferedDataSet dataSet = (BufferedDataSet) ApplicationServerRegistry.get().getDataServer().performQuery(ApplicationServerRegistry.get().getClientId(), table.getServerName(), null, query, null, null, false, 0, max, IDataServer.META_DATA_QUERY, null);
    // not too much data?
    if (dataSet.hadMoreRows()) {
        throw new TooManyRowsException();
    }
    String[] columnNames = new String[qColumns.size()];
    int i = 0;
    for (Column column : qColumns.keySet()) {
        columnNames[i++] = column.getName();
    }
    dataSet.setColumnNames(columnNames);
    return serializeTableMetaDataContents(dataSet);
}
Also used : QueryColumn(com.servoy.j2db.query.QueryColumn) IColumn(com.servoy.j2db.persistence.IColumn) IBaseColumn(com.servoy.base.persistence.IBaseColumn) Column(com.servoy.j2db.persistence.Column) QueryColumn(com.servoy.j2db.query.QueryColumn) QuerySelect(com.servoy.j2db.query.QuerySelect) LinkedHashMap(java.util.LinkedHashMap)

Example 49 with Column

use of com.servoy.j2db.persistence.Column in project servoy-client by Servoy.

the class QBJoin method createColumn.

@Override
protected QBColumn createColumn(String name) throws RepositoryException {
    ITableReference foreignTableReference = join.getForeignTableReference();
    if (foreignTableReference instanceof TableExpression) {
        Table joinTable = getRoot().getTable(foreignTableReference.getTable().getDataSource());
        if (joinTable == null) {
            throw new RepositoryException("Cannot find column '" + name + "' in data source '" + foreignTableReference.getTable().getDataSource() + "'");
        }
        Column col = joinTable.getColumn(name);
        if (col == null) {
            throw new RepositoryException("Cannot find column '" + name + "' in data source '" + foreignTableReference.getTable().getDataSource() + "'");
        }
        return new QBColumn(getRoot(), this, new QueryColumn(getQueryTable(), col.getID(), col.getSQLName(), col.getType(), col.getLength(), col.getScale(), col.getNativeTypename(), col.getFlags(), false));
    } else if (foreignTableReference instanceof DerivedTable) {
        QuerySelect query = ((DerivedTable) foreignTableReference).getQuery();
        for (IQuerySelectValue qcol : query.getColumns()) {
            if (name.equals(qcol.getAliasOrName()) || (qcol.getColumn() != null && name.equals(generateNormalizedNonReservedOSName(qcol.getColumn().getName())))) {
                return new QBColumn(getRoot(), this, new QueryColumn(foreignTableReference.getTable(), generateNormalizedNonReservedOSName(name)));
            }
        }
    }
    throw new RepositoryException("Cannot find column '" + name + "' in source '" + foreignTableReference + "'");
}
Also used : DerivedTable(com.servoy.j2db.query.DerivedTable) BaseQueryTable(com.servoy.base.query.BaseQueryTable) Table(com.servoy.j2db.persistence.Table) DerivedTable(com.servoy.j2db.query.DerivedTable) QueryColumn(com.servoy.j2db.query.QueryColumn) Column(com.servoy.j2db.persistence.Column) ITableReference(com.servoy.j2db.query.ITableReference) QueryColumn(com.servoy.j2db.query.QueryColumn) RepositoryException(com.servoy.j2db.persistence.RepositoryException) TableExpression(com.servoy.j2db.query.TableExpression) QuerySelect(com.servoy.j2db.query.QuerySelect) IQuerySelectValue(com.servoy.j2db.query.IQuerySelectValue)

Example 50 with Column

use of com.servoy.j2db.persistence.Column in project servoy-client by Servoy.

the class JSRelation method newRelationItem.

/**
 * Creates a new relation item for this relation. The primary dataprovider, the foreign data provider
 * and one relation operators (like '=' '!=' '>' '<') must be provided.
 *
 * @sample
 * var relation = solutionModel.newRelation('parentToChild', 'db:/example_data/parent_table', 'db:/example_data/child_table', JSRelation.INNER_JOIN);
 * relation.newRelationItem('another_parent_table_id', '=', 'another_child_table_parent_id');
 * // for literals use a prefix
 * relation.newRelationItem(JSRelationItem.LITERAL_PREFIX + "'hello'",'=', 'mytextfield');
 *
 * @param dataprovider The name of the primary dataprovider.
 *
 * @param operator The operator used to relate the primary and the foreign dataproviders.
 *
 * @param foreinColumnName The name of the foreign dataprovider.
 *
 * @return A JSRelationItem instance representing the newly added relation item.
 */
@JSFunction
public JSRelationItem newRelationItem(String dataprovider, String operator, String foreinColumnName) {
    if (dataprovider == null) {
        // $NON-NLS-1$
        throw new IllegalArgumentException("dataprovider cannot be null");
    }
    if (foreinColumnName == null) {
        // $NON-NLS-1$
        throw new IllegalArgumentException("foreinColumnName cannot be null");
    }
    int validOperator = RelationItem.getValidOperator(operator, RelationItem.RELATION_OPERATORS, null);
    if (validOperator == -1) {
        // $NON-NLS-1$//$NON-NLS-2$
        throw new IllegalArgumentException("operator " + operator + " is not a valid relation operator");
    }
    checkModification();
    try {
        IDataProvider primaryDataProvider = null;
        if (ScopesUtils.isVariableScope(dataprovider)) {
            primaryDataProvider = application.getFlattenedSolution().getGlobalDataProvider(dataprovider);
        } else if (dataprovider.startsWith(LiteralDataprovider.LITERAL_PREFIX)) {
            primaryDataProvider = new LiteralDataprovider(dataprovider);
            if (((LiteralDataprovider) primaryDataProvider).getValue() == null) {
                // $NON-NLS-1$
                throw new IllegalArgumentException("primary data provider " + dataprovider + " is not a valid relation primary data provider");
            }
        } else {
            primaryDataProvider = application.getFlattenedSolution().getDataProviderForTable((Table) application.getFoundSetManager().getTable(relation.getPrimaryDataSource()), dataprovider);
        }
        if (primaryDataProvider == null) {
            // $NON-NLS-1$
            throw new IllegalArgumentException("cant create relation item primary dataprovider not found: " + dataprovider);
        }
        IDataProvider dp = application.getFlattenedSolution().getDataProviderForTable((Table) application.getFoundSetManager().getTable(relation.getForeignDataSource()), foreinColumnName);
        if (!(dp instanceof Column)) {
            // $NON-NLS-1$ //$NON-NLS-2$
            throw new IllegalArgumentException("Foreign columnname " + foreinColumnName + " is not a valid column");
        }
        RelationItem result = relation.createNewRelationItem(application.getFoundSetManager(), primaryDataProvider, validOperator, (Column) dp);
        if (result != null)
            return new JSRelationItem(result, this, isCopy);
        return null;
    } catch (RepositoryException e) {
        throw new RuntimeException(e);
    }
}
Also used : RelationItem(com.servoy.j2db.persistence.RelationItem) Column(com.servoy.j2db.persistence.Column) RepositoryException(com.servoy.j2db.persistence.RepositoryException) IDataProvider(com.servoy.j2db.persistence.IDataProvider) LiteralDataprovider(com.servoy.j2db.persistence.LiteralDataprovider) JSFunction(org.mozilla.javascript.annotations.JSFunction)

Aggregations

Column (com.servoy.j2db.persistence.Column)76 QueryColumn (com.servoy.j2db.query.QueryColumn)44 IColumn (com.servoy.j2db.persistence.IColumn)37 RepositoryException (com.servoy.j2db.persistence.RepositoryException)32 IBaseColumn (com.servoy.base.persistence.IBaseColumn)31 QuerySelect (com.servoy.j2db.query.QuerySelect)29 ArrayList (java.util.ArrayList)29 QueryTable (com.servoy.j2db.query.QueryTable)27 ITable (com.servoy.j2db.persistence.ITable)23 BaseQueryTable (com.servoy.base.query.BaseQueryTable)22 Table (com.servoy.j2db.persistence.Table)22 ServoyException (com.servoy.j2db.util.ServoyException)21 SafeArrayList (com.servoy.j2db.util.SafeArrayList)19 IQuerySelectValue (com.servoy.j2db.query.IQuerySelectValue)18 RemoteException (java.rmi.RemoteException)17 ColumnInfo (com.servoy.j2db.persistence.ColumnInfo)16 BaseQueryColumn (com.servoy.base.query.BaseQueryColumn)14 IDataProvider (com.servoy.j2db.persistence.IDataProvider)12 Relation (com.servoy.j2db.persistence.Relation)12 Placeholder (com.servoy.j2db.query.Placeholder)12