use of com.servoy.j2db.persistence.Solution in project servoy-client by Servoy.
the class MediaResourcesServlet method findAndSendMediaData.
protected boolean findAndSendMediaData(HttpServletRequest request, HttpServletResponse response, String mediaName, FlattenedSolution fs) throws IOException {
Media media = fs.getMedia(mediaName);
if (media == null && mediaName.endsWith(".css")) {
media = fs.getMedia(mediaName.replace(".css", ".less"));
Solution sc = fs.getSolutionCopy(false);
if (media != null && media.getParent() != sc) {
// is a less file, try to load the compiled version
URL url = getServletConfig().getServletContext().getResource('/' + SERVOY_SOLUTION_CSS + '/' + mediaName);
if (url != null) {
setHeaders(request, response);
// cache resources on client until changed
if (HTTPUtils.checkAndSetUnmodified(request, response, media.getLastModifiedTime() != -1 ? media.getLastModifiedTime() : fs.getLastModifiedTime()))
return true;
response.setContentType("text/css");
URLConnection con = url.openConnection();
long lenght = con.getContentLengthLong();
if (lenght > 0)
response.setContentLengthLong(lenght);
try (InputStream is = con.getInputStream()) {
IOUtils.copy(is, response.getOutputStream());
}
return true;
}
}
}
if (media != null) {
return sendMediaData(request, response, fs, media);
}
return false;
}
use of com.servoy.j2db.persistence.Solution in project servoy-client by Servoy.
the class FoundSetManager method getTriggerFunctions.
private List<TriggerFunction> getTriggerFunctions(ITable table, TypedProperty<Integer> property, Scriptable foundsetScope) {
FlattenedSolution solutionRoot = getApplication().getFlattenedSolution();
IExecutingEnviroment scriptEngine = getApplication().getScriptEngine();
return stream(solutionRoot.getTableNodes(table)).map(tableNode -> {
Object function = null;
Scriptable scope = null;
ScriptMethod scriptMethod = solutionRoot.getScriptMethod(((Integer) tableNode.getProperty(property.getPropertyName())).intValue());
if (scriptMethod != null) {
if (scriptMethod.getParent() instanceof Solution) {
// global method
GlobalScope gs = scriptEngine.getScopesScope().getGlobalScope(scriptMethod.getScopeName());
if (gs != null) {
scope = gs;
function = gs.get(scriptMethod.getName());
}
} else if (foundsetScope != null) {
// foundset method
scope = foundsetScope;
function = scope.getPrototype().get(scriptMethod.getName(), scope);
}
}
if (function instanceof Function) {
return new TriggerFunction((Function) function, scope, tableNode);
}
return null;
}).filter(Objects::nonNull).collect(toList());
}
use of com.servoy.j2db.persistence.Solution in project servoy-client by Servoy.
the class JSForm method getEventHandler.
public static <T extends AbstractBase> JSMethod getEventHandler(IApplication application, T persist, int methodid, IJSParent<?> parent, String propertyName) {
if (methodid > 0) {
IJSScriptParent<?> scriptParent = null;
ScriptMethod scriptMethod = null;
if (parent instanceof JSForm) {
// form method
scriptMethod = ((JSForm) parent).getSupportChild().getScriptMethod(methodid);
if (scriptMethod == null) {
Form f = ((JSForm) parent).getSupportChild();
while (f != null && f.getExtendsID() > 0 && scriptMethod == null) {
f = application.getFlattenedSolution().getForm(f.getExtendsID());
if (f != null)
scriptMethod = f.getScriptMethod(methodid);
}
if (scriptMethod != null) {
scriptParent = application.getScriptEngine().getSolutionModifier().instantiateForm(f, false);
}
}
}
if (scriptMethod == null) {
// foundset method
if (parent instanceof JSDataSourceNode) {
scriptMethod = ((JSDataSourceNode) parent).getSupportChild().getFoundsetMethod(methodid);
} else if (parent instanceof JSForm && ((JSForm) parent).getForm().getDataSource() != null) {
Iterator<ScriptMethod> foundsetMethods = application.getFlattenedSolution().getFoundsetMethods(((JSForm) parent).getForm().getDataSource(), false);
scriptMethod = AbstractBase.selectById(foundsetMethods, methodid);
if (scriptMethod != null) {
scriptParent = new JSDataSourceNode(application, ((JSForm) parent).getForm().getDataSource());
}
}
}
if (scriptMethod == null) {
// global method
scriptMethod = application.getFlattenedSolution().getScriptMethod(methodid);
}
if (scriptMethod != null) {
if (scriptParent == null) {
if (scriptMethod.getParent() instanceof TableNode && parent instanceof JSDataSourceNode) {
scriptParent = (JSDataSourceNode) parent;
} else if (scriptMethod.getParent() instanceof Solution) {
// global
scriptParent = null;
} else {
// form method
scriptParent = getJSFormParent(parent);
}
}
List<Object> arguments = persist.getFlattenedMethodArguments(propertyName);
if (arguments == null || arguments.size() == 0) {
return new JSMethod(scriptParent, scriptMethod, application, false);
} else {
return new JSMethodWithArguments(application, scriptParent, scriptMethod, false, arguments.toArray());
}
}
} else if (methodid == 0 && BaseComponent.isCommandProperty(propertyName)) {
return (JSMethod) ISMDefaults.COMMAND_DEFAULT;
}
return null;
}
use of com.servoy.j2db.persistence.Solution in project servoy-client by Servoy.
the class JSForm method getEventHandler.
public static <T extends AbstractBase> JSMethod getEventHandler(IApplication application, T persist, String uuidOrName, IJSParent<?> parent, String propertyName) {
if (uuidOrName != null) {
IJSScriptParent<?> scriptParent = null;
ScriptMethod scriptMethod = application.getFlattenedSolution().getScriptMethod(uuidOrName);
;
if (scriptMethod != null) {
if (scriptMethod.getParent() instanceof TableNode && parent instanceof JSDataSourceNode) {
scriptParent = (JSDataSourceNode) parent;
} else if (scriptMethod.getParent() instanceof Solution) {
// global
scriptParent = null;
} else {
// form method
scriptParent = getJSFormParent(parent);
if (scriptMethod.getParent() != scriptParent.getSupportChild() && scriptParent.getSupportChild() instanceof Form) {
scriptParent = application.getScriptEngine().getSolutionModifier().instantiateForm((Form) scriptParent.getSupportChild(), false);
}
}
List<Object> arguments = persist.getFlattenedMethodArguments(propertyName);
if (arguments == null || arguments.size() == 0) {
return new JSMethod(scriptParent, scriptMethod, application, false);
} else {
return new JSMethodWithArguments(application, scriptParent, scriptMethod, false, arguments.toArray());
}
}
}
return null;
}
use of com.servoy.j2db.persistence.Solution in project servoy-client by Servoy.
the class JSValueList method setGlobalMethod.
@JSSetter
public void setGlobalMethod(IBaseSMMethod method) {
checkModification();
if (method == null) {
valuelist.setCustomValues(null);
valuelist.setValueListType(IValueListConstants.CUSTOM_VALUES);
} else {
ScriptMethod scriptMethod = ((JSMethod) method).getScriptMethod();
if (scriptMethod.getParent() instanceof Solution) {
valuelist.setCustomValues(scriptMethod.getUUID().toString());
valuelist.setValueListType(IValueListConstants.GLOBAL_METHOD_VALUES);
} else {
// $NON-NLS-1$
throw new RuntimeException("Only global methods are supported for a valuelist");
}
}
}
Aggregations