1 package org.paneris.bibliomania;
2
3 import java.util.Enumeration;
4 import java.util.Vector;
5
6 import org.melati.Melati;
7 import org.melati.poem.Column;
8 import org.melati.poem.FieldSet;
9 import org.melati.poem.Table;
10 import org.melati.poem.TailoredQuery;
11 import org.melati.poem.util.EnumUtils;
12 import org.webmacro.servlet.WebContext;
13
14
15 public class DownloadList extends BibliomaniaServlet {
16
17
18
19
20 private static final long serialVersionUID = 1L;
21
22 protected String bibliomaniaHandle(Melati melati, WebContext context)
23 throws Exception {
24 BibliomaniaDatabase db = (BibliomaniaDatabase)melati.getDatabase();
25 assertRegisteredUser(db);
26 String template = "DownloadList.wm";
27 User user = (User)melati.getUser();
28 Column[] columns = {db.getProductTable().getIdColumn(),
29 db.getProductTable().getNameColumn(),
30 db.getProductTable().getBookColumn()};
31 Table[] tables = { db.getProductTable(),
32 db.getShopOrderItemTable() };
33 Vector where = new Vector();
34 where.add("shoporderitem.authorised = true");
35 where.add("shoporderitem.\"user\" =" + user.getTroid());
36 where.add("shoporderitem.product = product.id");
37 where.add("product.download IS NOT NULL");
38 String whereClause = EnumUtils.concatenated(" AND ", where.elements());
39 TailoredQuery q = new TailoredQuery("DISTINCT", columns, tables, whereClause, "product.book, product.name");
40 Vector purchases = new Vector();
41 for (Enumeration e = q.selection(); e.hasMoreElements();) {
42 FieldSet fs = (FieldSet)e.nextElement();
43 purchases.add(db.getProductTable().getProductObject((Integer)fs.get("product_id").getCooked()));
44 }
45 context.put("purchases", purchases);
46 return template;
47 }
48
49 }