[richfaces-svn-commits] JBoss Rich Faces SVN: r4451 - branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Dec 4 10:46:31 EST 2007


Author: nbelaevski
Date: 2007-12-04 10:46:30 -0500 (Tue, 04 Dec 2007)
New Revision: 4451

Modified:
   branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingBaseComponent.java
   branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java
Log:
validation error message added

Modified: branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingBaseComponent.java
===================================================================
--- branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingBaseComponent.java	2007-12-04 15:46:25 UTC (rev 4450)
+++ branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingBaseComponent.java	2007-12-04 15:46:30 UTC (rev 4451)
@@ -7,6 +7,7 @@
 import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -59,7 +60,27 @@
 		}
 	};
 
+	protected boolean isSuitableValue(Object value, Object restoredObject) {
+		if (value instanceof Object[]) {
+			Object[] objects = (Object[]) value;
+			for (int i = 0; i < objects.length; i++) {
+				Object object = objects[i];
+			
+				if (object != null && object.equals(restoredObject)) {
+					return true;
+				}
+			}
 
+			return false;
+		} else {
+			if (value != null) {
+				return ((Collection) value).contains(restoredObject);
+			} else {
+				return false;
+			}
+		}
+	}
+	
 	private static class EditableState implements Serializable {
 		/**
 		 * 

Modified: branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java
===================================================================
--- branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java	2007-12-04 15:46:25 UTC (rev 4450)
+++ branches/3.1.x/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java	2007-12-04 15:46:30 UTC (rev 4451)
@@ -6,8 +6,10 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
+import java.util.Map.Entry;
 
 import javax.faces.FacesException;
 import javax.faces.application.FacesMessage;
@@ -28,37 +30,48 @@
 import javax.faces.validator.Validator;
 import javax.faces.validator.ValidatorException;
 
+import org.ajax4jsf.Messages;
 import org.ajax4jsf.model.DataVisitor;
 import org.ajax4jsf.model.ExtendedDataModel;
 import org.ajax4jsf.model.SequenceDataModel;
+import org.richfaces.component.util.MessageUtil;
 import org.richfaces.model.OrderingListDataModel;
 
 public abstract class UIOrderingList extends UIOrderingBaseComponent {
 
-	public UIOrderingList() {
-		super();
+	protected void processDecodes(FacesContext faces, Object argument) {
+		if (!this.isRendered())
+			return;
+		this.decode(faces);
 
-		final ComponentVisitor decodeVisitor = this.decodeVisitor;
-		
-		this.decodeVisitor = new ComponentVisitor() {
+		SubmittedValue submittedValue = UIOrderingList.this.submittedValueHolder;
+		if (submittedValue != null) {
+			Object modelValue = getValue();
+			Iterator iterator = submittedValue.dataMap.entrySet().iterator();
+			while (iterator.hasNext()) {
+				Entry entry = (Entry) iterator.next();
+				Object value = entry.getValue();
+				
+				if (!isSuitableValue(modelValue, value)) {
+					String messageText = Messages.getMessage(
+							Messages.INVALID_VALUE, MessageUtil.getLabel(faces, this), value);
+					
+					FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, messageText, null);
+					faces.addMessage(this.getClientId(faces), message);
 
-			public void processComponent(FacesContext context, UIComponent c,
-					Object argument) throws IOException {
-
-				if (UIOrderingList.this.submittedValueHolder != null) {
-					//TODO check for item existence
+					setValid(false);
+					
+					iterator.remove();
+					
+					submittedValue.selection.remove(value);
+					
+					if (submittedValue.activeItem != null && submittedValue.activeItem.equals(value)) {
+						submittedValue.activeItem = null;
+					}
 				}
+			}
+		}
 				
-				decodeVisitor.processComponent(context, c, argument);
-			}
-
-		};
-	}
-	
-	protected void processDecodes(FacesContext faces, Object argument) {
-		if (!this.isRendered())
-			return;
-		this.decode(faces);
 		this.iterate(faces, decodeVisitor, argument);
 	}
 




More information about the richfaces-svn-commits mailing list