]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - AbstractWorkingCopy.java
0da35ac7b02ce319e8ccd40226d5d6dd7ceb122c
1 package org
.argeo
.util
.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() {