Author: ilya_shaikovsky
Date: 2009-07-30 09:59:53 -0400 (Thu, 30 Jul 2009)
New Revision: 15066
Modified:
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataModel.java
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataProvider.java
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionItem.java
branches/community/3.3.X/samples/richfaces-demo/src/main/webapp/WEB-INF/faces-config.xml
Log:
https://jira.jboss.org/jira/browse/RF-7012
Modified:
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataModel.java
===================================================================
---
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataModel.java 2009-07-30
13:30:00 UTC (rev 15065)
+++
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataModel.java 2009-07-30
13:59:53 UTC (rev 15066)
@@ -1,11 +1,13 @@
package org.richfaces.demo.extendeddatamodel;
import java.io.IOException;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.faces.application.Application;
import javax.faces.context.FacesContext;
import org.ajax4jsf.model.DataVisitor;
@@ -85,7 +87,7 @@
* We strongly recommend use of local cache in that method.
*/
@Override
- public Object getRowData() {
+ public AuctionItem getRowData() {
if (currentPk==null) {
return null;
} else {
@@ -156,21 +158,61 @@
return null;
}
}
+
+ private <V> V lookupInContext(String expression, Class<? extends V> c) {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ Application application = facesContext.getApplication();
+ return c.cast(application.evaluateExpressionGet(facesContext,
MessageFormat.format("#'{'{0}'}'", expression), c));
+ }
+
+ private String auctionDataModelExpressionString;
+
+ private String auctionDataProviderExpressionString;
+
+
/**
* This is helper method that is called by framework after model update. In must
delegate actual database update to
* Data Provider.
*/
@Override
public void update() {
- getDataProvider().update();
+ AuctionDataModel auctionDataModel = lookupInContext(auctionDataModelExpressionString,
AuctionDataModel.class);
+ Object savedKey = getRowKey();
+ for (Integer key : wrappedKeys) {
+ auctionDataModel.setRowKey(key);
+ auctionDataModel.getRowData().setBid(wrappedData.get(key).getBid());
+ }
+ setRowKey(savedKey);
+ //getDataProvider().update();
+
+ this.wrappedData.clear();
+ this.wrappedKeys.clear();
+ resetDataProvider();
}
+
+ protected void resetDataProvider() {
+ this.dataProvider = null;
+ }
public AuctionDataProvider getDataProvider() {
+ if (dataProvider == null) {
+ dataProvider = lookupInContext(auctionDataProviderExpressionString,
AuctionDataProvider.class);
+ }
return dataProvider;
}
-
- public void setDataProvider(AuctionDataProvider dataProvider) {
- this.dataProvider = dataProvider;
+ public String getAuctionDataModelExpressionString() {
+ return auctionDataModelExpressionString;
}
+ public void setAuctionDataModelExpressionString(
+ String auctionDataModelExpressionString) {
+ this.auctionDataModelExpressionString = auctionDataModelExpressionString;
+ }
+ public String getAuctionDataProviderExpressionString() {
+ return auctionDataProviderExpressionString;
+ }
+ public void setAuctionDataProviderExpressionString(
+ String auctionDataProviderExpressionString) {
+ this.auctionDataProviderExpressionString = auctionDataProviderExpressionString;
+ }
}
Modified:
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataProvider.java
===================================================================
---
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataProvider.java 2009-07-30
13:30:00 UTC (rev 15065)
+++
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionDataProvider.java 2009-07-30
13:59:53 UTC (rev 15066)
@@ -1,11 +1,12 @@
package org.richfaces.demo.extendeddatamodel;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.richfaces.demo.common.RandomDataHelper;
-public class AuctionDataProvider {
+public class AuctionDataProvider implements Serializable{
private String allDescriptions[] = {
"Digital temperature sensor IC LM75A SOIC8 +Free adapter",
Modified:
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionItem.java
===================================================================
---
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionItem.java 2009-07-30
13:30:00 UTC (rev 15065)
+++
branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendeddatamodel/AuctionItem.java 2009-07-30
13:59:53 UTC (rev 15066)
@@ -1,19 +1,23 @@
package org.richfaces.demo.extendeddatamodel;
+import java.io.Serializable;
+
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
-public class AuctionItem {
+public class AuctionItem implements Serializable{
+ /**
+ *
+ */
+ private static final long serialVersionUID = -775342254945959655L;
private Integer pk;
private String description;
private Double bid;
private Double highestBid;
private Integer qtyRequested;
private Integer qtyAvialable;
- private UIComponent bidInput;
- private UIComponent qtyInput;
private boolean won = false;
private boolean loose = false;
private Double amount;
@@ -78,21 +82,4 @@
ctx.addMessage(event.getComponent().getClientId(ctx), new
FacesMessage(FacesMessage.SEVERITY_ERROR,"Bid value is missing","You must
provide bid value"));
}
}
-
- public UIComponent getBidInput() {
- return bidInput;
- }
-
- public void setBidInput(UIComponent bidInput) {
- this.bidInput = bidInput;
- }
-
- public UIComponent getQtyInput() {
- return qtyInput;
- }
-
- public void setQtyInput(UIComponent qtyInput) {
- this.qtyInput = qtyInput;
- }
-
}
Modified:
branches/community/3.3.X/samples/richfaces-demo/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
---
branches/community/3.3.X/samples/richfaces-demo/src/main/webapp/WEB-INF/faces-config.xml 2009-07-30
13:30:00 UTC (rev 15065)
+++
branches/community/3.3.X/samples/richfaces-demo/src/main/webapp/WEB-INF/faces-config.xml 2009-07-30
13:59:53 UTC (rev 15066)
@@ -277,10 +277,15 @@
<managed-bean-class>org.richfaces.demo.extendeddatamodel.AuctionDataModel</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
- <property-name>dataProvider</property-name>
-
<property-class>org.richfaces.demo.extendeddatamodel.AuctionDataProvider</property-class>
- <value>#{auctionDataProvider}</value>
+ <property-name>auctionDataModelExpressionString</property-name>
+ <property-class>java.lang.String</property-class>
+ <value>auctionDataModel</value>
</managed-property>
+ <managed-property>
+ <property-name>auctionDataProviderExpressionString</property-name>
+ <property-class>java.lang.String</property-class>
+ <value>auctionDataProvider</value>
+ </managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>mediaBean</managed-bean-name>