View Javadoc

1   package org.sourceforge.jemm.collections.internal.set;
2   
3   import org.sourceforge.jemm.client.shared.ValueEncoder;
4   import org.sourceforge.jemm.collections.internal.StoredValue;
5   import org.sourceforge.jemm.lifecycle.TypeResponse;
6   import org.sourceforge.jemm.lifecycle.ValueVisitor;
7   
8   /**
9    * SetAddResult encodes the response to a SetAddRequest, there are three possible
10   * outcomes:
11   * 1)  added = true, conflicts = null  ( successfully added)
12   * 2)  added = false, conflicts = null ( item already in map )
13   * 3)  added = false, conflicts = true ( item not added, potential conflicts returned )
14   * 
15   * @author Rory Graves
16   */
17  public class SetAddResponse extends TypeResponse<SetAddResponse> {
18  	private static final long serialVersionUID = 1L;
19  
20  	private final boolean added;	
21  	private final StoredValue[] conflicts;
22  
23  	private SetAddResponse(boolean added,StoredValue[] conflicts) {
24  		this.added = added;
25  		this.conflicts = conflicts;
26  	}
27  	
28  	public SetAddResponse(boolean added) {
29  		this(added,null);
30  	}
31  
32  	public SetAddResponse(StoredValue[] conflicts) {
33  		this(false,conflicts);
34  	}
35  
36  	@Override
37  	public SetAddResponse encode(ValueEncoder encoder) {
38  		return new SetAddResponse(added,encoder.encodeArray(conflicts));
39  	}
40  
41  	@Override
42  	public void visit(ValueVisitor visitor) {
43  		visitor.visit(conflicts);
44  	}
45  
46      /** Returns whether the item was added to the set.
47       * @return True if the item was added, false otherwise.
48       */
49      public boolean wasAdded() {
50          return added;
51      }
52  
53      /** Returns the potential conflicts which prevented the item being added. 
54       * @return The potential conflicts whilst attempting to add the item, or null if none.
55       */
56      public StoredValue[] getConflicts() {
57          return conflicts;
58      }
59  }