package com.smartgwt.sample.showcase.client.dataintegration.java.serversummaries; import java.util.HashMap; import java.util.Map; import com.smartgwt.client.data.AdvancedCriteria; import com.smartgwt.client.data.Criterion; import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.OperatorId; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.FilterBuilder; import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.grid.HeaderSpan; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.layout.VStack; import com.google.gwt.core.client.EntryPoint; public class AggregationCustomSQLSample implements EntryPoint { @Override public void onModuleLoad() { final DynamicForm operationForm = new DynamicForm(); operationForm.setWidth(550); SelectItem operationId = new SelectItem(); operationId.setTitle("Filter"); operationId.setName("operationId"); operationId.setWidth("100%"); operationId.setDefaultToFirstOption(true); Map
valueMap = new HashMap
(); valueMap.put("orderAmount", "Exclude entire orders with total value greater than"); valueMap.put("itemAmount", "Exclude individual items within an order with value greater than"); operationId.setValueMap(valueMap); operationForm.setFields(operationId); DataSource ds = DataSource.get("aggregationCustomSQL_orderItem"); final FilterBuilder advancedFilter = new FilterBuilder(); advancedFilter.setDataSource(ds); AdvancedCriteria adCriteria = new AdvancedCriteria(OperatorId.AND, new Criterion[]{ new Criterion("amount", OperatorId.GREATER_THAN, 30), new Criterion("quantity", OperatorId.GREATER_THAN, 3) }); advancedFilter.setCriteria(adCriteria); final ListGrid orderList = new ListGrid(); orderList.setDataSource(ds); orderList.setWidth(550); orderList.setHeight(300); orderList.setShowFilterEditor(false); orderList.setAutoFetchData(false); orderList.setCanEdit(false); orderList.setCanRemoveRecords(false); ListGridField orderCustomerName = new ListGridField("orderCustomerName"); orderCustomerName.setTitle("Customer name"); ListGridField itemDescription = new ListGridField("itemDescription"); ListGridField amount = new ListGridField("amount"); amount.setType(ListGridFieldType.FLOAT); ListGridField quantity = new ListGridField("quantity"); quantity.setType(ListGridFieldType.INTEGER); orderList.setFields(orderCustomerName,itemDescription,amount,quantity); orderList.setHeaderSpans(new HeaderSpan[] { new HeaderSpan("Items", new String[] {"itemCount", "items"}) }); IButton filterButton = new IButton(); filterButton.setTitle("Filter"); filterButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { orderList.setData(new ListGridRecord[0]); DSRequest dsProperties = new DSRequest(); dsProperties.setOperationId(operationForm.getValueAsString("operationId")); orderList.fetchData(advancedFilter.getCriteria(), null, dsProperties); } }); VStack vStack = new VStack(); vStack.setWidth100(); vStack.setMembersMargin(10); vStack.setMembers(operationForm, advancedFilter, filterButton, orderList); DSRequest dsProperties = new DSRequest(); dsProperties.setOperationId(operationForm.getValueAsString("operationId")); orderList.fetchData(advancedFilter.getCriteria(), null, dsProperties); vStack.draw(); } }