View Javadoc

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  }