]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.cms/src/org/argeo/api/cms/transaction/AbstractWorkingCopy.java
1 package org
.argeo
.api
.cms
.transaction
;
3 import java
.util
.HashMap
;
6 public abstract class AbstractWorkingCopy
<DATA
, ATTR
, ID
> implements WorkingCopy
<DATA
, ATTR
, ID
> {
7 private Map
<ID
, DATA
> newData
= new HashMap
<ID
, DATA
>();
8 private Map
<ID
, ATTR
> modifiedData
= new HashMap
<ID
, ATTR
>();
9 private Map
<ID
, DATA
> deletedData
= new HashMap
<ID
, DATA
>();
11 protected abstract ID
getId(DATA data
);
13 protected abstract ATTR
cloneAttributes(DATA data
);
15 public void cleanUp() {
25 public boolean noModifications() {
26 return newData
.size() == 0 && modifiedData
.size() == 0 && deletedData
.size() == 0;
29 public void startEditing(DATA user
) {
31 if (modifiedData
.containsKey(id
))
32 throw new IllegalStateException("Already editing " + id
);
33 modifiedData
.put(id
, cloneAttributes(user
));
36 public Map
<ID
, DATA
> getNewData() {
40 public Map
<ID
, DATA
> getDeletedData() {
44 public Map
<ID
, ATTR
> getModifiedData() {