1
22
23 package com.liferay.portal.upgrade.util;
24
25 import com.liferay.portal.upgrade.StagnantRowException;
26
27 import java.util.Iterator;
28 import java.util.LinkedHashMap;
29 import java.util.LinkedHashSet;
30 import java.util.Map;
31 import java.util.Set;
32
33
40 public class MemoryValueMapper implements ValueMapper {
41
42 public MemoryValueMapper() {
43 this(new LinkedHashSet<Object>());
44 }
45
46 public MemoryValueMapper(Set<Object> exceptions) {
47 _map = new LinkedHashMap<Object, Object>();
48 _exceptions = exceptions;
49 }
50
51 public Object getNewValue(Object oldValue) throws Exception {
52 Object value = _map.get(oldValue);
53
54 if (value == null) {
55 if (_exceptions.contains(oldValue)) {
56 value = oldValue;
57 }
58 else {
59 throw new StagnantRowException(String.valueOf(oldValue));
60 }
61 }
62
63 return value;
64 }
65
66 public void mapValue(Object oldValue, Object newValue) throws Exception {
67 _map.put(oldValue, newValue);
68 }
69
70 public void appendException(Object exception) {
71 _exceptions.add(exception);
72 }
73
74 public Iterator<Object> iterator() throws Exception {
75 return _map.keySet().iterator();
76 }
77
78 public int size() throws Exception {
79 return _map.size();
80 }
81
82 public Map<Object, Object> getMap() {
83 return _map;
84 }
85
86 private Map<Object, Object> _map;
87 private Set<Object> _exceptions;
88
89 }