rendered paste bodypackage 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)
{
}
}
});
}
}
}