- Timestamp:
- 07/12/13 23:41:06 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/params/UniqueListAccess.java
r99 r100 7 7 import com.framsticks.util.lang.Casting; 8 8 import com.framsticks.util.lang.Numbers; 9 import org.apache.log4j.Logger; 9 import org.apache.logging.log4j.Logger; 10 import org.apache.logging.log4j.LogManager; 10 11 11 12 import java.util.*; … … 16 17 public class UniqueListAccess extends ListAccess { 17 18 18 private static final Logger log = Log ger.getLogger(UniqueListAccess.class);19 private static final Logger log = LogManager.getLogger(UniqueListAccess.class); 19 20 20 21 Map<String, Object> map; 21 22 22 final String uidName; 23 24 public UniqueListAccess(AccessInterface elementAccess, String uidName) { 23 protected final String uidName; 24 protected final Access uidAccess; 25 26 public UniqueListAccess(Access elementAccess, String uidName) { 25 27 super(elementAccess); 26 28 this.uidName = uidName; 29 uidAccess = elementAccess.cloneAccess(); 27 30 } 28 31 … … 35 38 } 36 39 40 /** 41 * @return the uidName 42 */ 43 public String getUidName() { 44 return uidName; 45 } 46 37 47 public static class UidComparator implements Comparator<String> { 38 48 39 protected String name; 49 protected Object description; 50 40 51 41 52 /** 42 * @param name53 * @param description 43 54 */ 44 public UidComparator( String name) {45 this. name = name;55 public UidComparator(Object description) { 56 this.description = description; 46 57 } 47 58 … … 65 76 @Override 66 77 public String toString() { 67 return "comparator " + name; 68 } 69 70 78 return "comparator " + description; 79 } 80 81 82 } 83 84 public static <T> Map<String, T> createMap(Class<T> type, Object description) { 85 return new TreeMap<String, T>(new UidComparator(description)); 86 } 87 88 public static <M, T extends M> int getNumberInMap(Map<String, M> map, T object) { 89 Iterator<Map.Entry<String, M>> iterator = map.entrySet().iterator(); 90 int number = 0; 91 while (iterator.hasNext()) { 92 if (iterator.next().getValue() == object) { 93 return number; 94 } 95 ++number; 96 } 97 return -1; 71 98 } 72 99 73 100 @Override 74 101 public Map<String, Object> createAccessee() { 75 return new TreeMap<String, Object>(new UidComparator(elementAccess.toString()));102 return createMap(Object.class, elementAccess); 76 103 } 77 104 … … 92 119 return null; 93 120 } 94 return paramBuilder.id( getUidOf(iterator.next().getValue())).finish(CompositeParam.class);121 return paramBuilder.id(iterator.next().getKey()).finish(CompositeParam.class); 95 122 } 96 123 … … 110 137 return paramBuilder.id(id).finish(CompositeParam.class); 111 138 } 139 112 140 113 141 @Override … … 156 184 157 185 public String getUidOf(Object value) { 158 Object tmp = elementAccess.getSelected(); 159 elementAccess.select(value); 160 String uid = elementAccess.get(uidName, String.class); 161 elementAccess.select(tmp); 162 return uid; 186 return uidAccess.select(value).get(uidName, String.class); 163 187 } 164 188 … … 227 251 @Override 228 252 public UniqueListAccess select(Object object) { 229 assert (object instanceof Map); 230 map = (Map<String, Object>) object; 253 map = Util.selectObjectForAccess(this, object, Map.class); 231 254 return this; 232 255 } … … 242 265 } 243 266 244 public String computeIdentifierFor(Object selected) {245 String uid = getUidOf(selected);246 if (uid == null) {247 log.error("missing uid field");248 return null;249 }250 return uid;251 }267 // public String computeIdentifierFor(Object selected) { 268 // String uid = getUidOf(selected); 269 // if (uid == null) { 270 // log.error("missing uid field"); 271 // return null; 272 // } 273 // return uid; 274 // } 252 275 253 276 @Override
Note: See TracChangeset
for help on using the changeset viewer.