All pastes #384355 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-03-07 00:36 UTC
rendered paste body
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)
    				{
    				}
    			}
    		});
    	}

    }
}