use of de.metas.ui.web.window.descriptor.DocumentEntityDescriptor in project metasfresh-webui-api by metasfresh.
the class HUEditorViewFactoryTemplate method createSqlViewBinding.
private SqlViewBinding createSqlViewBinding() {
// Get HU's standard entity descriptor. We will needed all over.
final DocumentEntityDescriptor huEntityDescriptor = getHUEntityDescriptor();
//
// Static where clause
final StringBuilder sqlWhereClause = new StringBuilder();
{
// top level
sqlWhereClause.append(I_M_HU.COLUMNNAME_M_HU_Item_Parent_ID + " is null");
// Consider window tab's where clause if any
final I_AD_Tab huTab = Services.get(IADWindowDAO.class).retrieveFirstTab(WEBUI_HU_Constants.WEBUI_HU_Window_ID.toInt());
if (!Check.isEmpty(huTab.getWhereClause(), true)) {
sqlWhereClause.append("\n AND (").append(huTab.getWhereClause()).append(")");
}
}
//
// Start preparing the sqlViewBinding builder
final List<String> displayFieldNames = ImmutableList.of(I_M_HU.COLUMNNAME_M_HU_ID);
final SqlViewBinding.Builder sqlViewBinding = SqlViewBinding.builder().tableName(I_M_HU.Table_Name).displayFieldNames(displayFieldNames).sqlWhereClause(sqlWhereClause.toString()).rowIdsConverter(HUSqlViewRowIdsConverter.instance);
//
// View fields: from M_HU's entity descriptor
{
// NOTE: we need to add all HU's standard fields because those might be needed for some of the standard filters defined
final SqlDocumentEntityDataBindingDescriptor huEntityBindings = SqlDocumentEntityDataBindingDescriptor.cast(huEntityDescriptor.getDataBinding());
huEntityBindings.getFields().stream().map(huField -> SqlViewFactory.createViewFieldBindingBuilder(huField, displayFieldNames).build()).forEach(sqlViewBinding::field);
}
//
// View field: BestBeforeDate
{
sqlViewBinding.field(SqlViewRowFieldBinding.builder().fieldName(HUEditorRow.FIELDNAME_BestBeforeDate).widgetType(DocumentFieldWidgetType.Date).columnSql(Constants.sqlBestBeforeDate(sqlViewBinding.getTableAlias() + "." + I_M_HU.COLUMNNAME_M_HU_ID)).fieldLoader((rs, adLanguage) -> rs.getTimestamp(HUEditorRow.FIELDNAME_BestBeforeDate)).build());
}
//
// View filters and converters
{
sqlViewBinding.filterDescriptors(createFilterDescriptorsProvider()).filterConverter(HUBarcodeSqlDocumentFilterConverter.FILTER_ID, HUBarcodeSqlDocumentFilterConverter.instance).filterConverter(HUIdsFilterHelper.FILTER_ID, HUIdsFilterHelper.SQL_DOCUMENT_FILTER_CONVERTER);
createFilterConvertersIndexedByFilterId().forEach(sqlViewBinding::filterConverter);
}
//
return sqlViewBinding.build();
}
use of de.metas.ui.web.window.descriptor.DocumentEntityDescriptor in project metasfresh-webui-api by metasfresh.
the class HUReportProcessInstancesRepository method toWebuiHUProcessDescriptor.
private WebuiHUProcessDescriptor toWebuiHUProcessDescriptor(final HUProcessDescriptor huProcessDescriptor) {
final int reportADProcessId = huProcessDescriptor.getProcessId();
final ProcessId processId = ProcessId.of(PROCESS_HANDLER_TYPE, reportADProcessId);
final I_AD_Process adProcess = Services.get(IADProcessDAO.class).retrieveProcessById(reportADProcessId);
final IModelTranslationMap adProcessTrl = InterfaceWrapperHelper.getModelTranslationMap(adProcess);
final ITranslatableString caption = adProcessTrl.getColumnTrl(I_AD_Process.COLUMNNAME_Name, adProcess.getName());
final ITranslatableString description = adProcessTrl.getColumnTrl(I_AD_Process.COLUMNNAME_Description, adProcess.getDescription());
final DocumentEntityDescriptor parametersDescriptor = DocumentEntityDescriptor.builder().setDocumentType(DocumentType.Process, processId.toDocumentId()).setCaption(caption).setDescription(description).disableDefaultTableCallouts().addField(DocumentFieldDescriptor.builder(HUReportProcessInstance.PARAM_Copies).setCaption(Services.get(IMsgBL.class).translatable(HUReportProcessInstance.PARAM_Copies)).setWidgetType(DocumentFieldWidgetType.Integer)).build();
return WebuiHUProcessDescriptor.builder().huProcessDescriptor(huProcessDescriptor).processDescriptor(ProcessDescriptor.builder().setProcessId(processId).setType(ProcessDescriptorType.Report).setParametersDescriptor(parametersDescriptor).setLayout(ProcessLayout.builder().setProcessId(processId).setCaption(caption).setDescription(description).addElements(parametersDescriptor).build()).build()).build();
}
use of de.metas.ui.web.window.descriptor.DocumentEntityDescriptor in project metasfresh-webui-api by metasfresh.
the class HUEditorViewFactoryTemplate method createFilterDescriptorsProvider.
@OverridingMethodsMustInvokeSuper
protected DocumentFilterDescriptorsProvider createFilterDescriptorsProvider() {
final DocumentEntityDescriptor huEntityDescriptor = getHUEntityDescriptor();
final Collection<DocumentFilterDescriptor> huStandardFilters = huEntityDescriptor.getFilterDescriptors().getAll();
return ImmutableDocumentFilterDescriptorsProvider.builder().addDescriptors(huStandardFilters).addDescriptor(HUBarcodeSqlDocumentFilterConverter.createDocumentFilterDescriptor()).build();
}
use of de.metas.ui.web.window.descriptor.DocumentEntityDescriptor in project metasfresh-webui-api by metasfresh.
the class SqlDocumentsRepository method retriveDocuments.
public OrderedDocumentsList retriveDocuments(final DocumentQuery query, final int limit, final IDocumentChangesCollector changesCollector) {
logger.debug("Retrieving records: query={}, limit={}", query, limit);
final DocumentEntityDescriptor entityDescriptor = query.getEntityDescriptor();
assertThisRepository(entityDescriptor);
final Document parentDocument = query.getParentDocument();
final Function<DocumentId, Document> existingDocumentsSupplier = query.getExistingDocumentsSupplier();
final List<Object> sqlParams = new ArrayList<>();
final SqlDocumentQueryBuilder sqlBuilder = SqlDocumentQueryBuilder.of(query);
final String sql = sqlBuilder.getSql(sqlParams);
final String adLanguage = sqlBuilder.getAD_Language();
logger.debug("Retrieving records: SQL={} -- {}", sql, sqlParams);
final int loadLimitWarn = this.loadLimitWarn;
final int loadLimitMax = this.loadLimitMax;
int maxRowsToFetch = limit;
if (maxRowsToFetch <= 0) {
maxRowsToFetch = loadLimitMax;
}
final OrderedDocumentsList documentsCollector = OrderedDocumentsList.newEmpty(query.getOrderBys());
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = DB.prepareStatement(sql, ITrx.TRXNAME_ThreadInherited);
if (maxRowsToFetch > 0) {
pstmt.setMaxRows(maxRowsToFetch);
}
DB.setParameters(pstmt, sqlParams);
rs = pstmt.executeQuery();
boolean loadLimitWarnReported = false;
while (rs.next()) {
final ResultSetDocumentValuesSupplier documentValuesSupplier = new ResultSetDocumentValuesSupplier(entityDescriptor, adLanguage, rs);
Document document = null;
if (existingDocumentsSupplier != null) {
final DocumentId documentId = documentValuesSupplier.getDocumentId();
document = existingDocumentsSupplier.apply(documentId);
}
if (document == null) {
document = Document.builder(entityDescriptor).setParentDocument(parentDocument).setChangesCollector(changesCollector).initializeAsExistingRecord(documentValuesSupplier);
}
documentsCollector.addDocument(document);
final int loadCount = documentsCollector.size();
// Stop if we reached the limit
if (limit > 0 && loadCount >= limit) {
break;
}
// Stop if we reached the MAXIMUM limit
if (loadLimitMax > 0 && loadCount >= loadLimitMax) {
logger.warn("Reached load count MAXIMUM level. Stop loading. \n SQL: {} \n SQL Params: {} \n loadCount: {}", sql, sqlParams, loadCount);
break;
}
// WARN if we reached the Warning limit
if (!loadLimitWarnReported && loadLimitWarn > 0 && loadCount >= loadLimitWarn) {
logger.warn("Reached load count Warning level. Continue loading. \n SQL: {} \n SQL Params: {} \n loadCount: {}", sql, sqlParams, loadCount);
loadLimitWarnReported = true;
}
}
} catch (final SQLException e) {
throw new DBException(e, sql, sqlParams);
} finally {
DB.close(rs, pstmt);
}
logger.debug("Retrieved {} records.", documentsCollector.size());
return documentsCollector;
}
use of de.metas.ui.web.window.descriptor.DocumentEntityDescriptor in project metasfresh-webui-api by metasfresh.
the class SqlDocumentsRepository method retrieveLastLineNo.
@Override
public int retrieveLastLineNo(final DocumentQuery query) {
logger.debug("Retrieving last LineNo: query={}", query);
final DocumentEntityDescriptor entityDescriptor = query.getEntityDescriptor();
assertThisRepository(entityDescriptor);
final List<Object> sqlParams = new ArrayList<>();
final SqlDocumentQueryBuilder sqlBuilder = SqlDocumentQueryBuilder.of(query);
final String sql = sqlBuilder.getSqlMaxLineNo(sqlParams);
return DB.getSQLValueEx(ITrx.TRXNAME_ThreadInherited, sql, sqlParams);
}
Aggregations