Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Data filtering

    I've attached SelectItem to a datasource in order to have some filtered data with completely no success.
    The backing dao service is never called.

    Even if called it is not clear how I would "translate" from the DSRequest carried Criteria to the JPA query sintax.

    Code:
    import com.google.gwt.core.client.EntryPoint;
    import com.smartgwt.client.core.KeyIdentifier;
    import com.smartgwt.client.data.Criteria;
    import com.smartgwt.client.data.DataSource;
    import com.smartgwt.client.types.ListGridEditEvent;
    import com.smartgwt.client.types.VisibilityMode;
    import com.smartgwt.client.util.KeyCallback;
    import com.smartgwt.client.util.Page;
    import com.smartgwt.client.util.SC;
    import com.smartgwt.client.widgets.IButton;
    import com.smartgwt.client.widgets.Label;
    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.fields.SelectItem;
    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.grid.events.SelectionChangedHandler;
    import com.smartgwt.client.widgets.layout.SectionStack;
    import com.smartgwt.client.widgets.layout.SectionStackSection;
    import com.smartgwt.client.widgets.layout.VLayout;
    
    public class OrderManagement implements EntryPoint {
    
    	private static final int MAXWIDTH = 1024 - 80;
    	private SelectItem shipTo = new SelectItem("MyShipTo");
    
    	/**
    	 * Creates a new instance of JPADS
    	 */
    	public OrderManagement() {
    	}
    
    	/**
    	 * The entry point method, called automatically by loading a module that
    	 * declares an implementing class as an entry-point
    	 */
    	public void onModuleLoad() {
    
    		KeyIdentifier debugKey = new KeyIdentifier();
    		debugKey.setCtrlKey(true);
    		debugKey.setKeyName("D");
    
    		Page.registerKey(debugKey, new KeyCallback() {
    			public void execute(String keyName) {
    				SC.showConsole();
    			}
    		});
    
    		Label orderListLabel = new Label();
    		orderListLabel.setContents("Order List");
    		orderListLabel.setWidth("90%");
    
    		final DataSource orderDS = DataSource.get("order_DataSource");
    
    		ListGrid orderList = new ListGrid();
    		orderList.setDataSource(orderDS);
    		orderList.setWidth(MAXWIDTH);
    		orderList.setHeight(150);
    		orderList.setAlternateRecordStyles(true);
    		orderList.setAutoFetchData(true);
    		orderList.setDataPageSize(50);
    		orderList.setCanRemoveRecords(true);
    
    		IButton newOrderButton = new IButton("Add New Order");
    		newOrderButton.setWidth(120);
    
    		VLayout orderListLayout = new VLayout();
    		orderListLayout.addMember(orderListLabel);
    		orderListLayout.addMember(orderList);
    		orderListLayout.addMember(newOrderButton);
    
    		final SectionStack sectionStack = new SectionStack();
    		sectionStack.setVisibilityMode(VisibilityMode.MULTIPLE);
    		sectionStack.setWidth(MAXWIDTH);
    		sectionStack.setHeight(1280 - 80);
    
    		SectionStackSection section1 = new SectionStackSection("Order Header");
    		section1.setExpanded(true);
    		section1.setResizeable(true);
    
    		// final DynamicForm orderForm = new DynamicForm();
    		// orderForm.setDataSource(orderDS);
    
    		final DynamicForm orderForm = new DynamicForm();
    		orderForm.setDataSource(orderDS);
    		shipTo.setOptionDataSource(DataSource.get("stakeholder_DataSource"));
    		shipTo.setPickListCriteria(new Criteria("schema", "SHIPTO"));
    		shipTo.setAutoFetchData(true);
    
    		orderForm.setItems(shipTo);
    
    		section1.addItem(orderForm);
    
    		sectionStack.addSection(section1);
    		sectionStack.collapseSection(0);
    
    		// lista prodotti
    		SectionStackSection section2 = new SectionStackSection("Product Search");
    		section2.setExpanded(true);
    		section2.setResizeable(true);
    
    		final DataSource productDS = DataSource.get("product_DataSource");
    
    		final ListGrid productGrid = new ListGrid();
    		productGrid.setAlternateRecordStyles(true);
    		productGrid.setDataSource(productDS);
    		productGrid.setWidth(MAXWIDTH);
    		productGrid.setHeight(150);
    		productGrid.setAlternateRecordStyles(true);
    		productGrid.setAutoFetchData(true);
    		productGrid.setDataPageSize(50);
    		productGrid.setShowFilterEditor(true);
    
    		section2.addItem(productGrid);
    		/*
    		 * section2.addItem(newProductButton);
    		 * section2.addItem(saveProductButton);
    		 */
    		sectionStack.addSection(section2);
    
    		// lista stakeholder
    		SectionStackSection section3 = new SectionStackSection("StakeHolder");
    		section3.setExpanded(false);
    		section3.setResizeable(true);
    
    		final DataSource stakeholderDS = DataSource.get("stakeholder_DataSource");
    
    		final ListGrid stakeholderGrid = new ListGrid();
    		stakeholderGrid.setAlternateRecordStyles(true);
    		stakeholderGrid.setDataSource(stakeholderDS);
    		stakeholderGrid.setWidth(MAXWIDTH);
    		stakeholderGrid.setHeight(150);
    		stakeholderGrid.setAlternateRecordStyles(true);
    		stakeholderGrid.setAutoFetchData(true);
    		stakeholderGrid.setDataPageSize(50);
    		stakeholderGrid.setShowFilterEditor(true);
    		stakeholderGrid.setCanEdit(true);
    		stakeholderGrid.setEditEvent(ListGridEditEvent.CLICK);
    		stakeholderGrid.setCanRemoveRecords(true);
    		ListGridField addressSH = new ListGridField("address", "address");
    		ListGridField citySH = new ListGridField("city", "city");
    		ListGridField countrySH = new ListGridField("country", "country");
    		ListGridField descriptionSH = new ListGridField("description", "description");
    		ListGridField idTransmitterSH = new ListGridField("idTransmitter", "idTransmitter");
    		ListGridField nameSH = new ListGridField("name", "name");
    		ListGridField schemaSH = new ListGridField("schema", "schema");
    		ListGridField companySH = new ListGridField("company", "company");
    		ListGridField creditTermsCodeSH = new ListGridField("creditTermsCode", "creditTermsCode");
    		ListGridField truckRequirementsSH = new ListGridField("truckRequirements", "truckRequirements");
    		ListGridField divisionSH = new ListGridField("division", "division");
    		ListGridField paymentFormSH = new ListGridField("paymentForm", "paymentForm");
    		ListGridField districtSH = new ListGridField("district", "district");
    		stakeholderGrid.setFields(descriptionSH, nameSH, countrySH, citySH, addressSH, idTransmitterSH, schemaSH, companySH,
    				creditTermsCodeSH, truckRequirementsSH, divisionSH, paymentFormSH, districtSH);
    
    		IButton newStakeholderGridButton = new IButton("New Stakeholder");
    		newStakeholderGridButton.addClickHandler(new ClickHandler() {
    			@Override
    			public void onClick(ClickEvent event) {
    				stakeholderGrid.startEditingNew();
    				// stakeholderGrid.setEditValue(0, "version", 1);
    				stakeholderGrid.setEditValue(0, "schema", "SHIPTO");
    				stakeholderGrid.setEditValue(0, "company", "100");
    				stakeholderGrid.setEditValue(0, "creditTermsCode", "1");
    				stakeholderGrid.setEditValue(0, "truckRequirements", "1");
    				stakeholderGrid.setEditValue(0, "division", "12");
    				stakeholderGrid.setEditValue(0, "paymentForm", "1");
    				stakeholderGrid.setEditValue(0, "district", "1");
    			}
    		});
    
    		IButton saveStakeholderButton = new IButton("Save Stakeholder");
    		saveStakeholderButton.addClickHandler(new ClickHandler() {
    			public void onClick(ClickEvent event) {
    				// SC.warn("number of orderLines to save:" +
    				// orderLineList.getRecords().length);
    				stakeholderGrid.saveAllEdits();
    			}
    		});
    
    		section3.addItem(stakeholderGrid);
    		section3.addItem(newStakeholderGridButton);
    		section3.addItem(saveStakeholderButton);
    		sectionStack.addSection(section3);
    
    		SectionStackSection section4 = new SectionStackSection("Order Lines");
    		section4.setExpanded(true);
    		section4.setResizeable(true);
    
    		final DataSource orderLineDS = DataSource.get("orderLine_DataSource");
    
    		final ListGrid orderLineList = new ListGrid();
    		orderLineList.setDataSource(orderLineDS);
    		orderLineList.setWidth(MAXWIDTH);
    		orderLineList.setHeight(224);
    		orderLineList.setAlternateRecordStyles(true);
    		orderLineList.setSaveLocally(true);
    		orderLineList.setSaveByCell(true);
    		orderLineList.setShowFilterEditor(true);
    		orderLineList.setCanEdit(true);
    		orderLineList.setEditEvent(ListGridEditEvent.CLICK);
    		orderLineList.setCanRemoveRecords(true);
    		ListGridField quantity = new ListGridField("quantity", "Quantity");
    		ListGridField unitPrice = new ListGridField("unitPrice", "Unit Price");
    		unitPrice.setCanEdit(false);
    		ListGridField product = new ListGridField("product", "Product");
    		product.setCanEdit(false);
    		// ListGridField version = new ListGridField("version", "Version");
    		// product.setValueField(productGrid.getSelectedRecord().getAttribute("id"));
    		orderLineList.setFields(quantity, unitPrice, product);
    
    		/*
    		 * IButton newOrderLineButton = new IButton("Add New OrderLine");
    		 * newOrderLineButton.addClickHandler(new ClickHandler() { public void
    		 * onClick(ClickEvent event) { orderLineList.startEditingNew(); } });
    		 */
    
    		IButton saveOrderLineButton = new IButton("Save Order");
    		saveOrderLineButton.addClickHandler(new ClickHandler() {
    			public void onClick(ClickEvent event) {
    				SC.logDebug("number of orderLines to save:" + orderLineList.getRecords().length);
    				orderForm.setValue("orderLines", orderLineList.getRecords());
    				orderForm.saveData();
    			}
    		});
    
    		section4.addItem(orderLineList);
    		// section4.addItem(newOrderLineButton);
    		section4.addItem(saveOrderLineButton);
    		sectionStack.addSection(section4);
    
    		VLayout layout = new VLayout();
    		layout.setTop("45px");
    		layout.setStyleName("ordermanagement_container");
    
    		layout.addMember(orderListLayout);
    		layout.addMember(sectionStack);
    
    		orderList.addSelectionChangedHandler(new SelectionChangedHandler() {
    			@Override
    			public void onSelectionChanged(com.smartgwt.client.widgets.grid.events.SelectionEvent event) {
    				if (event.getState()) {
    					// SC.warn("number of orderLines:" +
    					// event.getSelectedRecord().getAttributeAsRecordArray("orderLines").length);
    					sectionStack.setDisabled(false);
    					sectionStack.expandSection(0);
    					orderLineList.setData(event.getSelectedRecord().getAttributeAsRecordArray("orderLines"));
    					orderForm.editRecord(event.getSelectedRecord());
    				} else {
    					sectionStack.setDisabled(true);
    				}
    
    			}
    		});
    
    		productGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
    			@Override
    			public void onSelectionChanged(com.smartgwt.client.widgets.grid.events.SelectionEvent event) {
    				orderLineList.startEditingNew();
    				sectionStack.expandSection(3);
    				orderLineList.setEditValue(0, "unitPrice", productGrid.getSelectedRecord().getAttributeAsLong("unitPrice"));
    				orderLineList.setEditValue(0, "quantity", 1);
    			}
    		});
    
    		newOrderButton.addClickHandler(new ClickHandler() {
    			public void onClick(ClickEvent event) {
    				sectionStack.setDisabled(false);
    				sectionStack.expandSection(0);
    				shipTo.fetchData();
    				orderLineList.setData(new ListGridRecord[0]);
    				orderForm.editNewRecord();
    			}
    		});
    
    		layout.draw();
    	}
    }

    _About project environment_
    My app's architecture is roughly based on:
    * data access layer: spring-roo managed data-access core classes based on JPA-HIBERNATE-DB2
    * business layer: spring-mvc webapp with thymeleaf templating engine
    * presentation layer: twitter boostrap responsive design HTML framework

    #2
    Please review again the basic requirements for getting help on the forums. Among other obvious omissions: your versions, the server log, and the DataSource definition.

    Comment


      #3
      Datasource(s):
      Code:
      <DataSource ID="order_DataSource" serverType="jpa"
      	schemaBean="com.realanywhere.domain.OrderHeader" autoDeriveSchema="true">
      
      	<serverObject lookupStyle="spring" bean="orderHeaderDao" />
      	<fields>
      		<field name="id" hidden="true" type="sequence" primaryKey="true" />
      		<field name="version" hidden="true" />
      
      		<field name="orderNumber" />
      		<field name="carrier" type="enum" title="Carrier">
      			<valueMap>
      				<value>FRANCOPARTENZA</value>
      				<value>RAILWAY</value>
      				<value>FRANCOARRIVO</value>
      			</valueMap>
      		</field>
      		<field name="creditTerms" hidden="true" />
      		<field name="orderStatus" hidden="true" />
      		<field name="orderLines" hidden="true" multiple="true"
      			type="orderLine_DataSource" foreignKey="orderLine_DataSource.id" />
      		<field name="shipTo" title="ShipTo" canEdit="true" displayField="name"
      			foreignKey="stakeholder_DataSource.id" />
      	</fields>
      
      </DataSource>
      Code:
      <DataSource ID="stakeholder_DataSource" serverType="jpa"
      	schemaBean="com.realanywhere.domain.Stakeholder" autoDeriveSchema="true">
      
      	<serverObject lookupStyle="spring" bean="stakeholderDao" />
      	<fields>  
      		<field name="id" hidden="true" type="sequence" primaryKey="true" />
      		<field name="version" hidden="true" />
              <field name="schema" type="enum" title="Schema">
                  <valueMap>
                      <value>SHIPTO</value>
                      <value>SHIPFROM</value>
                      <value>CUSTOMER</value>
                      <value>AGENT</value>
                  </valueMap>
              </field> 
          </fields>
      </DataSource>
      Code:
      <DataSource ID="product_DataSource" serverType="jpa"
      	schemaBean="com.realanywhere.domain.Product" autoDeriveSchema="true">
      
      	<serverObject lookupStyle="spring" bean="productDao" />
      	<fields>
      		<field name="id" hidden="true" type="sequence" primaryKey="true" />
      		<field name="version" hidden="true" />
      		<field name="shape" type="enum" title="Shape">
      			<valueMap>
      				<value>BAG</value>
      				<value>BULK</value>
      			</valueMap>
      		</field>
      	</fields>
      </DataSource>
      Code:
      <DataSource ID="orderLine_DataSource" serverType="jpa"
      	schemaBean="com.realanywhere.domain.OrderLine" autoDeriveSchema="true">
      
      	<serverObject lookupStyle="spring" bean="orderLineDao" />
      
      	<fields>
      		<field name="id" hidden="true" type="sequence" primaryKey="true" />
      		<field name="version" hidden="true" />
      		<field name="product" hidden="true" multiple="true"
      			type="product_DataSource" foreignKey="product_DataSource.id" />
      	</fields>
      
      </DataSource>
      Versions:

      Code:
      	<properties>
      		<smart-gwt.version>3.1</smart-gwt.version>
      		<gwt.version>2.5.0</gwt.version>
              </properties>
              <dependencies>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>smartgwtee</artifactId>
      			<version>${smart-gwt.version}</version>
      		</dependency>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>smartgwt</artifactId>
      			<version>${smart-gwt.version}</version>
      		</dependency>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>isomorphic_core_rpc</artifactId>
      			<version>${smart-gwt.version}</version>
      		</dependency>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>isomorphic_jpa</artifactId>
      			<version>${smart-gwt.version}</version>
      		</dependency>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>isomorphic_spring</artifactId>
      			<version>${smart-gwt.version}</version>
      		</dependency>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>isomorphic_tools</artifactId>
      			<version>${smart-gwt.version}</version>
      		</dependency>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>oro</artifactId>
      			<version>2.0.6</version>
      		</dependency>
      		<dependency>
      			<groupId>com.smartgwt</groupId>
      			<artifactId>smartgwt-skins</artifactId>
      			<version>${smart-gwt.version}</version>
      		</dependency>

      Comment


        #4
        nobody here?

        Comment

        Working...
        X