package webapp.panel; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import components.pricesheet.CSVPriceSheetManager; import components.pricesheet.ExcelPriceSheetManager; import components.pricesheet.PriceSheetManager; import wicket.IRequestTarget; import wicket.RequestCycle; import wicket.markup.html.WebPage; import wicket.markup.html.form.DropDownChoice; import wicket.markup.html.form.Form; import wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable; import wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import wicket.extensions.markup.html.repeater.util.SortableDataProvider; import wicket.markup.html.panel.Panel; import wicket.model.IModel; import wicket.model.Model; import wicket.protocol.http.WebResponse; import wicket.request.target.resource.ResourceStreamRequestTarget; import wicket.util.io.Streams; import wicket.util.resource.FileResourceStream; public class PriceSheetPanel2 extends Panel { public PriceSheetPanel2(String id) { super(id); String filename = System.getProperty("user.dir") + "/uploads/sheet.csv"; PriceSheetManager psheet = new CSVPriceSheetManager(filename); int cols = psheet.getRandomRow().size(); List columns = new ArrayList(); for( int i = 0 ; i < cols ; i++ ){ String str = Integer.valueOf(i).toString(); columns.add(new PropertyColumn(new Model("Column "+ str),str)); } add(new PriceSheetForm("sheetform",cols)); add(new AjaxFallbackDefaultDataTable("table", columns, new MySortableProvider(psheet.getAll()), 10)); } private static final long serialVersionUID = 1L; public class MySortableProvider extends SortableDataProvider { private static final long serialVersionUID = 1L; private List psheet; public MySortableProvider(List list) { this.psheet = list; } public Iterator iterator(int arg0, int arg1) { return psheet.subList(arg0,psheet.size()).iterator(); } public IModel model(Object arg0) { return new Model((ArrayList) arg0); } public int size() { return psheet.size(); } } public class PriceSheetForm extends Form { private static final long serialVersionUID = 1L; private List columns = new ArrayList(); public PriceSheetForm(String id, int columns ) { super(id); for(int i = 0 ; i < columns; i++) { this.columns.add(i); } add(new DropDownChoice("model",this.columns)); add(new DropDownChoice("description",this.columns)); add(new DropDownChoice("price",this.columns)); } public void onSubmit() { getRequestCycle().setRequestTarget(new IRequestTarget() { public void detach(RequestCycle requestCycle) { } public Object getLock(RequestCycle requestCycle) { return null; } public void respond(RequestCycle requestCycle) { WebResponse r = (WebResponse)requestCycle.getResponse(); r.setAttachmentHeader("export.csv"); String filename = System.getProperty("user.dir") + "/uploads/sheet.csv"; try { InputStream is = new FileInputStream(filename); Streams.copy(is, r.getOutputStream()); } catch (Exception e) { } } }); } } }