1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.vaadin.integration.jcr;
35
36 import java.util.HashMap;
37 import java.util.Map;
38 import java.util.Map.Entry;
39
40 import javax.jcr.Item;
41 import javax.jcr.RepositoryException;
42
43 import org.slf4j.Logger;
44 import org.slf4j.LoggerFactory;
45
46 import com.vaadin.v7.data.Property;
47
48
49
50
51 @Deprecated
52 public abstract class AbstractJcrAdapter implements JcrItemAdapter {
53
54 private static final Logger log = LoggerFactory.getLogger(AbstractJcrAdapter.class);
55
56 protected static final String UNIDENTIFIED = "?";
57
58 private JcrItemId itemId;
59
60 private final Map<String, Property> changedProperties = new HashMap<>();
61
62 private final Map<String, Property> removedProperties = new HashMap<>();
63
64 public AbstractJcrAdapter(Item jcrItem) {
65 initCommonAttributes(jcrItem);
66 }
67
68
69
70
71 protected void initCommonAttributes(Item jcrItem) {
72 try {
73 setItemId(JcrItemUtil.getItemId(jcrItem));
74 } catch (RepositoryException e) {
75 log.error("Could not retrieve workspace or path of JCR Item.", e);
76 setItemId(new JcrItemId(UNIDENTIFIED, UNIDENTIFIED));
77 }
78 }
79
80 @Override
81 public String getWorkspace() {
82 return itemId.getWorkspace();
83 }
84
85 @Override
86 public JcrItemId getItemId() {
87 return itemId;
88 }
89
90 public void setItemId(JcrItemId itemId) {
91 this.itemId = itemId;
92 }
93
94 @Override
95 public Item getJcrItem() {
96 try {
97 return JcrItemUtil.getJcrItem(itemId);
98 } catch (RepositoryException re) {
99 log.warn("Not able to retrieve the JcrItem ", re.getMessage());
100 return null;
101 }
102 }
103
104 @Override
105 public boolean hasChangedProperties() {
106 return changedProperties.size() > 0;
107 }
108
109
110
111 protected Map<String, Property> getChangedProperties() {
112 return changedProperties;
113 }
114
115 protected Map<String, Property> getRemovedProperties() {
116 return removedProperties;
117 }
118
119
120
121
122 protected void updateProperties(Item item) throws RepositoryException {
123 for (Entry<String, Property> entry : changedProperties.entrySet()) {
124 if (entry.getValue().isReadOnly()) {
125 continue;
126 }
127 updateProperty(item, entry.getKey(), entry.getValue());
128 if (ModelConstants.JCR_NAME.equals(entry.getKey())) {
129
130 item = getJcrItem();
131 }
132 }
133 }
134
135
136
137
138
139
140 protected abstract void updateProperty(Item item, String propertyId, Property property);
141
142 }