() {
17 | @Override
18 | public String render(Double object) {
19 | if (object == null) {
20 | return "";
21 | }
22 | return "" + object;
23 | }
24 | };
25 |
26 | public NumberBox(Session session, Column column) {
27 | super(Document.get().createTextInputElement(), RENDERER,
28 | DoubleParser.instance());
29 |
30 | // HTML5 browser might pick up on this
31 | getElement().setAttribute("type", "number");
32 |
33 | Editor editor = column.getEditor();
34 | Double step = (Double) editor.getAttribute("step");
35 | if (step == null) {
36 | step = ONE;
37 | }
38 | getElement().setAttribute("step", step.toString());
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/client/util/StatementBuilder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
3 | * Version 1.0, and under the Eclipse Public License, Version 1.0
4 | * (http://h2database.com/html/license.html).
5 | * Initial Developer: H2 Group
6 | *
7 | * Nicolas Fortin, Atelier SIG, IRSTV FR CNRS 24888
8 | * Support for the operator "&&" as an alias for SPATIAL_INTERSECTS
9 | */
10 | package com.redspr.redquerybuilder.core.client.util;
11 |
12 | /**
13 | * A utility class to build a statement. In addition to the methods supported by
14 | * StringBuilder, it allows to add a text only in the second iteration. This
15 | * simplified constructs such as:
16 | *
17 | * StringBuilder buff = new StringBuilder();
18 | * for (int i = 0; i < args.length; i++) {
19 | * if (i > 0) {
20 | * buff.append(", ");
21 | * }
22 | * buff.append(args[i]);
23 | * }
24 | *
25 | * to
26 | *
27 | * StatementBuilder buff = new StatementBuilder();
28 | * for (String s : args) {
29 | * buff.appendExceptFirst(", ");
30 | * buff.append(a);
31 | * }
32 | *
33 | */
34 | public class StatementBuilder {
35 |
36 | private final StringBuilder builder = new StringBuilder();
37 | private int index;
38 |
39 | /**
40 | * Create a new builder.
41 | */
42 | public StatementBuilder() {
43 | // nothing to do
44 | }
45 |
46 | /**
47 | * Create a new builder.
48 | *
49 | * @param string the initial string
50 | */
51 | public StatementBuilder(String string) {
52 | builder.append(string);
53 | }
54 |
55 | /**
56 | * Append a text.
57 | *
58 | * @param s the text to append
59 | * @return itself
60 | */
61 | public StatementBuilder append(String s) {
62 | builder.append(s);
63 | return this;
64 | }
65 |
66 | /**
67 | * Append a character.
68 | *
69 | * @param c the character to append
70 | * @return itself
71 | */
72 | public StatementBuilder append(char c) {
73 | builder.append(c);
74 | return this;
75 | }
76 |
77 | /**
78 | * Append a number.
79 | *
80 | * @param x the number to append
81 | * @return itself
82 | */
83 | public StatementBuilder append(long x) {
84 | builder.append(x);
85 | return this;
86 | }
87 |
88 | /**
89 | * Reset the loop counter.
90 | *
91 | * @return itself
92 | */
93 | public StatementBuilder resetCount() {
94 | index = 0;
95 | return this;
96 | }
97 |
98 | /**
99 | * Append a text, but only if appendExceptFirst was never called.
100 | *
101 | * @param s the text to append
102 | */
103 | public void appendOnlyFirst(String s) {
104 | if (index == 0) {
105 | builder.append(s);
106 | }
107 | }
108 |
109 | /**
110 | * Append a text, except when this method is called the first time.
111 | *
112 | * @param s the text to append
113 | */
114 | public void appendExceptFirst(String s) {
115 | if (index++ > 0) {
116 | builder.append(s);
117 | }
118 | }
119 |
120 | @Override
121 | public String toString() {
122 | return builder.toString();
123 | }
124 |
125 | /**
126 | * Get the length.
127 | *
128 | * @return the length
129 | */
130 | public int length() {
131 | return builder.length();
132 | }
133 |
134 | }
135 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/client/util/XWidget.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client.util;
2 |
3 | import com.google.gwt.user.client.ui.SimplePanel;
4 | import com.google.gwt.user.client.ui.Widget;
5 |
6 | public class XWidget extends SimplePanel {
7 | public T getValue() {
8 | return (T) getWidget();
9 | }
10 |
11 | public void setValue(T p) {
12 | setWidget(p);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/client/util/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package com.redspr.redquerybuilder.core.client.util;
5 |
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/client/value/Value.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client.value;
2 |
3 | public class Value {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/client/value/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package com.redspr.redquerybuilder.core.client.value;
5 |
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/config/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package com.redspr.redquerybuilder.core.config;
5 |
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package com.redspr.redquerybuilder.core;
5 |
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Cardinality.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import com.google.gwt.user.client.rpc.IsSerializable;
4 |
5 | public enum Cardinality implements IsSerializable {
6 | ZERO, ONE, MULTI;
7 | }
8 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Column.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.google.gwt.user.client.rpc.IsSerializable;
6 |
7 | public class Column implements HasLabel, HasStyleName, Serializable, IsSerializable {
8 | private String name;
9 | private String label;
10 | private Type type;
11 | private Table table;
12 |
13 | private String styleName;
14 |
15 | private boolean hidden;
16 |
17 | private Editor editor;
18 |
19 | public Column() {
20 | }
21 |
22 | public Column(String name2, Type type2) {
23 | this.name = name2;
24 | this.label = name2;
25 | this.type = type2;
26 | }
27 |
28 | public Editor getEditor() {
29 | if (editor == null) {
30 | return type.getEditor();
31 | }
32 | return editor;
33 | }
34 |
35 | public void setEditor(Editor p) {
36 | this.editor = p;
37 | }
38 |
39 | public boolean isHidden() {
40 | return hidden;
41 | }
42 |
43 | public void setHidden(boolean p) {
44 | this.hidden = p;
45 | }
46 |
47 | public String getName() {
48 | return name;
49 | }
50 |
51 | public Type getType() {
52 | return type;
53 | }
54 |
55 | public void setTable(Table p) {
56 | this.table = p;
57 | }
58 |
59 | public Table getTable() {
60 | return table;
61 | }
62 |
63 | public void setLabel(String p) {
64 | this.label = p;
65 | }
66 |
67 | @Override
68 | public String getLabel() {
69 | return label;
70 | }
71 |
72 | public String getStyleName() {
73 | if (styleName == null) {
74 | return getType().getStyleName();
75 | }
76 | return styleName;
77 | }
78 |
79 | @Override
80 | public void setStyleName(String p) {
81 | this.styleName = p;
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Constraint.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 |
4 |
5 | public abstract class Constraint extends SchemaObjectBase {
6 | private Table table;
7 |
8 | // for GWT RPC
9 | public Constraint() {
10 | }
11 |
12 | Constraint(String name, Table t) {
13 | setObjectName(name);
14 | this.table = t;
15 | }
16 |
17 | public Table getTable() {
18 | return table;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/ConstraintReferential.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 |
4 |
5 | public class ConstraintReferential extends Constraint {
6 | private Column[] columns;
7 |
8 | private Table refTable;
9 |
10 | private Column[] refColumns;
11 |
12 | private String revName;
13 |
14 | private boolean hidden;
15 |
16 | private boolean revHidden;
17 |
18 | public boolean isHidden() {
19 | return hidden;
20 | }
21 |
22 | public void setHidden(boolean p) {
23 | this.hidden = p;
24 | }
25 |
26 | public boolean isRevHidden() {
27 | return revHidden;
28 | }
29 |
30 | public void setRevHidden(boolean p) {
31 | this.revHidden = p;
32 | }
33 |
34 | public String getRevName() {
35 | return revName;
36 | }
37 |
38 | public void setRevName(String p) {
39 | this.revName = p;
40 | }
41 |
42 | // for GWT RPC
43 | public ConstraintReferential() {
44 | }
45 |
46 | public ConstraintReferential(String name, Table t) {
47 | super(name, t);
48 | }
49 |
50 | public Column[] getColumns() {
51 | return columns;
52 | }
53 |
54 | public void setColumns(Column[] p) {
55 | this.columns = p;
56 | }
57 |
58 | public Column[] getRefColumns() {
59 | return refColumns;
60 | }
61 |
62 | public void setRefColumns(Column[] p) {
63 | this.refColumns = p;
64 | }
65 |
66 | public Table getRefTable() {
67 | return refTable;
68 | }
69 |
70 | public void setRefTable(Table p) {
71 | this.refTable = p;
72 | }
73 |
74 | @Override
75 | public String toString() {
76 | return "FK:" + getName() + "(" + getTable() + " to " + getRefTable() + ")";
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Database.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.google.gwt.user.client.rpc.IsSerializable;
6 |
7 |
8 | /**
9 | * There is one database object per open database.
10 | *
11 | * The format of the meta data table is:
12 | * id int, headPos int (for indexes), objectType int, sql varchar
13 | *
14 | * @since 2004-04-15 22:49
15 | */
16 | public class Database implements Serializable, IsSerializable {
17 |
18 | private String databaseName;
19 | private String databaseShortName;
20 |
21 | private Schema mainSchema;
22 |
23 | private Type[] types;
24 |
25 |
26 | public Database() {
27 | this(new Schema());
28 | }
29 |
30 | public Database(Schema s) {
31 | mainSchema = s;
32 | }
33 |
34 | public Type[] getTypes() {
35 | return types;
36 | }
37 |
38 | public void setTypes(Type[] p) {
39 | this.types = p;
40 | }
41 |
42 | public Type getTypeByName(String typeName) {
43 | for (Type t : types) {
44 | if (typeName.equals(t.getName())) {
45 | return t;
46 | }
47 | }
48 | throw new RuntimeException("Could not find type '" + typeName + "'");
49 | }
50 |
51 | public Operator getOperatorByName(String name) {
52 | for (Type type: types) {
53 | for (Operator op : type.getOperators()) {
54 | if (name.equals(op.getName())) {
55 | return op;
56 | }
57 | }
58 | }
59 |
60 | return null;
61 | }
62 |
63 | public Schema getMainSchema() {
64 | return mainSchema;
65 | }
66 |
67 | public String getName() {
68 | return databaseName;
69 | }
70 |
71 | @Override
72 | public String toString() {
73 | return databaseShortName + ":" + super.toString();
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/DbObject.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.google.gwt.user.client.rpc.IsSerializable;
6 |
7 | /**
8 | * A database object such as a table, an index, or a user.
9 | */
10 | public interface DbObject extends Serializable, IsSerializable {
11 |
12 | /**
13 | * The object is of the type table or view.
14 | */
15 | int TABLE_OR_VIEW = 0;
16 |
17 | /**
18 | * This object is an index.
19 | */
20 | int INDEX = 1;
21 |
22 | /**
23 | * This object is a user.
24 | */
25 | int USER = 2;
26 |
27 | /**
28 | * This object is a sequence.
29 | */
30 | int SEQUENCE = 3;
31 |
32 | /**
33 | * This object is a trigger.
34 | */
35 | int TRIGGER = 4;
36 |
37 | /**
38 | * This object is a constraint (check constraint, unique constraint, or
39 | * referential constraint).
40 | */
41 | int CONSTRAINT = 5;
42 |
43 | /**
44 | * This object is a setting.
45 | */
46 | int SETTING = 6;
47 |
48 | /**
49 | * This object is a role.
50 | */
51 | int ROLE = 7;
52 |
53 | /**
54 | * This object is a right.
55 | */
56 | int RIGHT = 8;
57 |
58 | /**
59 | * This object is an alias for a Java function.
60 | */
61 | int FUNCTION_ALIAS = 9;
62 |
63 | /**
64 | * This object is a schema.
65 | */
66 | int SCHEMA = 10;
67 |
68 | /**
69 | * This object is a constant.
70 | */
71 | int CONSTANT = 11;
72 |
73 | /**
74 | * This object is a user data type (domain).
75 | */
76 | int USER_DATATYPE = 12;
77 |
78 | /**
79 | * This object is a comment.
80 | */
81 | int COMMENT = 13;
82 |
83 | /**
84 | * This object is a user-defined aggregate function.
85 | */
86 | int AGGREGATE = 14;
87 |
88 |
89 |
90 | /**
91 | * Get the SQL name of this object (may be quoted).
92 | *
93 | * @return the SQL name
94 | */
95 | String getSQL();
96 |
97 | /**
98 | * Get the name.
99 | *
100 | * @return the name
101 | */
102 | String getName();
103 |
104 |
105 | }
106 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/DbObjectBase.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import com.redspr.redquerybuilder.core.client.engine.Session;
4 |
5 | /**
6 | * The base class for all database objects.
7 | */
8 | public abstract class DbObjectBase implements DbObject, HasLabel {
9 |
10 | private String objectName;
11 |
12 | private String label;
13 |
14 | protected void setObjectName(String name) {
15 | objectName = name;
16 | }
17 |
18 | public void setLabel(String p) {
19 | this.label = p;
20 | }
21 |
22 | @Override
23 | public String getSQL() {
24 | return Session.quoteIdentifier(objectName);
25 | }
26 |
27 | @Override
28 | public String getName() {
29 | return objectName;
30 | }
31 |
32 | @Override
33 | public String toString() {
34 | return objectName + ":" + super.toString();
35 | }
36 |
37 | @Override
38 | public String getLabel() {
39 | if (label != null) {
40 | return label;
41 | }
42 | return objectName;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Editor.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import java.io.Serializable;
4 | import java.util.HashMap;
5 | import java.util.Map;
6 |
7 | import com.google.gwt.user.client.rpc.IsSerializable;
8 |
9 | // XXX custom editors in Config?
10 | public class Editor implements HasStyleName, Serializable, IsSerializable {
11 | public static class TextEditor extends Editor {
12 | @Override
13 | public Object getDefault() {
14 | return "";
15 | }
16 | }
17 |
18 | public static class DateEditor extends Editor {
19 | public static final String FORMAT = "format";
20 | }
21 |
22 | public static class BooleanEditor extends Editor {
23 | @Override
24 | public Object getDefault() {
25 | return Boolean.FALSE;
26 | }
27 | }
28 |
29 | public static class SelectEditor extends Editor {
30 |
31 | }
32 |
33 | public static class NumberEditor extends Editor {
34 | }
35 |
36 |
37 | // XXX - rubbish, only used by JSON?
38 | private static final Map editorByName = new HashMap();
39 |
40 | private static Editor valueOf2(String name) {
41 | if ("STRING".equals(name) || "TEXT".equals(name)) {
42 | return new TextEditor();
43 | } else if ("DATE".equals(name)) {
44 | return new DateEditor();
45 | } else if ("SUGGEST".equals(name)) {
46 | return new SuggestEditor();
47 | } else if ("SELECT".equals(name)) {
48 | return new SelectEditor();
49 | } else if ("NUMBER".equals(name)) {
50 | return new NumberEditor();
51 | } else {
52 | throw new RuntimeException("No editor for " + name);
53 | }
54 | }
55 |
56 | public static Editor valueOf(String name) {
57 | Editor e = editorByName.get(name);
58 | if (e == null) {
59 | e = valueOf2(name);
60 | editorByName.put(name, e);
61 | }
62 | return e;
63 | }
64 |
65 | // XXX map mush
66 | private final Map attributes = new HashMap();
67 |
68 | private String styleName;
69 |
70 | public Object getDefault() {
71 | return null;
72 | }
73 |
74 | public void setAttribute(String name, Object value) {
75 | attributes.put(name, value);
76 | }
77 |
78 | public Object getAttribute(String name) {
79 | return attributes.get(name);
80 | }
81 |
82 | public String getStyleName() {
83 | return styleName;
84 | }
85 |
86 | @Override
87 | public void setStyleName(String p) {
88 | this.styleName = p;
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/EnumerateRequest.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | public class EnumerateRequest {
4 | private String tableName;
5 |
6 | private String columnName;
7 |
8 | private String columnType;
9 |
10 | public String getTableName() {
11 | return tableName;
12 | }
13 |
14 | public void setTableName(String p) {
15 | this.tableName = p;
16 | }
17 |
18 | public String getColumnName() {
19 | return columnName;
20 | }
21 |
22 | public void setColumnName(String p) {
23 | this.columnName = p;
24 | }
25 |
26 | public String getColumnTypeName() {
27 | return columnType;
28 | }
29 |
30 | public void setColumnTypeName(String p) {
31 | this.columnType = p;
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/HasLabel.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | public interface HasLabel {
4 | String getLabel();
5 | }
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/HasStyleName.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | public interface HasStyleName {
4 | void setStyleName(String p);
5 | }
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/HasValue2.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import com.google.gwt.user.client.rpc.IsSerializable;
4 |
5 | public interface HasValue2 extends IsSerializable {
6 | Object getValue();
7 | }
8 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Operator.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import com.google.gwt.user.client.rpc.IsSerializable;
4 |
5 | public class Operator implements HasLabel, IsSerializable {
6 |
7 | public static final String EQUAL = "=";
8 | public static final String NOT_EQUAL = "<>";
9 | public static final String BIGGER = ">";
10 | public static final String SMALLER = "<";
11 | public static final String SMALLER_EQUAL = "<=";
12 | public static final String BIGGER_EQUAL = ">=";
13 | public static final String IS_NULL = "IS NULL";
14 | public static final String IS_NOT_NULL = "IS NOT NULL";
15 |
16 | private String name;
17 | private String label;
18 |
19 | private Cardinality cardinality;
20 |
21 | // For GWT RPC
22 | private Operator() {
23 | }
24 |
25 | public Operator(String name2) {
26 | this(name2, Cardinality.ONE);
27 | }
28 |
29 | public Operator(String name2, Cardinality c2) {
30 | this.name = name2;
31 | this.label = name;
32 | this.cardinality = c2;
33 | }
34 |
35 | @Override
36 | public String getLabel() {
37 | return label;
38 | }
39 |
40 | public Cardinality getCardinality() {
41 | return cardinality;
42 | }
43 |
44 | public String getName() {
45 | return name;
46 | }
47 |
48 | public void setLabel(String p) {
49 | this.label = p;
50 | }
51 |
52 | public void setCardinality(Cardinality p) {
53 | this.cardinality = p;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Schema.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import java.util.ArrayList;
4 | import java.util.Collection;
5 | import java.util.LinkedHashMap;
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 |
10 |
11 | public class Schema extends DbObjectBase {
12 | private final Map tables = new LinkedHashMap();
13 |
14 | public Table findTableOrView(String name) {
15 | return tables.get(name.toUpperCase());
16 | }
17 |
18 | public Collection getTables() {
19 | return tables.values();
20 | }
21 |
22 | public void add(Table p) {
23 | tables.put(p.getName().toUpperCase(), p);
24 | }
25 |
26 | // XXX better place for this?
27 | // only internal "optimisation"?
28 | public void addReverseConstraints() {
29 | List crs = new ArrayList();
30 | for (Table t : getTables()) {
31 | for (Constraint c : t.getConstraints()) {
32 | if (c instanceof ConstraintReferential) {
33 | crs.add((ConstraintReferential) c);
34 | }
35 | }
36 | }
37 |
38 | for (ConstraintReferential cr : crs) {
39 | String title = cr.getRevName();
40 | if (title == null) {
41 | title = "Rev " + cr.getName();
42 | }
43 | ConstraintReferential cr2 = new ConstraintReferential(title, cr.getRefTable());
44 | cr2.setRefColumns(cr.getColumns());
45 | cr2.setColumns(cr.getRefColumns());
46 | cr2.setRefTable(cr.getTable());
47 | cr.getRefTable().add(cr2);
48 | cr2.setHidden(cr.isRevHidden());
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/SchemaObject.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 |
4 | /**
5 | * Any database object that is stored in a schema.
6 | */
7 | public interface SchemaObject extends DbObject {
8 |
9 | /**
10 | * Get the schema in which this object is defined
11 | *
12 | * @return the schema
13 | */
14 | Schema getSchema();
15 | }
16 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/SchemaObjectBase.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 |
4 | /**
5 | * The base class for classes implementing SchemaObject.
6 | */
7 | public abstract class SchemaObjectBase extends DbObjectBase implements SchemaObject {
8 |
9 | private Schema schema;
10 |
11 | @Override
12 | public Schema getSchema() {
13 | return schema;
14 | }
15 |
16 | @Override
17 | public String getSQL() {
18 | if (schema == null) {
19 | return super.getSQL(); // XXX legit for schema to be null?
20 | }
21 | return schema.getSQL() + "." + super.getSQL();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/SuggestEditor.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | public class SuggestEditor extends Editor {
4 | private String key;
5 |
6 | public SuggestEditor() {
7 | }
8 |
9 | public SuggestEditor(String key2) {
10 | this.key = key2;
11 | }
12 |
13 | public String getKey() {
14 | return key;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/SuggestRequest.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | public class SuggestRequest extends EnumerateRequest {
4 | private int limit;
5 |
6 | private String query;
7 |
8 | public int getLimit() {
9 | return limit;
10 | }
11 |
12 | public void setLimit(int p) {
13 | this.limit = p;
14 | }
15 |
16 | public String getQuery() {
17 | return query;
18 | }
19 |
20 | public void setQuery(String p) {
21 | this.query = p;
22 | }
23 |
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Table.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import java.util.ArrayList;
4 | import java.util.Collection;
5 | import java.util.LinkedHashMap;
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 |
10 |
11 |
12 | public class Table extends SchemaObjectBase implements HasLabel {
13 |
14 | private final Map columns = new LinkedHashMap();
15 |
16 | private final List constraints = new ArrayList();
17 |
18 | private boolean hidden;
19 |
20 |
21 | public Table() {
22 | }
23 |
24 | public Table(String name) {
25 | setObjectName(name);
26 | }
27 |
28 | public void add(Column c) {
29 | c.setTable(this);
30 | columns.put(c.getName().toUpperCase(), c);
31 | }
32 |
33 | public Collection getColumns() {
34 | return columns.values();
35 | }
36 |
37 | public Column getColumn(String name) {
38 | return columns.get(name.toUpperCase());
39 | }
40 |
41 | public List getConstraints() {
42 | return constraints;
43 | }
44 |
45 | public Constraint getConstraintByName(String name) {
46 | for (Constraint c : constraints) {
47 | if (c.getName().equals(name)) {
48 | return c;
49 | }
50 | }
51 | throw new IllegalArgumentException("Unable to find constraint '" + name + "'");
52 | }
53 |
54 | public void add(Constraint c) {
55 | constraints.add(c);
56 | }
57 |
58 | public boolean isHidden() {
59 | return hidden;
60 | }
61 |
62 | public void setHidden(boolean p) {
63 | this.hidden = p;
64 | }
65 |
66 | @Override
67 | public String toString() {
68 | return "Table:" + getName();
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/Type.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.shared.meta;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.google.gwt.user.client.rpc.IsSerializable;
6 |
7 | public class Type implements HasStyleName, Serializable, IsSerializable {
8 | private String name;
9 |
10 | private Operator[] operators = new Operator[] {
11 | new Operator("="),
12 | new Operator("IS NULL", Cardinality.ZERO),
13 | new Operator("LIKE") };
14 |
15 | private Editor editor;
16 |
17 | private String styleName;
18 |
19 | // for GWT RPC
20 | private Type() {
21 | }
22 |
23 | public Type(String name2) {
24 | this(name2, new Editor.TextEditor());
25 | }
26 |
27 | public Type(String name2, Editor editor2) {
28 | this.name = name2;
29 | this.editor = editor2;
30 | }
31 |
32 | public Operator[] getOperators() {
33 | return operators;
34 | }
35 | public void setOperators(Operator[] p) {
36 | this.operators = p;
37 | }
38 | public String getName() {
39 | return name;
40 | }
41 |
42 | public Editor getEditor() {
43 | return editor;
44 | }
45 |
46 | public void setEditor(Editor p) {
47 | this.editor = p;
48 | }
49 |
50 | public Operator getOperatorByName(String opName) {
51 | for (Operator op : operators) {
52 | if (opName.equals(op.getName())) {
53 | return op;
54 | }
55 | }
56 | return null;
57 | }
58 |
59 | public Operator getOperatorByNameOrFail(String opName) {
60 | Operator op = getOperatorByName(opName);
61 | if (op == null) {
62 | throw new RuntimeException("Could not find operator '" + opName
63 | + "' in type '" + name + "'");
64 | }
65 | return op;
66 | }
67 |
68 | public String getStyleName() {
69 | if (styleName == null) {
70 | return getEditor().getStyleName();
71 | }
72 | return styleName;
73 | }
74 |
75 | @Override
76 | public void setStyleName(String p) {
77 | this.styleName = p;
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/com/redspr/redquerybuilder/core/shared/meta/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package com.redspr.redquerybuilder.core.shared.meta;
5 |
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/java/RedQueryBuilderCoreJre.gwt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/java/math/BigDecimal.java:
--------------------------------------------------------------------------------
1 | package java.math;
2 |
3 | public class BigDecimal {
4 | public BigDecimal(BigInteger p) {
5 | }
6 |
7 | public BigDecimal(String p) {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/java/math/BigInteger.java:
--------------------------------------------------------------------------------
1 | package java.math;
2 |
3 | public class BigInteger {
4 | public BigInteger(String x, int i) {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/java/math/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package java.math;
5 |
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/java/sql/SQLException.java:
--------------------------------------------------------------------------------
1 | package java.sql;
2 |
3 | public class SQLException extends Exception {
4 | public SQLException(String m) {
5 | super(m);
6 | }
7 |
8 | public SQLException(String m, Throwable t) {
9 | super(m, t);
10 | }
11 |
12 |
13 | public int getErrorCode() {
14 | return 0;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/java/sql/Types.java:
--------------------------------------------------------------------------------
1 | package java.sql;
2 |
3 |
4 | //(version 1.5 : 49.0, super bit)
5 | public final class Types {
6 |
7 | private Types() {
8 | }
9 |
10 | // Field descriptor #19 I
11 | public static final int BIT = -7;
12 |
13 | // Field descriptor #19 I
14 | public static final int TINYINT = -6;
15 |
16 | // Field descriptor #19 I
17 | public static final int SMALLINT = 5;
18 |
19 | // Field descriptor #19 I
20 | public static final int INTEGER = 4;
21 |
22 | // Field descriptor #19 I
23 | public static final int BIGINT = -5;
24 |
25 | // Field descriptor #19 I
26 | public static final int FLOAT = 6;
27 |
28 | // Field descriptor #19 I
29 | public static final int REAL = 7;
30 |
31 | // Field descriptor #19 I
32 | public static final int DOUBLE = 8;
33 |
34 | // Field descriptor #19 I
35 | public static final int NUMERIC = 2;
36 |
37 | // Field descriptor #19 I
38 | public static final int DECIMAL = 3;
39 |
40 | // Field descriptor #19 I
41 | public static final int CHAR = 1;
42 |
43 | // Field descriptor #19 I
44 | public static final int VARCHAR = 12;
45 |
46 | // Field descriptor #19 I
47 | public static final int LONGVARCHAR = -1;
48 |
49 | // Field descriptor #19 I
50 | public static final int DATE = 91;
51 |
52 | // Field descriptor #19 I
53 | public static final int TIME = 92;
54 |
55 | // Field descriptor #19 I
56 | public static final int TIMESTAMP = 93;
57 |
58 | // Field descriptor #19 I
59 | public static final int BINARY = -2;
60 |
61 | // Field descriptor #19 I
62 | public static final int VARBINARY = -3;
63 |
64 | // Field descriptor #19 I
65 | public static final int LONGVARBINARY = -4;
66 |
67 | // Field descriptor #19 I
68 | public static final int NULL = 0;
69 |
70 | // Field descriptor #19 I
71 | public static final int OTHER = 1111;
72 |
73 | // Field descriptor #19 I
74 | public static final int JAVA_OBJECT = 2000;
75 |
76 | // Field descriptor #19 I
77 | public static final int DISTINCT = 2001;
78 |
79 | // Field descriptor #19 I
80 | public static final int STRUCT = 2002;
81 |
82 | // Field descriptor #19 I
83 | public static final int ARRAY = 2003;
84 |
85 | // Field descriptor #19 I
86 | public static final int BLOB = 2004;
87 |
88 | // Field descriptor #19 I
89 | public static final int CLOB = 2005;
90 |
91 | // Field descriptor #19 I
92 | public static final int REF = 2006;
93 |
94 | // Field descriptor #19 I
95 | public static final int DATALINK = 70;
96 |
97 | // Field descriptor #19 I
98 | public static final int BOOLEAN = 16;
99 |
100 | // Field descriptor #19 I
101 | public static final int ROWID = -8;
102 |
103 | // Field descriptor #19 I
104 | public static final int NCHAR = -15;
105 |
106 | // Field descriptor #19 I
107 | public static final int NVARCHAR = -9;
108 |
109 | // Field descriptor #19 I
110 | public static final int LONGNVARCHAR = -16;
111 |
112 | // Field descriptor #19 I
113 | public static final int NCLOB = 2011;
114 |
115 | // Field descriptor #19 I
116 | public static final int SQLXML = 2009;
117 |
118 |
119 | }
120 |
121 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/java/java/sql/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package java.sql;
5 |
6 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Archetype Created Web Application
7 |
8 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/CapturingConfiguration.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client;
2 |
3 | import com.google.gwt.user.client.rpc.AsyncCallback;
4 | import com.google.gwt.user.client.ui.SuggestOracle.Response;
5 | import com.redspr.redquerybuilder.core.client.Configuration;
6 | import com.redspr.redquerybuilder.core.shared.meta.EnumerateRequest;
7 |
8 | public class CapturingConfiguration extends Configuration {
9 |
10 | private AsyncCallback enumerateCallback;
11 |
12 | public AsyncCallback getEnumerateCallback() {
13 | return enumerateCallback;
14 | }
15 |
16 | @Override
17 | public void fireEnumerate(EnumerateRequest request, AsyncCallback callback) {
18 | enumerateCallback = callback;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/GwtTestConf.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client;
2 |
3 | import org.junit.Test;
4 |
5 |
6 | public class GwtTestConf extends AbstractTest {
7 |
8 |
9 | @Test
10 | public void testMissingConf() throws Exception {
11 |
12 | }
13 |
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/GwtTestDom.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import org.junit.Test;
7 |
8 | import com.google.gwt.dom.client.Document;
9 | import com.google.gwt.dom.client.Element;
10 | import com.google.gwt.event.dom.client.ChangeEvent;
11 | import com.google.gwt.event.dom.client.ChangeHandler;
12 | import com.google.gwt.event.dom.client.DomEvent;
13 | import com.google.gwt.event.logical.shared.SelectionEvent;
14 | import com.google.gwt.event.logical.shared.SelectionHandler;
15 | import com.google.gwt.event.logical.shared.ValueChangeEvent;
16 | import com.google.gwt.event.logical.shared.ValueChangeHandler;
17 | import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
18 | import com.google.gwt.user.client.ui.RootPanel;
19 | import com.google.gwt.user.client.ui.SuggestBox;
20 | import com.google.gwt.user.client.ui.TextBox;
21 |
22 | public class GwtTestDom extends AbstractTest {
23 |
24 |
25 | @Test
26 | public void testTextBox() throws Exception {
27 | TextBox tb = new TextBox();
28 | RootPanel.get().add(tb);
29 | final List events = new ArrayList();
30 | tb.addChangeHandler(new ChangeHandler() {
31 | @Override
32 | public void onChange(ChangeEvent event) {
33 | events.add(event);
34 | }
35 | });
36 |
37 | DomEvent.fireNativeEvent(Document.get().createChangeEvent(), tb);
38 |
39 | assertEquals(1, events.size());
40 | }
41 |
42 |
43 |
44 |
45 | @Test
46 | public void testSuggestBox() throws Exception {
47 | this.delayTestFinish(1000);
48 |
49 |
50 | MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();
51 | oracle.add("Cat");
52 | oracle.add("Dog");
53 | oracle.add("Horse");
54 | oracle.add("Canary");
55 |
56 | SuggestBox box = new SuggestBox(oracle);
57 |
58 |
59 | RootPanel.get().add(box);
60 | final List events = new ArrayList();
61 | box.addValueChangeHandler(new ValueChangeHandler() {
62 | @Override
63 | public void onValueChange(ValueChangeEvent event) {
64 | events.add(event);
65 | }
66 | });
67 |
68 | box.addSelectionHandler(new SelectionHandler() {
69 |
70 | @Override
71 | public void onSelection(SelectionEvent event) {
72 | events.add(event);
73 | finishTest();
74 | }
75 |
76 | });
77 |
78 | box.getElement().dispatchEvent(Document.get().createChangeEvent());
79 | assertEquals(1, events.size());
80 |
81 | box.getElement().setAttribute("value", "Ca");
82 | box.getElement().dispatchEvent(Document.get().createKeyUpEvent(false, false, false, false, 'C'));
83 |
84 | //System.out.println("X=" + box.getElement().getParentElement().getInnerHTML());
85 | List elmts = find(box.getElement(), "item");
86 | assertEquals(2, elmts.size());
87 | elmts.get(0).dispatchEvent(Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false));
88 | // event fired as finally..
89 | //assertEquals(2, events.size());
90 | }
91 |
92 | }
93 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/GwtTestParsing.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client;
2 |
3 | import java.util.ArrayList;
4 |
5 | import org.junit.Test;
6 |
7 | import com.redspr.redquerybuilder.core.client.command.Parser;
8 | import com.redspr.redquerybuilder.core.client.command.dml.Select;
9 | import com.redspr.redquerybuilder.core.client.engine.Session;
10 |
11 | public class GwtTestParsing extends AbstractTest {
12 |
13 | // https://github.com/salk31/RedQueryBuilder/issues/42
14 | @Test
15 | public void testWildcard() throws Exception {
16 | Session sess = getSession();
17 | Parser p = new Parser(sess);
18 |
19 | Select s = (Select) p.parseOnly("SELECT * FROM Log l");
20 | String sql = s.getSQL(new ArrayList());
21 | assertEquals("SELECT *\nFROM Log L", sql);
22 | }
23 |
24 | // https://github.com/salk31/RedQueryBuilder/issues/42
25 | @Test
26 | public void testAliasedWildcard() throws Exception {
27 | Session sess = getSession();
28 | Parser p = new Parser(sess);
29 |
30 | Select s = (Select) p.parseOnly("SELECT l.* FROM Log l JOIN Person p ON l.parent = p.id");
31 | String sql = s.getSQL(new ArrayList());
32 | assertEquals("SELECT L.*\nFROM Log L\nINNER JOIN PERSON P ON L.PARENT = P.ID", sql);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/expression/AbstractEditorTest.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client.expression;
2 |
3 | import java.util.Date;
4 |
5 | import org.junit.Ignore;
6 | import org.junit.Test;
7 |
8 | import com.google.gwt.user.client.Window;
9 | import com.google.gwt.user.client.ui.HasValue;
10 | import com.google.gwt.user.client.ui.Widget;
11 | import com.redspr.redquerybuilder.core.client.AbstractTest;
12 | import com.redspr.redquerybuilder.core.shared.meta.Cardinality;
13 | import com.redspr.redquerybuilder.core.shared.meta.Column;
14 | import com.redspr.redquerybuilder.core.shared.meta.Editor;
15 | import com.redspr.redquerybuilder.core.shared.meta.Operator;
16 |
17 | @Ignore
18 | public abstract class AbstractEditorTest extends AbstractTest {
19 |
20 | abstract protected Editor getEditor();
21 |
22 | protected Cardinality getCardinality() {
23 | return Cardinality.ONE;
24 | }
25 |
26 | abstract protected T getExample1();
27 |
28 | protected T getEmptyValue() {
29 | return null;
30 | }
31 |
32 | private Column getColumn() {
33 | Column c = new Column();
34 | c.setEditor(getEditor());
35 | return c;
36 | }
37 |
38 | private Operator getOperator() {
39 | Operator o = new Operator("TEST");
40 | o.setCardinality(getCardinality());
41 | return o;
42 | }
43 |
44 | private Widget asWidget() {
45 | Object key = EditorWidgetFactory.createKey(getColumn(), getOperator());
46 | return EditorWidgetFactory.create(key, null, getColumn());
47 | }
48 |
49 | private HasValue asHasValue() {
50 | return (HasValue) asWidget();
51 | }
52 |
53 | @Test
54 | public void testNullInEmptyOut() {
55 | HasValue hasValue = asHasValue();
56 | hasValue.setValue(null);
57 | assertEquals(getEmptyValue(), hasValue.getValue());
58 | }
59 |
60 | @Test
61 | public void testValueInAndOut() {
62 | HasValue hasValue = asHasValue();
63 | hasValue.setValue(getExample1());
64 | T a = getExample1();
65 | if (a instanceof Date) {
66 | Date x = (Date) a;
67 | Date y = (Date) hasValue.getValue();
68 | Window.alert("x.time=" + x.getTime() + " y.time=" + y.getTime());
69 | }
70 | assertEquals(getExample1(), hasValue.getValue());
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/expression/GwtTestDateEditor.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client.expression;
2 |
3 | import java.util.Date;
4 |
5 | import com.redspr.redquerybuilder.core.shared.meta.Editor;
6 |
7 | public class GwtTestDateEditor extends AbstractEditorTest {
8 |
9 | @Override
10 | protected Editor getEditor() {
11 | return new Editor.DateEditor();
12 | }
13 |
14 | @Override
15 | protected Date getExample1() {
16 | return new Date(1971, 1, 6);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/expression/GwtTestNumberEditor.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client.expression;
2 |
3 | import com.redspr.redquerybuilder.core.shared.meta.Editor;
4 |
5 | public class GwtTestNumberEditor extends AbstractEditorTest {
6 |
7 | @Override
8 | protected Editor getEditor() {
9 | return new Editor.NumberEditor();
10 | }
11 |
12 | @Override
13 | protected Double getExample1() {
14 | return new Double(3.15);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/expression/GwtTestSuggestEditorWidget.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client.expression;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import org.junit.Test;
7 |
8 | import com.google.gwt.core.client.Scheduler;
9 | import com.google.gwt.core.client.Scheduler.RepeatingCommand;
10 | import com.google.gwt.dom.client.Document;
11 | import com.google.gwt.dom.client.Element;
12 | import com.google.gwt.event.logical.shared.ValueChangeEvent;
13 | import com.google.gwt.event.logical.shared.ValueChangeHandler;
14 | import com.google.gwt.user.client.ui.RootPanel;
15 | import com.redspr.redquerybuilder.core.client.AbstractTest;
16 | import com.redspr.redquerybuilder.core.client.engine.Session;
17 | import com.redspr.redquerybuilder.core.shared.meta.Column;
18 |
19 | public class GwtTestSuggestEditorWidget extends AbstractTest {
20 |
21 | @Test
22 | public void testDirtyKeepsValue() throws Exception {
23 | Session sess = getSession();
24 |
25 | Column col = sess.getDatabase().getMainSchema()
26 | .findTableOrView("PERSON").getColumn("county");
27 |
28 | final SuggestEditorWidget sew = new SuggestEditorWidget(sess, col);
29 |
30 | final List events = new ArrayList();
31 | sew.addValueChangeHandler(new ValueChangeHandler() {
32 | @Override
33 | public void onValueChange(ValueChangeEvent event) {
34 | events.add(event.getValue());
35 | }
36 | });
37 |
38 | RootPanel.get().add(sew);
39 |
40 | Element elmt = sew.getElement();
41 |
42 | elmt.setAttribute("value", "A");
43 | elmt.dispatchEvent(Document.get().createKeyUpEvent(false, false, false, false, 'C'));
44 |
45 | //System.out.println("X=" + box.getElement().getParentElement().getInnerHTML());
46 | List elmts = find(elmt.getParentElement(), "item");
47 | assertEquals(3, elmts.size());
48 | elmts.get(0).dispatchEvent(Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false));
49 |
50 | this.delayTestFinish(10000);
51 | Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
52 | @Override
53 | public boolean execute() {
54 | assertEquals(1, events.size());
55 | finishTest();
56 | return false;
57 | }
58 | }, 100);
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/redquerybuilder-core/src/test/java/com/redspr/redquerybuilder/core/client/expression/GwtTestTextEditor.java:
--------------------------------------------------------------------------------
1 | package com.redspr.redquerybuilder.core.client.expression;
2 |
3 | import com.redspr.redquerybuilder.core.shared.meta.Editor;
4 |
5 | public class GwtTestTextEditor extends AbstractEditorTest {
6 |
7 | @Override
8 | protected Editor getEditor() {
9 | return new Editor.TextEditor();
10 | }
11 |
12 | @Override
13 | protected String getEmptyValue() {
14 | return "";
15 | }
16 |
17 | @Override
18 | protected String getExample1() {
19 | return "Flomble";
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/README.txt:
--------------------------------------------------------------------------------
1 | Codeview is a template for JSDoc Toolkit. With JSDoc Toolkit you can generate a documentation website.
2 |
3 | The Codeview template is, like JSDoc Toolkit itself, published under the X11/MIT License.
4 |
5 | Codeview is Copyright (c) 2010 Wouter Bos (www.thebrightlines.com)
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/allclasses.tmpl:
--------------------------------------------------------------------------------
1 | {! Link.base = ""; /* all generated links will be relative to this */ !}
2 | {+subtemplate("subtemplates/head.tmpl", {subtitle: "Class Index"})+}
3 | {+subtemplate("subtemplates/menu.tmpl")+}
4 |
5 |
6 |
7 | Class Index
8 |
9 |
10 |
11 | -
12 |
{+(new Link().toSymbol(thisClass.alias))+}
13 | {+resolveLinks(summarize(thisClass.classDesc))+}
14 |
15 |
16 |
17 |
18 |
19 |
20 | {+subtemplate("subtemplates/foot.tmpl")+}
21 |
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/allfiles.tmpl:
--------------------------------------------------------------------------------
1 | {! Link.base = ""; /* all generated links will be relative to this */ !}
2 | {+subtemplate("subtemplates/head.tmpl", {subtitle: "File Index"})+}
3 | {+subtemplate("subtemplates/menu.tmpl")+}
4 |
5 |
6 |
7 | File Index
8 |
9 |
10 |
11 | -
12 |
{+new Link().toSrc(item.alias).withText(item.name)+}
13 |
14 | {+resolveLinks(item.desc)+}
15 |
16 |
17 |
18 | - Author:
19 | - {+item.author+}
20 |
21 |
22 |
23 | - Version:
24 | - {+item.version+}
25 |
26 |
27 | {! var locations = item.comment.getTag('location').map(function($){return $.toString().replace(/(^\$ ?| ?\$$)/g, '').replace(/^HeadURL: https:/g, 'http:');}) !}
28 |
29 | - Location:
30 |
31 | - {+location+}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | {+subtemplate("subtemplates/foot.tmpl")+}
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/css/fonts/mplus-1m-bold-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/salk31/RedQueryBuilder/0921bb0f008d1a259e39d503e507499792a56224/redquerybuilder-dist/codeview/css/fonts/mplus-1m-bold-webfont.eot
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/css/fonts/mplus-1m-bold-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/salk31/RedQueryBuilder/0921bb0f008d1a259e39d503e507499792a56224/redquerybuilder-dist/codeview/css/fonts/mplus-1m-bold-webfont.ttf
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/css/fonts/mplus-1m-bold-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/salk31/RedQueryBuilder/0921bb0f008d1a259e39d503e507499792a56224/redquerybuilder-dist/codeview/css/fonts/mplus-1m-bold-webfont.woff
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/css/fonts/mplus-1m-regular-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/salk31/RedQueryBuilder/0921bb0f008d1a259e39d503e507499792a56224/redquerybuilder-dist/codeview/css/fonts/mplus-1m-regular-webfont.eot
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/css/fonts/mplus-1m-regular-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/salk31/RedQueryBuilder/0921bb0f008d1a259e39d503e507499792a56224/redquerybuilder-dist/codeview/css/fonts/mplus-1m-regular-webfont.ttf
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/css/fonts/mplus-1m-regular-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/salk31/RedQueryBuilder/0921bb0f008d1a259e39d503e507499792a56224/redquerybuilder-dist/codeview/css/fonts/mplus-1m-regular-webfont.woff
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/css/handheld.css:
--------------------------------------------------------------------------------
1 | /*
2 | * TABLE OF CONTENTS:
3 | * - Browser reset
4 | * - HTML elements
5 | * - JsDoc styling
6 | * - Media query check
7 | */
8 |
9 |
10 |
11 |
12 |
13 |
14 | /*
15 | * HTML ELEMENTS
16 | */
17 |
18 | body {
19 | padding: 1% 4% 1% 4%;
20 | }
21 |
22 | /*
23 | * HTML ELEMENTS
24 | */
25 |
26 |
27 |
28 |
29 |
30 | /*
31 | * BEGIN JSDOC
32 | */
33 |
34 | /* Start menu */
35 | div.index div.menu {
36 | position: fixed;
37 | top: 0;
38 | right: 0;
39 | -moz-border-radius-bottomleft: 15px;
40 | -webkit-border-bottom-left-radius: 15px;
41 | -border-bottom-left-radius: 15px;
42 | padding: 4px 5px 8px 10px;
43 | -moz-box-shadow: 0px 0px 10px #c4c4c4;
44 | -webkit-box-shadow: 0px 0px 10px #c4c4c4;
45 | box-shadow: 0px 0px 10px #c4c4c4;
46 | background-color: rgba(255, 255, 255, 0.9);
47 | }
48 |
49 | div.index input.classFilter {
50 | display: none;
51 | }
52 |
53 | div.index div.indexLinks a {
54 | float: right;
55 | clear: both;
56 | font-size: 1.1em;
57 | }
58 |
59 | div.index *.heading1 {
60 | display:none;
61 | }
62 |
63 | div.index ul.classList {
64 | display:none;
65 | }
66 |
67 | div.index div.fineprint {
68 | display:none;
69 | }
70 |
71 | div.indexStatic {
72 | display: none;
73 | }
74 | /* End menu */
75 |
76 |
77 |
78 | /* Start content */
79 | div.content *.classTitle {
80 | margin-right: 60px;
81 | margin-bottom: 15px;
82 | }
83 |
84 | div.content div.intro {
85 | margin: 15px 0 35px;
86 | }
87 |
88 | div.content p.description.summary {
89 | margin-bottom: 0.2em;
90 | }
91 |
92 | div.content div.props {
93 | margin: 1.5em -2% 0 -2%;
94 | padding: 2%;
95 | }
96 |
97 | table.summaryTable {
98 | position: relative;
99 | left: -10px;
100 | width: 100%;
101 | border-collapse: collapse;
102 | box-sizing: content-box;
103 | -moz-box-sizing: content-box;
104 | -webkit-box-sizing: content-box;
105 | -ms-box-sizing: content-box;
106 | -o-box-sizing: content-box;
107 | -icab-box-sizing: content-box;
108 | -khtml-box-sizing: content-box;
109 | }
110 |
111 | *.sectionTitle {
112 | padding: 0 10px 10px 0;
113 | }
114 | caption.sectionTitle {
115 | padding-left: 10px;
116 | }
117 |
118 | table.summaryTable td,
119 | table.summaryTable th {
120 | padding: 0px 10px 10px 10px;
121 | }
122 | table.summaryTable tr:last-child td {
123 | padding-bottom: 0;
124 | }
125 |
126 | table.summaryTable td.attributes {
127 | width: 35%;
128 | }
129 |
130 | table.summaryTable td.nameDescription {
131 | width: 65%
132 | }
133 |
134 |
135 |
136 | dl.detailList {
137 | margin-top: 0.5em;
138 | }
139 |
140 | dl.detailList.nomargin + dl.detailList.nomargin {
141 | margin-top: 0;
142 | }
143 |
144 | dl.detailList dt {
145 | display: inline;
146 | margin-right: 5px;
147 | }
148 |
149 | dl.detailList dt:before {
150 | display: block;
151 | content: "";
152 | }
153 |
154 | dl.detailList dd {
155 | display: inline;
156 | }
157 |
158 | dl.detailList.params dt {
159 | display: block;
160 | }
161 | dl.detailList.params dd {
162 | display: block;
163 | padding-left: 2em;
164 | padding-bottom: 0.4em;
165 | }
166 |
167 |
168 |
169 |
170 | ul.fileList li {
171 | margin-bottom: 1.5em;
172 | }
173 |
174 |
175 |
176 | .fixedFont.heading {
177 | margin-bottom: 0.5em;
178 | }
179 |
180 | pre.code {
181 | margin: 10px 0 10px 0;
182 | padding: 10px;
183 | border: 1px solid #ccc;
184 | -moz-border-radius: 2px;
185 | -webkit-border-radius: 2px;
186 | border-radius: 2px;
187 | }
188 | /* End content */
189 |
190 | /*
191 | * END JSDOC
192 | */
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 | /*
201 | * START MEDIA QUERY CHECK
202 | */
203 |
204 | .cssLoadCheck {
205 | position: absolute;
206 | top: -99999px;
207 | left: -99999px;
208 | border: 0;
209 | width: 100px;
210 | padding: 0;
211 | overflow: hidden;
212 | }
213 |
214 | /*
215 | * END MEDIA QUERY CHECK
216 | */
217 |
218 |
--------------------------------------------------------------------------------
/redquerybuilder-dist/codeview/javascript/html5.js:
--------------------------------------------------------------------------------
1 | // html5shiv MIT @rem remysharp.com/html5-enabling-script
2 | // iepp v1.6.2 MIT @jon_neal iecss.com/print-protector
3 | /*@cc_on(function(m,c){var z="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video";function n(d){for(var a=-1;++ai";if(g.childNodes.length!==1){var i=z.split("|"),o=i.length,s=RegExp("(^|\\s)("+z+")",
4 | "gi"),t=RegExp("<(/*)("+z+")","gi"),u=RegExp("(^|[^\\n]*?\\s)("+z+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),r=c.createDocumentFragment(),k=c.documentElement;g=k.firstChild;var h=c.createElement("body"),l=c.createElement("style"),f;n(c);n(r);g.insertBefore(l,
5 | g.firstChild);l.media="print";m.attachEvent("onbeforeprint",function(){var d=-1,a=p(c.styleSheets,"all"),e=[],b;for(f=f||c.body;(b=u.exec(a))!=null;)e.push((b[1]+b[2]+b[3]).replace(s,"$1.iepp_$2")+b[4]);for(l.styleSheet.cssText=e.join("\n");++d
2 | wbos.CssTools.MediaQueryFallBack.LoadCss('{+Link.base+}css/screen.css', '{+Link.base+}css/handheld.css', 660)
3 | codeview.classFilter.Init()
4 |
5 |