package com.redspr.redquerybuilder.js.client; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArrayMixed; public class VisitorJs { public final native JsConfiguration config() /*-{ return {meta : { tables : [ { "name" : "ticket", "label" : "Ticket", "columns" : [ { "name" : "priority", "label" : "Priority", "type" : "REF" } ], fks : [] } ], types : [ { "name" : "REF", "editor" : "SELECT", "operators" : [ { "name" : "IN", "label" : "any of", "cardinality" : "MULTI" }, { "name" : "=", "label" : "equals", "cardinality" : "ONE" }] } ] } } }-*/; public final native String visitValues(JavaScriptObject cb) /*-{ var visitor = new $wnd.rqb.Visitor(); var result = ''; visitor.visit = function(context) { var hasValue = context.asHasValue(); if (hasValue) { result += '(' + hasValue.getValue() + ')'; } } cb.accept(visitor); return result; }-*/; public final native String visitMessages(JavaScriptObject cb) /*-{ var visitor = new $wnd.rqb.Visitor(); var result = ''; visitor.visit = function(context) { var hasMessages = context.asHasMessages(); if (hasMessages) { var message = new $wnd.rqb.Message('Magical message'); hasMessages.showMessage(message); } } cb.accept(visitor); return result; }-*/; public final native String visitSerialise(JavaScriptObject cb) /*-{ var visitor = new $wnd.rqb.Visitor(); var result = ''; visitor.visit = function(context) { result += "(" + context.getNodeType() + ":" + context.getNodeName(); } visitor.endVisit = function(context) { result += ")"; } cb.accept(visitor); return result; }-*/; public final native JavaScriptObject start(JsConfiguration config, String sql, JsArrayMixed args) /*-{ return $wnd.redQueryBuilder(config, sql, args); }-*/; }