use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class FormComponentPropertyType method toTemplateJSONValue.
@Override
public JSONWriter toTemplateJSONValue(JSONWriter writer, String key, Object formElementValue, PropertyDescription pd, DataConversion clientConversion, FormElementContext formElementContext) throws JSONException {
if (formElementValue == null)
return writer;
FlattenedSolution fs = formElementContext.getFlattenedSolution();
Form form = getForm(formElementValue, fs);
if (form != null) {
if (pd.getConfig() instanceof ComponentTypeConfig && ((ComponentTypeConfig) pd.getConfig()).forFoundset != null) {
clientConversion.convert(FormComponentPropertyType.TYPE_NAME);
}
// else this info below seems to be needed client-side even for non-foundset linked form components; but it's just some dumb simple JSON, not a client side type
JSONUtils.addKeyIfPresent(writer, key);
// we output here a uuid that is a uuid that must be used to get the compiled template from the $formcomponentCache
String uuid = FormElementHelper.INSTANCE.getFormComponentCache(formElementContext.getFormElement(), pd, (JSONObject) formElementValue, form, fs).getHtmlTemplateUUIDForAngular();
writer.object();
writer.key("uuid");
writer.value(uuid);
writer.key("formHeight");
writer.value(form.getSize().height);
writer.key("formWidth");
writer.value(form.getSize().width);
writer.key("absoluteLayout");
writer.value(!form.isResponsiveLayout());
writer.endObject();
}
return writer;
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class FormComponentSabloValue method getComponents.
private ComponentTypeSabloValue[] getComponents() {
FormComponentCache formComponentCache = getCache();
if (currentFormComponentCache != formComponentCache) {
List<FormElement> elements = formComponentCache.getFormComponentElements();
List<ComponentTypeSabloValue> componentsList = new ArrayList<ComponentTypeSabloValue>(elements.size());
PropertyPath path = new PropertyPath();
path.add(component.getName());
path.add("containedForm");
path.add("childElements");
JSONObject tags = new JSONObject();
tags.put(ComponentTypeSabloValue.TAG_ADD_TO_ELEMENTS_SCOPE, true);
PropertyDescription compPd = new PropertyDescriptionBuilder().withName(pd.getName()).withType(ComponentPropertyType.INSTANCE).withConfig(pd.getConfig()).withTags(tags).build();
int j = 0;
for (FormElement element : elements) {
path.add(j);
ComponentTypeFormElementValue elementValue = ComponentPropertyType.INSTANCE.getFormElementValue(null, compPd, path, element, dal.getApplication().getFlattenedSolution());
ComponentTypeSabloValue ctsv = ComponentPropertyType.INSTANCE.toSabloComponentValue(elementValue, compPd, element, component, dal);
if (ctsv != null) {
// if it is null then it is probably a child component that was blocked by security (visibility == false); in that case just ignore it (similar to what portal does through .spec setting on comp. array to ignore null values at runtime)
j++;
componentsList.add(ctsv);
}
path.backOneLevel();
if (element.getWebComponentSpec() != null) {
Collection<PropertyDescription> properties = element.getWebComponentSpec().getProperties(FormComponentPropertyType.INSTANCE);
if (properties.size() > 0) {
for (PropertyDescription pd : properties) {
Object propertyValue = element.getPropertyValue(pd.getName());
Form frm = FormComponentPropertyType.INSTANCE.getForm(propertyValue, dal.getApplication().getFlattenedSolution());
if (frm == null)
continue;
FormComponentCache innerCache = FormElementHelper.INSTANCE.getFormComponentCache(element, pd, (JSONObject) propertyValue, frm, dal.getApplication().getFlattenedSolution());
List<FormElement> innerElements = innerCache.getFormComponentElements();
for (FormElement innerElement : innerElements) {
path.add(j);
elementValue = ComponentPropertyType.INSTANCE.getFormElementValue(null, compPd, path, innerElement, dal.getApplication().getFlattenedSolution());
// use main property
ctsv = ComponentPropertyType.INSTANCE.toSabloComponentValue(elementValue, compPd, innerElement, component, dal);
if (ctsv != null) {
// if it is null then it is probably a child component that was blocked by security (visibility == false); in that case just ignore it (similar to what portal does through .spec setting on comp. array to ignore null values at runtime)
j++;
componentsList.add(ctsv);
}
path.backOneLevel();
}
}
}
}
}
// re-attach
if (currentFormComponentCache != null && changeMonitor != null && webObjectContext != null) {
for (ComponentTypeSabloValue componentTypeSabloValue : componentsList) {
componentTypeSabloValue.attachToBaseObject(changeMonitor, webObjectContext);
}
}
currentFormComponentCache = formComponentCache;
components = componentsList.toArray(new ComponentTypeSabloValue[0]);
}
return components;
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class FormPropertyType method toRhinoValue.
@Override
public Object toRhinoValue(Object webComponentValue, PropertyDescription pd, IWebObjectContext webObjectContext, Scriptable startScriptable) {
if (webComponentValue instanceof Form) {
return ((Form) webComponentValue).getName();
} else {
if (webComponentValue != null && webObjectContext != null && webObjectContext.getUnderlyingWebObject() instanceof IContextProvider) {
// form is stored as uuid on disk
FlattenedSolution solution = ((IContextProvider) webObjectContext.getUnderlyingWebObject()).getDataConverterContext().getSolution();
Form form = solution.getForm(webComponentValue.toString());
if (form == null) {
form = (Form) solution.searchPersist(webComponentValue.toString());
}
if (form != null) {
return form.getName();
}
}
}
return webComponentValue;
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class TitleStringPropertyType method toSabloComponentDefaultValue.
/*
* (non-Javadoc)
*
* @see com.servoy.j2db.server.ngclient.property.types.NGConversions.IFormElementDefaultValueToSabloComponent#toSabloComponentDefaultValue(org.sablo.
* specification.PropertyDescription, com.servoy.j2db.server.ngclient.INGFormElement, com.servoy.j2db.server.ngclient.WebFormComponent,
* com.servoy.j2db.server.ngclient.DataAdapterList)
*/
@Override
public BasicTagStringTypeSabloValue toSabloComponentDefaultValue(PropertyDescription pd, INGFormElement formElement, WebFormComponent component, DataAdapterList dataAdapterList) {
TitleStringConfig titleStringConfig = (TitleStringConfig) pd.getConfig();
String forDataprovider = titleStringConfig.getForDataprovider();
if (forDataprovider != null) {
PropertyDescription forProperty = formElement.getPropertyDescription(forDataprovider);
if (forProperty != null) {
IPropertyType<?> type = forProperty.getType();
if (type instanceof FoundsetLinkedPropertyType) {
Object config = forProperty.getConfig();
if (config instanceof FoundsetLinkedConfig && ((FoundsetLinkedConfig) config).getForFoundsetName() != null) {
String forFoundset = ((FoundsetLinkedConfig) config).getForFoundsetName();
String dataproviderID = (String) formElement.getPropertyValue(forDataprovider);
JSONObject foundsetValue = (JSONObject) formElement.getPropertyValue(forFoundset);
if (foundsetValue != null) {
String foundsetID = foundsetValue.optString(FoundsetPropertyType.FOUNDSET_SELECTOR);
INGApplication application = ((WebFormComponent) component.getUnderlyingWebObject()).getDataConverterContext().getApplication();
Form form = ((IContextProvider) component.getUnderlyingWebObject()).getDataConverterContext().getForm().getForm();
ITable table = FoundsetTypeSabloValue.getTableBasedOfFoundsetPropertyFromFoundsetIdentifier(foundsetID, application, form);
if (table != null) {
Column dataproviderColumn = table.getColumn(dataproviderID);
if (dataproviderColumn != null) {
return toSabloComponentValue(dataproviderColumn.getTitle(), pd, formElement, component, dataAdapterList);
}
}
}
}
}
}
}
return null;
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class FlattenedSolution method getFlattenedForm.
public Form getFlattenedForm(IPersist persist, boolean useCached) {
if (mainSolution == null && loginFlattenedSolution != null) {
return loginFlattenedSolution.getFlattenedForm(persist, useCached);
}
if (persist == null || getSolution() == null) {
return null;
}
Form form = null;
if (persist instanceof FlattenedForm) {
form = ((FlattenedForm) persist).getForm();
} else {
form = (Form) persist.getAncestor(IRepository.FORMS);
}
if (form == null || form.getExtendsID() <= 0) {
// no form or nothing to flatten
return form;
}
// make sure is latest form
form = getForm(form.getID());
// form is already deleted?
if (form == null)
return null;
if (flattenedFormCache == null) {
// no caching
return createFlattenedForm(form);
}
// cache flattened form
FlattenedForm[] flattedFormRef;
synchronized (flattenedFormCache) {
flattedFormRef = flattenedFormCache.get(form);
if (flattedFormRef == null) {
flattenedFormCache.put(form, flattedFormRef = new FlattenedForm[] { null });
}
}
synchronized (flattedFormRef) {
if (flattedFormRef[0] == null || !useCached) {
flattedFormRef[0] = createFlattenedForm(form);
}
return flattedFormRef[0];
}
}
Aggregations