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();
}
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;
}
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);
}
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 + "'");
}
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);
}
}
Aggregations