Package com.redspr.redquerybuilder.core.client

Source Code of com.redspr.redquerybuilder.core.client.AbstractTest

package com.redspr.redquerybuilder.core.client;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.junit.Ignore;

import com.google.gwt.dom.client.Element;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle.MultiWordSuggestion;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SuggestOracle.Response;
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
import com.google.gwt.user.client.ui.Widget;
import com.redspr.redquerybuilder.core.client.conf.IdentifierEscaper;
import com.redspr.redquerybuilder.core.client.engine.Session;
import com.redspr.redquerybuilder.core.client.table.TableFilter;
import com.redspr.redquerybuilder.core.shared.meta.Cardinality;
import com.redspr.redquerybuilder.core.shared.meta.Column;
import com.redspr.redquerybuilder.core.shared.meta.ConstraintReferential;
import com.redspr.redquerybuilder.core.shared.meta.Database;
import com.redspr.redquerybuilder.core.shared.meta.Editor;
import com.redspr.redquerybuilder.core.shared.meta.EnumerateRequest;
import com.redspr.redquerybuilder.core.shared.meta.Operator;
import com.redspr.redquerybuilder.core.shared.meta.Schema;
import com.redspr.redquerybuilder.core.shared.meta.SuggestEditor;
import com.redspr.redquerybuilder.core.shared.meta.SuggestRequest;
import com.redspr.redquerybuilder.core.shared.meta.Table;
import com.redspr.redquerybuilder.core.shared.meta.Type;

@Ignore
public class AbstractTest extends GWTTestCase {

    @Override
    public void gwtSetUp() {
        TableFilter.resetAlias();
        RootPanel.get().clear();
    }

    protected void assertEquals(String html, Widget w) {
        assertEquals(html, w.getElement());
    }

    protected void assertEquals(String html, Element elmt) {
        assertEquals(html.replace('\'', '"'), elmt.getInnerHTML());
    }


    protected Session getSession() {
        return createSession(null);
    }

    protected Session createSession(Configuration config) {
        Schema schema = new Schema();
        Database database = new Database(schema);

        Type stringType = new Type("VARCHAR");
        stringType.setOperators(new Operator[] {
                new Operator("="),
                new Operator("IS NULL", Cardinality.ZERO),
                new Operator("LIKE"), new Operator("CUSTOM_OP") });

        // XXX IN done better as hint or style?
        Type refType = new Type("REFS");
        refType.setEditor(new Editor.SelectEditor());
        refType.setOperators(new Operator[]{
                new Operator("IN", Cardinality.MULTI),
                new Operator("NOT IN", Cardinality.MULTI)});

        Type suggestType = new Type("SUGGEST");
        suggestType.setEditor(new SuggestEditor());
        suggestType.setOperators(new Operator[]{new Operator("=")});

        Type singleRefType = new Type("REF");
        singleRefType.setEditor(new Editor.SelectEditor());
        singleRefType.setOperators(new Operator[] {
                new Operator("="),
                new Operator("IS NULL", Cardinality.ZERO),
                new Operator("CUSTOM_OP", Cardinality.ONE)});

        Type dateType = new Type("DATE");
        dateType.setEditor(new Editor.DateEditor());
        Type[] types = new Type[]{stringType, dateType, refType, singleRefType};
        database.setTypes(types);

        Table person = new Table("PERSON"); // XXX want case sensitivity?
        Column personId = new Column("id", stringType);
        person.add(personId);
        person.add(new Column("sex", singleRefType));
        person.add(new Column("owner", stringType));
        person.add(new Column("category", refType));
        person.add(new Column("category2", refType));
        person.add(new Column("county", suggestType));
        schema.add(person);

        {
            Table log = new Table("Log");
            log.add(new Column("id", stringType));
            log.add(new Column("date", dateType));
            Column pc = new Column("parent", stringType);
            ConstraintReferential fk = new ConstraintReferential("parentfk",
                    log);
            fk.setRefTable(person);
            fk.setColumns(new Column[] {pc });
            fk.setRefColumns(new Column[] {personId });
            log.add(fk);
            log.add(pc);

            schema.add(log);
        }

        {
            Table order = new Table("Order");
            order.add(new Column("date", dateType));
            Column pc = new Column("parent", stringType);
            ConstraintReferential fk = new ConstraintReferential("orderparentfk",
                    order);
            fk.setRefTable(person);
            fk.setColumns(new Column[] {pc });
            fk.setRefColumns(new Column[] {personId });
            order.add(fk);
            order.add(pc);

            schema.add(order);
        }

        if (config == null) {
            config = createSimpleConfig();
        }

        config.setDatabase(database);

        Session session = new Session(config);

        session.setIdentifierEscaper(new IdentifierEscaper() {
           @Override
        public String quote(String id) {
               return id;
           }
        });



        return session;
    }

    private Configuration createSimpleConfig() {
        Configuration config = new Configuration() {
            @Override
            public void fireEnumerate(EnumerateRequest request, AsyncCallback<Response> callback) {
                Collection<Suggestion> s = new ArrayList<Suggestion>();
                if ("category".equals(request.getColumnName())) {
                    s.add(new MultiWordSuggestion("A", "A"));
                    s.add(new MultiWordSuggestion("B", "B"));
                    s.add(new MultiWordSuggestion("C", "C"));
                } else if ("category2".equals(request.getColumnName())) {
                    s.add(new MultiWordSuggestion("X", "X"));
                    s.add(new MultiWordSuggestion("Y", "Y"));
                    s.add(new MultiWordSuggestion("Z", "Z"));
                } else {
                    s.add(new MultiWordSuggestion("M", "M"));
                    s.add(new MultiWordSuggestion("F", "F"));
                }
                callback.onSuccess(new Response(s));
            }

            @Override
            public void fireSuggest(SuggestRequest request,
                    AsyncCallback<Response> callback) {
                Collection<Suggestion> s = new ArrayList<Suggestion>();

                s.add(new MultiWordSuggestion("Lancashire", "Lancashire"));
                s.add(new MultiWordSuggestion("Bedfordshire", "Bedfordshire"));
                s.add(new MultiWordSuggestion("Oxfordshire", "Oxfordshire"));
                callback.onSuccess(new Response(s));
            }
        };
        return config;
    }

    protected List<Element> find(Element elmt, String n) {
        List<Element> x = new ArrayList<Element>();
        find(elmt, n, x);
        return x;
    }


    private void find(Element elmt, String n, List<Element> list) {
        String[] cn = elmt.getClassName().split(" ");
        for (String n2 : cn) {
        if (n2.equals(n)) {
            list.add(elmt);
        }
        }
        Element s = elmt.getNextSiblingElement();
        if (s != null) {
            find(s, n, list);
        }
        Element c = elmt.getFirstChildElement();
        if (c != null) {
            find(c, n, list);
        }

    }

    @Override
    public String getModuleName() {
        return "com.redspr.redquerybuilder.core.RedQueryBuilderCore";
    }
}
TOP

Related Classes of com.redspr.redquerybuilder.core.client.AbstractTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.