1 package uk.ac.cam.spectra.spectrasub.pages;
2
3 import org.apache.log4j.Logger;
4 import org.apache.tapestry.IPage;
5 import org.apache.tapestry.annotations.InjectObject;
6 import org.apache.tapestry.event.PageBeginRenderListener;
7 import org.apache.tapestry.event.PageEvent;
8
9 import uk.ac.cam.spectra.spectrasub.DataPackage;
10 import uk.ac.cam.spectra.spectrasub.DataPackageDAO;
11 import uk.ac.cam.spectra.spectrasub.NotFoundException;
12
13 public abstract class BaseSubmissionPage extends BaseSPECTRaSubPage implements IPage,
14 PageBeginRenderListener {
15
16 public void pageBeginRender(PageEvent event) {
17 if (!getRequestCycle().isRewinding()) {
18 String id = getPackageId();
19 if (id == null) {
20 throw new RuntimeException("Package ID lost, cannot continue");
21 } else {
22 LOG.debug("Loading package: " + id);
23 loadPackage();
24 }
25 }
26 }
27
28 final static Logger LOG = Logger
29 .getLogger(BaseSubmissionPage.class);
30
31 public DataPackage loadPackage() {
32 String id = getPackageId();
33 LOG.debug("Loading package: " + id);
34 try {
35 setPackage(getPackageDao().load(id));
36 } catch (NotFoundException e) {
37 LOG.error("Could not find process: " + e.getMessage(), e);
38 throw new RuntimeException("Could not find process: "
39 + e.getMessage(), e);
40 }
41 return getPackage();
42 }
43
44
45 @InjectObject("spring:packageDAO")
46 public abstract DataPackageDAO getPackageDao();
47
48 public abstract String getPackageId();
49
50 public abstract void setPackageId(String string);
51
52
53
54
55
56
57 public abstract DataPackage getPackage();
58
59
60
61
62
63
64 public abstract void setPackage(DataPackage pkg);
65
66 }