1 package uk.ac.cam.spectra.spectrasub.pages;
2
3 import java.util.Arrays;
4 import java.util.Calendar;
5 import java.util.Date;
6 import java.util.List;
7
8 import org.apache.log4j.Logger;
9 import org.apache.tapestry.IPage;
10 import org.apache.tapestry.PageRedirectException;
11 import org.apache.tapestry.annotations.InjectObject;
12 import org.apache.tapestry.annotations.InjectPage;
13 import org.apache.tapestry.event.PageBeginRenderListener;
14 import org.apache.tapestry.event.PageEvent;
15
16 import uk.ac.cam.spectra.Constants;
17 import uk.ac.cam.spectra.EmbargoMetadataEncoder;
18 import uk.ac.cam.spectra.LiteralProperty;
19 import uk.ac.cam.spectra.SpectraMetadata;
20 import uk.ac.cam.spectra.spectrasub.Configuration;
21 import uk.ac.cam.spectra.spectrasub.DataPackage;
22 import uk.ac.cam.spectra.spectrasub.DataPackageDAO;
23 import uk.ac.cam.spectra.spectrasub.DataPackageManager;
24 import uk.ac.cam.spectra.spectrasub.NotFoundException;
25
26 public abstract class Check extends BaseSubmissionPage implements
27 PageBeginRenderListener {
28 @SuppressWarnings("unused")
29 private static final Logger LOG = Logger.getLogger(Check.class);
30
31 public void pageBeginRender(PageEvent event) {
32 if (getRequestCycle().isRewinding()) {
33 return;
34 }
35 DataPackageDAO pkgDao = getPackageDao();
36 EmbargoMetadataEncoder embargoEncoder = getEmbargoEncoder();
37 String id = getPackageId();
38
39 DataPackage dp = loadPackage();
40 Integer embargoPeriod = dp
41 .getIntegerValue(SpectraMetadata.embargo_period);
42 if (embargoPeriod == null) {
43 embargoPeriod = Integer.valueOf(0);
44 }
45 setEmbargoApplies(embargoPeriod != 0);
46 setAutoRelease("automatic".equals(dp
47 .getValue(SpectraMetadata.embargo_release)));
48 setContents(Arrays.asList(pkgDao.getPackagingDirectory(id, false)
49 .list()));
50 String inchi = dp.getValue(SpectraMetadata.inchi);
51 if (inchi != null) {
52 inchi = inchi.replace("/", "/<wbr/>");
53 inchi = inchi.replace("-", "-<wbr/>");
54 }
55 setInchi(inchi);
56 setRights(dp.getValue(new LiteralProperty(
57 Constants.DC_NS, "rights")));
58 Date embargoStart = dp.getDateValue(SpectraMetadata.embargo_date);
59 if (embargoStart == null) {
60 embargoStart = new Date();
61 }
62 Calendar c = Calendar.getInstance();
63 c.setTime(embargoStart);
64 c.add(Calendar.MONTH, embargoPeriod);
65 Date embargoEnd = c.getTime();
66 setEmbargoEnd(Constants.SIMPLE_ISO_DATE_FORMAT.format(embargoEnd));
67 setHandle(dp.getValue(SpectraMetadata.handle));
68 setClosedUrl(embargoEncoder.getClosedLicenseURL());
69 setClosedLicense(embargoEncoder.getClosedLicenseDescription());
70 setOpenUrl(embargoEncoder.getOpenLicenseURL());
71 setOpenLicense(embargoEncoder.getOpenLicenseDescription());
72 }
73
74 public IPage submit() {
75 DataPackageManager packageManager = getDataPackageManager();
76 String newURL;
77 try {
78 newURL = packageManager.packAndGo(getPackageId());
79 } catch (NotFoundException e) {
80 throw new RuntimeException(e);
81 }
82 Finished finished = getFinished();
83 finished.setNewURL(newURL);
84 finished.setPackageId(getPackageId());
85 return finished;
86 }
87
88 public String getPackageDescription() {
89 return getConfiguration().getPackageDescription();
90 }
91
92 @InjectObject("spring:application")
93 public abstract Configuration getConfiguration();
94
95 @InjectPage("Finished")
96 public abstract Finished getFinished();
97
98 @InjectObject("spring:embargoEncoder")
99 public abstract EmbargoMetadataEncoder getEmbargoEncoder();
100
101 @InjectObject("spring:packageManager")
102 public abstract DataPackageManager getDataPackageManager();
103
104 public void reedit() {
105 AddMetadata am = getAddMetadata();
106 am.setPackageId(getPackageId());
107 throw new PageRedirectException(am);
108 }
109
110 @InjectPage("AddMetadata")
111 public abstract AddMetadata getAddMetadata();
112
113 public void quit() {
114 throw new PageRedirectException(getUpload());
115 }
116
117 @InjectPage("Upload")
118 public abstract Upload getUpload();
119
120 public abstract boolean getEmbargoApplies();
121
122 public abstract void setEmbargoApplies(boolean embarg);
123
124 public abstract boolean getAutoRelease();
125
126 public abstract void setAutoRelease(boolean ar);
127
128 public abstract List<String> getContents();
129
130 public abstract void setContents(List<String> cs);
131
132 public abstract String getInchi();
133
134 public abstract void setInchi(String inchi);
135
136 public abstract String getRights();
137
138 public abstract void setRights(String rights);
139
140 public abstract String getEmbargoEnd();
141
142 public abstract void setEmbargoEnd(String end);
143
144 public abstract String getHandle();
145
146 public abstract void setHandle(String h);
147
148 public abstract String getClosedUrl();
149
150 public abstract void setClosedUrl(String url);
151
152 public abstract String getClosedLicense();
153
154 public abstract void setClosedLicense(String s);
155
156 public abstract String getOpenUrl();
157
158 public abstract void setOpenUrl(String url);
159
160 public abstract String getOpenLicense();
161
162 public abstract void setOpenLicense(String s);
163
164 }