use of de.metas.process.ProcessInfo.ProcessInfoBuilder in project metasfresh-webui-api by metasfresh.
the class ADProcessInstancesRepository method createProcessInfo.
private ProcessInfo createProcessInfo(@NonNull final CreateProcessInstanceRequest request) {
final DocumentPath singleDocumentPath = request.getSingleDocumentPath();
final String tableName;
final int recordId;
final String sqlWhereClause;
final int adWindowId;
// View
if (request.getViewRowIdsSelection() != null) {
final ViewRowIdsSelection viewRowIdsSelection = request.getViewRowIdsSelection();
final ViewId viewId = viewRowIdsSelection.getViewId();
final IView view = viewsRepo.getView(viewId);
final DocumentIdsSelection viewDocumentIds = viewRowIdsSelection.getRowIds();
adWindowId = viewId.getWindowId().toIntOr(-1);
if (viewDocumentIds.isSingleDocumentId()) {
final DocumentId viewSingleDocumentId = viewDocumentIds.getSingleDocumentId();
final TableRecordReference recordRef = view.getTableRecordReferenceOrNull(viewSingleDocumentId);
if (recordRef != null) {
tableName = recordRef.getTableName();
recordId = recordRef.getRecord_ID();
} else {
tableName = view.getTableNameOrNull(viewSingleDocumentId);
recordId = -1;
}
} else {
tableName = view.getTableNameOrNull(null);
recordId = -1;
}
final boolean emptyTableName = Check.isEmpty(tableName);
if (viewDocumentIds.isEmpty() || emptyTableName) {
// Note: in the case of material cockpit, there is no single tableName to be returned by view.getTableNameOrNull,
// so we do have selected rows, but no table name, which is OK
sqlWhereClause = null;
} else {
sqlWhereClause = view.getSqlWhereClause(viewDocumentIds, SqlOptions.usingTableName(tableName));
}
} else // Single document call
if (singleDocumentPath != null) {
final DocumentEntityDescriptor entityDescriptor = documentDescriptorFactory.getDocumentEntityDescriptor(singleDocumentPath);
adWindowId = singleDocumentPath.getWindowId().toIntOr(-1);
tableName = entityDescriptor.getTableNameOrNull();
if (singleDocumentPath.isRootDocument()) {
recordId = singleDocumentPath.getDocumentId().toInt();
} else {
recordId = singleDocumentPath.getSingleRowId().toInt();
}
sqlWhereClause = entityDescriptor.getDataBinding(SqlDocumentEntityDataBindingDescriptor.class).getSqlWhereClauseById(recordId);
} else //
// From menu
{
tableName = null;
recordId = -1;
sqlWhereClause = null;
adWindowId = -1;
}
//
final Set<TableRecordReference> selectedIncludedRecords = request.getSelectedIncludedDocumentPaths().stream().map(documentDescriptorFactory::getTableRecordReference).collect(ImmutableSet.toImmutableSet());
final ProcessInfoBuilder processInfoBuilder = ProcessInfo.builder().setCtx(Env.getCtx()).setCreateTemporaryCtx().setAD_Process_ID(request.getProcessIdAsInt()).setAD_Window_ID(adWindowId).setRecord(tableName, recordId).setSelectedIncludedRecords(selectedIncludedRecords).setWhereClause(sqlWhereClause);
// View related internal parameters
if (request.getViewRowIdsSelection() != null) {
final ViewRowIdsSelection viewRowIdsSelection = request.getViewRowIdsSelection();
processInfoBuilder.setLoadParametersFromDB(// important: we need to load the existing parameters from database, besides the internal ones we are adding here
true).addParameter(ViewBasedProcessTemplate.PARAM_ViewId, viewRowIdsSelection.getViewId().toJson()).addParameter(ViewBasedProcessTemplate.PARAM_ViewSelectedIds, viewRowIdsSelection.getRowIds().toCommaSeparatedString());
}
if (request.getParentViewRowIdsSelection() != null) {
final ViewRowIdsSelection parentViewRowIdsSelection = request.getParentViewRowIdsSelection();
processInfoBuilder.setLoadParametersFromDB(// important: we need to load the existing parameters from database, besides the internal ones we are adding here
true).addParameter(ViewBasedProcessTemplate.PARAM_ParentViewId, parentViewRowIdsSelection.getViewId().toJson()).addParameter(ViewBasedProcessTemplate.PARAM_ParentViewSelectedIds, parentViewRowIdsSelection.getRowIds().toCommaSeparatedString());
}
if (request.getChildViewRowIdsSelection() != null) {
final ViewRowIdsSelection childViewRowIdsSelection = request.getChildViewRowIdsSelection();
processInfoBuilder.setLoadParametersFromDB(// important: we need to load the existing parameters from database, besides the internal ones we are adding here
true).addParameter(ViewBasedProcessTemplate.PARAM_ChildViewId, childViewRowIdsSelection.getViewId().toJson()).addParameter(ViewBasedProcessTemplate.PARAM_ChildViewSelectedIds, childViewRowIdsSelection.getRowIds().toCommaSeparatedString());
}
return processInfoBuilder.build();
}
Aggregations