use of org.kie.workbench.common.forms.fields.shared.fieldTypes.relations.TableColumnMeta in project kie-wb-common by kiegroup.
the class BeanPropertiesProviderTest method testGetModelProperties.
protected void testGetModelProperties(String... columns) {
field = new MultipleSubFormFieldDefinition();
for (String column : columns) {
field.getColumnMetas().add(new TableColumnMeta(column, column));
}
List<String> bannedColumns = new ArrayList<>(Arrays.asList(columns));
if (!StringUtils.isEmpty(currentEditedMeta.getProperty())) {
bannedColumns.remove(currentEditedMeta.getProperty());
}
field.setStandaloneClassName(TYPE_NAME);
parentContext = new FormEditorRenderingContext(path);
parentContext.setModel(field);
context.setParentContext(parentContext);
expectedFields = DATA_OBJECT_VALID_FIELDS - bannedColumns.size();
SelectorData data = provider.getSelectorData(context);
verify(service).getDataObjectProperties(any(), any());
assertNotNull(data);
assertNotNull(data.getValues());
assertNull(data.getSelectedValue());
assertFalse(data.getValues().isEmpty());
assertEquals(expectedFields, data.getValues().size());
for (String column : bannedColumns) {
assertNull(data.getValues().get(column));
}
assertNull(data.getValues().get(DataObjectFormModelHandler.SERIAL_VERSION_UID));
assertNull(data.getValues().get(PERSISTENCE_ID_PROPERTY));
}
use of org.kie.workbench.common.forms.fields.shared.fieldTypes.relations.TableColumnMeta in project kie-wb-common by kiegroup.
the class AbstractBPMNFormGeneratorService method processFieldDefinition.
protected void processFieldDefinition(FieldDefinition field, GenerationContext<SOURCE> context) {
if (field instanceof EntityRelationField) {
if (field instanceof HasNestedForm) {
HasNestedForm nestedFormField = (HasNestedForm) field;
FormDefinition nestedForm = findFormDefinitionForModelType(field.getStandaloneClassName(), context);
if (nestedForm == null) {
nestedForm = createModelFormDefinition(field.getStandaloneClassName(), context);
}
nestedFormField.setNestedForm(nestedForm.getId());
} else if (field instanceof IsCRUDDefinition) {
IsCRUDDefinition crudField = (IsCRUDDefinition) field;
FormDefinition nestedForm = findFormDefinitionForModelType(field.getStandaloneClassName(), context);
if (nestedForm == null) {
nestedForm = createModelFormDefinition(field.getStandaloneClassName(), context);
crudField.setCreationForm(nestedForm.getId());
crudField.setEditionForm(nestedForm.getId());
List<TableColumnMeta> tableColumnMetas = new ArrayList<>();
nestedForm.getFields().forEach(nestedField -> {
tableColumnMetas.add(new TableColumnMeta(nestedField.getLabel(), nestedField.getBinding()));
});
crudField.setColumnMetas(tableColumnMetas);
}
}
}
}
use of org.kie.workbench.common.forms.fields.shared.fieldTypes.relations.TableColumnMeta in project kie-wb-common by kiegroup.
the class MultipleSubFormWidget method initCrud.
protected void initCrud() {
final List<ColumnMeta> metas = new ArrayList<>();
HasProperties hasProperties = null;
try {
hasProperties = bindingHelper.getProxyDefinition();
} catch (Exception e) {
GWT.log("Unable to find proxy: " + e.getMessage());
}
for (TableColumnMeta meta : field.getColumnMetas()) {
String type = String.class.getName();
if (hasProperties != null) {
type = hasProperties.getBeanProperties().get(meta.getProperty()).getType().getName();
}
ColumnGenerator generator = columnGeneratorManager.getGeneratorByType(type);
if (generator != null) {
ColumnMeta<HasProperties> columnMeta = new ColumnMeta<HasProperties>(generator.getColumn(meta.getProperty()), meta.getLabel());
metas.add(columnMeta);
}
}
dataProvider = new AsyncDataProvider<HasProperties>() {
@Override
protected void onRangeChanged(HasData<HasProperties> hasData) {
if (tableValues != null) {
updateRowCount(tableValues.size(), true);
updateRowData(0, tableValues);
} else {
updateRowCount(0, true);
updateRowData(0, new ArrayList<HasProperties>());
}
}
};
crudComponent.init(new CrudActionsHelper() {
@Override
public int getPageSize() {
return PAGE_SIZE;
}
@Override
public boolean showEmbeddedForms() {
return true;
}
@Override
public boolean isAllowCreate() {
return !isReadOnly;
}
@Override
public boolean isAllowEdit() {
return !isReadOnly;
}
@Override
public boolean isAllowDelete() {
return !isReadOnly;
}
@Override
public List<ColumnMeta> getGridColumns() {
return metas;
}
@Override
public AsyncDataProvider getDataProvider() {
return dataProvider;
}
public IsFormView<Object> getCreateInstanceForm() {
if (field.getCreationForm() != null) {
BindableProxy<?> proxy = bindingHelper.getNewProxy();
formRenderer.render(renderingContext.getCopyFor(field.getCreationForm(), proxy));
return formRenderer;
}
return null;
}
public IsFormView<Object> getEditInstanceForm(int position) {
if (field.getEditionForm() != null) {
BindableProxy instanceProxy = bindingHelper.getProxyForModel(values.get(position));
BindableProxy editionProxy = bindingHelper.getProxyForModel(instanceProxy.deepUnwrap());
formRenderer.render(renderingContext.getCopyFor(field.getEditionForm(), editionProxy));
return formRenderer;
}
return null;
}
@Override
public void createInstance() {
IsFormView form = getCreateInstanceForm();
crudComponent.displayForm(translationService.getTranslation(CrudComponentConstants.CrudComponentViewImplNewInstanceTitle), form, new FormDisplayer.FormDisplayerCallback() {
@Override
public void onCancel() {
formRenderer.unBind();
}
@Override
public void onAccept() {
if (values == null) {
values = new ArrayList<>();
}
values.add(formRenderer.getModel());
tableValues.add((HasProperties) formRenderer.getModel());
refreshCrud();
fireFieldChange();
formRenderer.unBind();
}
});
}
@Override
public void editInstance(int index) {
IsFormView form = getEditInstanceForm(index);
crudComponent.displayForm(translationService.getTranslation(CrudComponentConstants.CrudComponentViewImplEditInstanceTitle), form, new FormDisplayer.FormDisplayerCallback() {
@Override
public void onCancel() {
formRenderer.unBind();
}
@Override
public void onAccept() {
BindableProxy editionProxy = (BindableProxy) formRenderer.getModel();
BindableProxy realProxy = bindingHelper.getProxyForModel(values.get(index));
FormDefinition editionform = (FormDefinition) renderingContext.getAvailableForms().get(field.getEditionForm());
editionform.getFields().forEach(fieldDefinition -> {
if (fieldDefinition.getBinding() != null) {
realProxy.set(fieldDefinition.getBinding(), editionProxy.get(fieldDefinition.getBinding()));
}
});
bindingHelper.afterEdit(realProxy);
values.set(index, realProxy);
tableValues.set(index, realProxy);
refreshCrud();
fireFieldChange();
formRenderer.unBind();
}
});
}
@Override
public void deleteInstance(int index) {
values.remove(index);
tableValues.remove(index);
refreshCrud();
fireFieldChange();
}
});
initValues();
}
use of org.kie.workbench.common.forms.fields.shared.fieldTypes.relations.TableColumnMeta in project kie-wb-common by kiegroup.
the class MultipleSubFormFieldDefinitionTest method getFullFieldDefinition.
@Override
protected MultipleSubFormFieldDefinition getFullFieldDefinition() {
MultipleSubFormFieldDefinition multipleSubFormFieldDefinition = new MultipleSubFormFieldDefinition();
multipleSubFormFieldDefinition.setCreationForm("creationForm");
multipleSubFormFieldDefinition.setEditionForm("editionForm");
List<TableColumnMeta> columns = new ArrayList<>();
columns.add(new TableColumnMeta("prop", "prop"));
columns.add(new TableColumnMeta("prop2", "prop2"));
multipleSubFormFieldDefinition.setColumnMetas(columns);
return multipleSubFormFieldDefinition;
}
use of org.kie.workbench.common.forms.fields.shared.fieldTypes.relations.TableColumnMeta in project kie-wb-common by kiegroup.
the class BeanPropertiesProvider method getSelectorData.
@Override
public SelectorData getSelectorData(FormRenderingContext context) {
HashMap<String, String> values = new HashMap<>();
if (context instanceof FormEditorRenderingContext && context.getParentContext() != null) {
if (context.getParentContext().getModel() instanceof MultipleSubFormFieldDefinition) {
FormEditorRenderingContext editorContext = (FormEditorRenderingContext) context;
if (context.getParentContext() != null) {
MultipleSubFormFieldDefinition subForm = (MultipleSubFormFieldDefinition) context.getParentContext().getModel();
Path path = editorContext.getFormPath();
String typeName = subForm.getStandaloneClassName();
final TableColumnMeta currentMeta = (TableColumnMeta) context.getModel();
Set<String> unavailableProperties = subForm.getColumnMetas().stream().map(TableColumnMeta::getProperty).collect(Collectors.toSet());
if (currentMeta != null && !StringUtils.isEmpty(currentMeta.getProperty())) {
unavailableProperties.remove(currentMeta.getProperty());
}
dataObjectFinderService.getDataObjectProperties(typeName, path).stream().filter(property -> !unavailableProperties.contains(property.getName())).forEachOrdered(property -> values.put(property.getName(), property.getName()));
}
}
}
return new SelectorData(values, null);
}
Aggregations