Package org.geomajas.gwt.client.widget.attribute

Source Code of org.geomajas.gwt.client.widget.attribute.GwtTestDefaultAttributeFormFactory$AttributeInfoPair

/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2011 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/

package org.geomajas.gwt.client.widget.attribute;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.geomajas.configuration.AttributeInfo;
import org.geomajas.configuration.PrimitiveAttributeInfo;
import org.geomajas.configuration.PrimitiveType;
import org.geomajas.layer.feature.Attribute;
import org.geomajas.layer.feature.attribute.BooleanAttribute;
import org.geomajas.layer.feature.attribute.CurrencyAttribute;
import org.geomajas.layer.feature.attribute.DateAttribute;
import org.geomajas.layer.feature.attribute.DoubleAttribute;
import org.geomajas.layer.feature.attribute.FloatAttribute;
import org.geomajas.layer.feature.attribute.ImageUrlAttribute;
import org.geomajas.layer.feature.attribute.IntegerAttribute;
import org.geomajas.layer.feature.attribute.LongAttribute;
import org.geomajas.layer.feature.attribute.PrimitiveAttribute;
import org.geomajas.layer.feature.attribute.ShortAttribute;
import org.geomajas.layer.feature.attribute.StringAttribute;
import org.geomajas.layer.feature.attribute.UrlAttribute;

import com.google.gwt.junit.client.GWTTestCase;

public class GwtTestDefaultAttributeFormFactory extends GWTTestCase {

  FeatureFormFactory factory;

  List<AttributeInfoPair> pairs;

  public String getModuleName() {
    return "org.geomajas.gwt.GeomajasClientTest";
  }

  @Override
  protected void gwtSetUp() throws Exception {
    factory = new DefaultFeatureFormFactory();
    pairs = new ArrayList<AttributeInfoPair>();
    pairs.add(new AttributeInfoPair("name1", "label1", (short) 123));
    pairs.add(new AttributeInfoPair("name2", "label2", (int) 123456));
    pairs.add(new AttributeInfoPair("name3", "label3", (long) 123456789));
    pairs.add(new AttributeInfoPair("name4", "label4", (float) 123.456578));
    pairs.add(new AttributeInfoPair("name5", "label5", (double) 456.7890));
    pairs.add(new AttributeInfoPair("name6", "label6", "someString", PrimitiveType.STRING));
    pairs.add(new AttributeInfoPair("name7", "label7", "http://some.domain.com/", PrimitiveType.URL));
    pairs.add(new AttributeInfoPair("name8", "label8", "30.14", PrimitiveType.CURRENCY));
    pairs.add(new AttributeInfoPair("name9", "label9", "http://some.domain.com/image.png", PrimitiveType.IMGURL));
    // This one fails, to deep in the javascript ?
    // pairs.add(new AttributeInfoPair("name10", "label10", new Date("01/01/2009")));
  }

  public void testCreateForm() {
    factory.createFeatureForm(null);
   
//    EditableAttributeForm form = factory.createEditableForm(asInfos(pairs));
//    Assert.assertNotNull(form);
//    Assert.assertNotNull(form.getWidget());
  }

  public void testFromTo() {
//    EditableAttributeForm form = factory.createEditableForm(asInfos(pairs));
//    for (AttributeInfoPair pair : pairs) {
//      pair.testFromTo(form);
//    }
  }

  private List<AttributeInfo> asInfos(List<AttributeInfoPair> pairs) {
    List<AttributeInfo> infos = new ArrayList<AttributeInfo>();
    for (AttributeInfoPair pair : pairs) {
      infos.add(pair.getInfo());
    }
    return infos;
  }

  static class AttributeInfoPair {

    private Attribute attribute;

    private AttributeInfo info;

    AttributeInfoPair(String name, String label, short value) {
      this.attribute = new ShortAttribute(value);
      this.info = new PrimitiveAttributeInfo(name, label, PrimitiveType.SHORT);
    }

    AttributeInfoPair(String name, String label, int value) {
      this.attribute = new IntegerAttribute(value);
      this.info = new PrimitiveAttributeInfo(name, label, PrimitiveType.INTEGER);
    }

    AttributeInfoPair(String name, String label, long value) {
      this.attribute = new LongAttribute(value);
      this.info = new PrimitiveAttributeInfo(name, label, PrimitiveType.LONG);
    }

    AttributeInfoPair(String name, String label, float value) {
      this.attribute = new FloatAttribute(value);
      this.info = new PrimitiveAttributeInfo(name, label, PrimitiveType.FLOAT);
    }

    AttributeInfoPair(String name, String label, double value) {
      this.attribute = new DoubleAttribute(value);
      this.info = new PrimitiveAttributeInfo(name, label, PrimitiveType.DOUBLE);
    }

    AttributeInfoPair(String name, String label, String value, PrimitiveType type) {
      switch (type) {
        case CURRENCY:
          attribute = new CurrencyAttribute(value);
          break;
        case STRING:
          attribute = new StringAttribute(value);
          break;
        case URL:
          attribute = new UrlAttribute(value);
          break;
        case IMGURL:
          attribute = new ImageUrlAttribute(value);
          break;
      }
      this.attribute = new StringAttribute(value);
      this.info = new PrimitiveAttributeInfo(name, label, type);
    }

    AttributeInfoPair(String name, String label, Date value) {
      this.attribute = new DateAttribute(value);
      this.info = new PrimitiveAttributeInfo(name, label, PrimitiveType.DATE);
    }

//    void testFromTo(EditableAttributeForm form) {
//      form.toForm(info.getName(), attribute);
//      Attribute copy = newAttribute();
//      form.fromForm(info.getName(), copy);
//      if (attribute instanceof PrimitiveAttribute<?>) {
//        PrimitiveAttribute<?> p = (PrimitiveAttribute<?>) attribute;
//        switch (p.getType()) {
//          case BOOLEAN:
//          case SHORT:
//          case INTEGER:
//          case LONG:
//          case CURRENCY:
//          case STRING:
//          case DATE:
//          case URL:
//          case IMGURL:
//            Assert.assertEquals(getAttributeValue(attribute), getAttributeValue(copy));
//            break;
//          case FLOAT:
//            Assert.assertEquals((Float) getAttributeValue(attribute), (Float) getAttributeValue(copy),
//                0.0001);
//            break;
//          case DOUBLE:
//            // Only checked to float precision !!!!
//            Assert.assertEquals((Double) getAttributeValue(attribute), (Double) getAttributeValue(copy),
//                0.0001);
//            break;
//        }
//      }
//    }

    Object getAttributeValue(Attribute attribute) {
      if (attribute instanceof PrimitiveAttribute<?>) {
        PrimitiveAttribute<?> p = (PrimitiveAttribute<?>) attribute;
        switch (p.getType()) {
          case BOOLEAN:
            return ((BooleanAttribute) p).getValue();
          case SHORT:
            return ((ShortAttribute) p).getValue();
          case INTEGER:
            return ((IntegerAttribute) p).getValue();
          case LONG:
            return ((LongAttribute) p).getValue();
          case FLOAT:
            return ((FloatAttribute) p).getValue();
          case DOUBLE:
            return ((DoubleAttribute) p).getValue();
          case CURRENCY:
            return ((CurrencyAttribute) p).getValue();
          case STRING:
            return ((StringAttribute) p).getValue();
          case DATE:
            return ((DateAttribute) p).getValue();
          case URL:
            return ((UrlAttribute) p).getValue();
          case IMGURL:
            return ((ImageUrlAttribute) p).getValue();
        }
        throw new IllegalArgumentException("Unknown primitive in test");
      } else {
        throw new IllegalArgumentException("Non primitives not supported by test");
      }
    }

    Attribute newAttribute() {
      if (attribute instanceof PrimitiveAttribute<?>) {
        PrimitiveAttribute<?> p = (PrimitiveAttribute<?>) attribute;
        switch (p.getType()) {
          case BOOLEAN:
            return new BooleanAttribute();
          case SHORT:
            return new ShortAttribute();
          case INTEGER:
            return new IntegerAttribute();
          case LONG:
            return new LongAttribute();
          case FLOAT:
            return new FloatAttribute();
          case DOUBLE:
            return new DoubleAttribute();
          case CURRENCY:
            return new CurrencyAttribute();
          case STRING:
            return new StringAttribute();
          case DATE:
            return new DateAttribute();
          case URL:
            return new UrlAttribute();
          case IMGURL:
            return new ImageUrlAttribute();
        }
        throw new IllegalArgumentException("Unknown primtive in test");
      } else {
        throw new IllegalArgumentException("Non primitives not supported by test");
      }
    }

    public Attribute getAttribute() {
      return attribute;
    }

    public AttributeInfo getInfo() {
      return info;
    }
  }
}
TOP

Related Classes of org.geomajas.gwt.client.widget.attribute.GwtTestDefaultAttributeFormFactory$AttributeInfoPair

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.