use of org.talend.designer.core.model.components.ElementParameter in project tdi-studio-se by Talend.
the class DynamicComposite method resetParameters.
public List<ElementParameter> resetParameters() {
final List<ElementParameter> newParameters = new ArrayList<>();
List<ElementParameter> currentParameters = (List<ElementParameter>) element.getElementParameters();
List<ElementParameter> parameters = new ArrayList<>();
ComponentService componentService = internalService.getComponentService();
Connection theConnection = null;
if (connectionItem != null) {
theConnection = connectionItem.getConnection();
}
Properties properties = null;
PropertyValueEvaluator evaluator = null;
if (element instanceof FakeElement) {
properties = form.getProperties();
evaluator = new MetadataContextPropertyValueEvaluator(theConnection);
currentParameters.clear();
} else {
properties = ((INode) element).getComponentProperties();
evaluator = new ComponentContextPropertyValueEvaluator((INode) element);
}
if (properties instanceof ComponentProperties) {
if (form != null) {
properties.setValueEvaluator(evaluator);
properties.refreshLayout(form);
}
// For context display.
properties.setValueEvaluator(null);
boolean isInitializing = false;
if (element instanceof INode) {
INode node = (INode) element;
IComponent component = node.getComponent();
if (component instanceof AbstractBasicComponent) {
isInitializing = ((AbstractBasicComponent) component).isInitializing();
}
}
parameters = ComponentsUtils.getParametersFromForm(element, isInitializing, section, (ComponentProperties) properties, form);
addUpdateParameterIfNotExist(parameters);
properties.setValueEvaluator(evaluator);
}
for (ElementParameter parameter : parameters) {
if (parameter instanceof GenericElementParameter) {
GenericElementParameter genericElementParameter = (GenericElementParameter) parameter;
genericElementParameter.setComponentService(componentService);
genericElementParameter.setDrivedByForm(drivedByForm);
genericElementParameter.callBeforePresent();
genericElementParameter.removePropertyChangeListener(this);
genericElementParameter.addPropertyChangeListener(this);
if (wizardPropertyChangeListener != null && IGenericConstants.NAME_PROPERTY.equals(parameter.getName())) {
genericElementParameter.addPropertyChangeListener(wizardPropertyChangeListener);
}
if (EParameterFieldType.SCHEMA_REFERENCE.equals(genericElementParameter.getFieldType())) {
if (genericElementParameter.getChildParameters().size() == 0) {
IElementParameter schemaParameter = element.getElementParameterFromField(EParameterFieldType.SCHEMA_REFERENCE, section);
genericElementParameter.getChildParameters().putAll(schemaParameter.getChildParameters());
}
} else if (EParameterFieldType.NAME_SELECTION_AREA.equals(genericElementParameter.getFieldType()) && theConnection != null) {
List<NamedThing> values = new ArrayList<>();
List<MetadataTable> metadataTables = SchemaUtils.getMetadataTables(theConnection, SubContainer.class);
List<String> tableLabels = new ArrayList<>();
for (MetadataTable metaTable : metadataTables) {
tableLabels.add(metaTable.getLabel());
}
List<NamedThing> possibleValues = ComponentsUtils.getFormalPossibleValues(genericElementParameter);
for (NamedThing possibleValue : possibleValues) {
if (tableLabels.contains(possibleValue.getName())) {
values.add(possibleValue);
}
}
genericElementParameter.setValue(values);
}
if (properties != null && isRepository(element)) {
String repositoryValue = genericElementParameter.getRepositoryValue();
if (genericElementParameter.isShow(currentParameters) && (repositoryValue != null) && (!genericElementParameter.getName().equals(EParameterName.PROPERTY_TYPE.getName())) && genericElementParameter.getCategory() == section) {
org.talend.daikon.properties.property.Property property = properties.getValuedProperty(genericElementParameter.getName());
if (property != null && property.getTaggedValue(IGenericConstants.REPOSITORY_VALUE) != null) {
genericElementParameter.setRepositoryValueUsed(true);
genericElementParameter.setReadOnly(true);
}
}
}
}
}
boolean added = false;
for (ElementParameter currentParameter : currentParameters) {
if (EParameterName.UPDATE_COMPONENTS.getName().equals(currentParameter.getName())) {
currentParameter.setValue(true);
}
if (currentParameter.isSerialized() && currentParameter.getCategory().equals(section)) {
if (!added) {
newParameters.addAll(parameters);
added = true;
}
continue;
}
newParameters.add(currentParameter);
}
if (element instanceof FakeElement) {
newParameters.addAll(reverseParameters(parameters));
}
element.setElementParameters(newParameters);
return newParameters;
}
use of org.talend.designer.core.model.components.ElementParameter in project tdi-studio-se by Talend.
the class DynamicComposite method getUpdateParameter.
private ElementParameter getUpdateParameter() {
ElementParameter param = new ElementParameter(element);
param.setName(EParameterName.UPDATE_COMPONENTS.getName());
param.setValue(true);
param.setDisplayName(EParameterName.UPDATE_COMPONENTS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.TECHNICAL);
param.setNumRow(1000);
param.setReadOnly(true);
param.setRequired(false);
param.setShow(false);
return param;
}
use of org.talend.designer.core.model.components.ElementParameter in project tdi-studio-se by Talend.
the class ComponentsUtilsTest method testGetParametersFromForm.
@Test
public void testGetParametersFromForm() {
//$NON-NLS-1$
ComponentProperties props = (ComponentProperties) new TestProperties("test").init();
Form form = props.getForm(Form.MAIN);
/*
* Test wizard
*/
Element element = new FakeElement(form.getName());
// Test readonly case
List<ElementParameter> parameters = ComponentsUtils.getParametersFromForm(element, false, null, props, form);
for (ElementParameter parameter : parameters) {
assertFalse(parameter.isReadOnly());
}
element.setReadOnly(true);
parameters = ComponentsUtils.getParametersFromForm(element, false, null, props, form);
for (ElementParameter parameter : parameters) {
assertTrue(parameter.isReadOnly());
}
/*
* Test component
*/
// Test parameter initialization case (mainly to test ComponentsUtils.getParameterValue() method).
checkParameterInitializationStatus(true);
checkParameterInitializationStatus(false);
}
use of org.talend.designer.core.model.components.ElementParameter in project tdi-studio-se by Talend.
the class ComponentsUtilsTest method checkParameterInitializationStatus.
private void checkParameterInitializationStatus(boolean isInitializing) {
INode node = createSFTestNode();
ComponentProperties props = node.getComponentProperties();
props.setValueEvaluator(null);
Form form = props.getForm(Form.ADVANCED);
List<ElementParameter> parameters = ComponentsUtils.getParametersFromForm(node, isInitializing, null, props, form);
checkParameterInitializationStatus(parameters, isInitializing);
}
use of org.talend.designer.core.model.components.ElementParameter in project tdi-studio-se by Talend.
the class GenericTableUtilsTest method testSetTableValues.
@Test
public void testSetTableValues() {
IElement elem = new FakeElement("test");
IElementParameter tableParam = new ElementParameter(elem);
tableParam.setName("myTable");
IElementParameter column1 = new ElementParameter(elem);
column1.setName("column1");
column1.setFieldType(EParameterFieldType.TEXT);
IElementParameter column2 = new ElementParameter(elem);
column2.setName("column2");
column2.setFieldType(EParameterFieldType.CHECK);
IElementParameter column3 = new ElementParameter(elem);
column3.setName("column3");
column3.setFieldType(EParameterFieldType.CLOSED_LIST);
List<String> values = new ArrayList<>();
values.add("Value1");
values.add("Value2");
values.add("Value3");
column3.setListItemsValue(values.toArray());
List<String> codeNames = new ArrayList<>();
codeNames.add("column1");
codeNames.add("column2");
codeNames.add("column3");
tableParam.setListItemsDisplayCodeName(codeNames.toArray(new String[0]));
List<IElementParameter> childParams = new ArrayList<>();
childParams.add(column1);
childParams.add(column2);
childParams.add(column3);
tableParam.setListItemsValue(childParams.toArray());
List<Map<String, Object>> table = new ArrayList<Map<String, Object>>();
Map<String, Object> line = new HashMap<String, Object>();
line.put("column1", "Text1");
line.put("column2", Boolean.TRUE);
line.put("column3", "Value1");
table.add(line);
line = new HashMap<String, Object>();
line.put("column1", "Text2");
line.put("column2", Boolean.FALSE);
line.put("column3", 2);
table.add(line);
MyTestTable tableProperties = new MyTestTable("tableProp");
GenericTableUtils.setTableValues(tableProperties, table, tableParam);
// call 2 times, to ensure the number of line is not added at each calls
GenericTableUtils.setTableValues(tableProperties, table, tableParam);
assertEquals(2, ((List) tableProperties.column1.getValue()).size());
assertEquals(2, ((List) tableProperties.column2.getValue()).size());
assertEquals(2, ((List) tableProperties.column3.getValue()).size());
assertEquals("Text1", ((List) tableProperties.column1.getValue()).get(0));
assertEquals("Text2", ((List) tableProperties.column1.getValue()).get(1));
assertEquals("true", ((List) tableProperties.column2.getValue()).get(0));
assertEquals("false", ((List) tableProperties.column2.getValue()).get(1));
assertEquals("Value1", ((List) tableProperties.column3.getValue()).get(0));
assertEquals("Value3", ((List) tableProperties.column3.getValue()).get(1));
}
Aggregations