source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/DetachableVirtualCollectionModel.java @ 964

Last change on this file since 964 was 964, checked in by oschonef, 13 years ago
  • fix line-endings
  • add svn:eol-style properties
  • Property svn:eol-style set to native
File size: 1.7 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui;
2
3import org.apache.wicket.model.IDetachable;
4import org.apache.wicket.model.IModel;
5
6import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
7import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
8import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
9
10@SuppressWarnings("serial")
11public class DetachableVirtualCollectionModel implements
12    IModel<VirtualCollection>, IDetachable {
13    private long id;
14    private transient VirtualCollection vc;
15
16    public DetachableVirtualCollectionModel(VirtualCollection vc) {
17        if (vc == null) {
18            throw new IllegalArgumentException("vc == null");
19        }
20        this.id = vc.getId();
21        this.vc = vc;
22    }
23
24    public DetachableVirtualCollectionModel(long id) {
25        this.id = vc.getId();
26    }
27
28    @Override
29    public VirtualCollection getObject() {
30        if (!isAttached()) {
31            this.vc = load();
32        }
33        return this.vc;
34    }
35
36    @Override
37    public void setObject(VirtualCollection vc) {
38        throw new UnsupportedOperationException("Model " + getClass() +
39                " does not support setObject(Object)");
40    }
41
42    @Override
43    public void detach() {
44        if (isAttached()) {
45            this.vc = null;
46        }
47    }
48
49    public boolean isAttached() {
50        return vc != null;
51    }
52
53    protected VirtualCollection load() {
54        try {
55            VirtualCollectionRegistry vcr =
56                VirtualCollectionRegistry.instance();
57            return vcr.retrieveVirtualCollection(this.id);
58        } catch (VirtualCollectionRegistryException e) {
59            return null;
60        }
61    }
62
63} // class DetachableVirtualCollectionModel
Note: See TracBrowser for help on using the repository browser.