All pastes #395409 Raw Edit

Something

public text v1 · immutable
·published 2007-03-15 00:39 UTC
rendered paste body
package webapp.panel;

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 webapp.behaviors.InlineValidate;
import wicket.IRequestTarget;
import wicket.RequestCycle;
import wicket.markup.html.form.CheckBox;
import wicket.markup.html.form.DropDownChoice;
import wicket.markup.html.form.Form;
import wicket.markup.html.form.TextField;
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.model.PropertyModel;
import wicket.protocol.http.WebResponse;

public class PriceSheetPanel2 extends Panel {
	public PriceSheetPanel2(String id) {
		super(id);

		String filename = "/tmp/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();
    	private List markupCols = new ArrayList();
    	private int modelName;
    	private int description;
    	private int price;
    	private int geColors;
    	private Boolean geConcatenate;
    	private String brand;
    	private String markup;
    	private String name;

    	public PriceSheetForm(String id, int columns) {
    		super(id);

    		for(int i = 0 ; i < columns; i++) {
    			this.columns.add(i);
    		}

    		//temp hack
    		List brands = new ArrayList();
    		brands.add("ACE hardware");
    		brands.add("Admiral");
    		brands.add("Aire");
    		brands.add("Airtemp");
    		brands.add("AmFilter");
    		brands.add("Amana");
    		brands.add("Amer.Range");
    		brands.add("Asko");
    		brands.add("Atlantis");
    		brands.add("Avanti");
    		brands.add("Bevarage Air");
    		brands.add("Bosch");
    		brands.add("Broan");
    		brands.add("Brown");
    		brands.add("Caloric");
    		brands.add("Carrier");
    		brands.add("Chambers");
    		brands.add("Coldspot");
    		brands.add("Credit");
    		brands.add("Crosley");
    		brands.add("Danby");
    		brands.add("Day&Night");
    		brands.add("DeLonghi");
    		brands.add("Dummy");
    		brands.add("Equator");
    		brands.add("Fedders");
    		brands.add("Fisher & Paykel");
    		brands.add("Frigidaire");
    		brands.add("GE");
    		brands.add("GE Parts");
    		brands.add("Gaffers&Satler");
    		brands.add("Gaggenau");
    		brands.add("Gemini");
    		brands.add("Gemline");
    		brands.add("Generic");
    		brands.add("Gibson");
    		brands.add("Gree");
    		brands.add("Haier");
    		brands.add("Harper-Wyman");
    		brands.add("Hoover");
    		brands.add("Hoshizaki");
    		brands.add("Hotpoint");
    		brands.add("ITT"); 
    		brands.add("Imperial");
    		brands.add("JC Penny");
    		brands.add("Jenn-air");
    		brands.add("Johnstone");
    		brands.add("Kelvinator");
    		brands.add("Kenmore");
    		brands.add("Kitchen Aid");
    		brands.add("Lennox");
    		brands.add("LG");
    		brands.add("Litton");
    		brands.add("Magic Chef");
    		brands.add("Maloy");
    		brands.add("Maytag");
    		brands.add("Milnore");
    		brands.add("Misc.");
    		brands.add("Modern Maid ");
    		brands.add("Montgomery Ward");
    		brands.add("Neptune");
    		brands.add("Norge");
    		brands.add("O'Keefe & Merritt ");
    		brands.add("Panasonic");
    		brands.add("Payne ");
    		brands.add("Performa ");
    		brands.add("Premier");
    		brands.add("Proteam");
    		brands.add("QBproducts");
    		brands.add("Raetone");
    		brands.add("Restocking fee ");
    		brands.add("Robertshaw");
    		brands.add("Rooper");
    		brands.add("Sanyo");
    		brands.add("Scotsman");
    		brands.add("Sears");
    		brands.add("Sharp");
    		brands.add("Sirius");
    		brands.add("Smeg");
    		brands.add("Soleus");
    		brands.add("Speed Queen");
    		brands.add("Sub Zero");
    		brands.add("Sunpentown");
    		brands.add("Systems IV");
    		brands.add("Tappan");
    		brands.add("Thermador");
    		brands.add("Trane");
    		brands.add("Troulsen");
    		brands.add("U-Line");
    		brands.add("United Tape Co.");
    		brands.add("VentAHood");
    		brands.add("Verona");
    		brands.add("Viking");
    		brands.add("Vinetemp");
    		brands.add("Welbilt");
    		brands.add("Whirlpool");
    		brands.add("White Westing Hous");
    		brands.add("Windchaser");
    		brands.add("Wolf");

    		add(new DropDownChoice("brand",new PropertyModel(this,"brand"),brands).setRequired(true));
    		add(new DropDownChoice("modelName",new PropertyModel(this,"modelName"),this.columns).setRequired(true));
    		add(new DropDownChoice("description",new PropertyModel(this,"description"),this.columns).setRequired(true));
    		add(new DropDownChoice("price",new PropertyModel(this,"price"),this.columns).setRequired(true));
    		add(new DropDownChoice("geColors",new PropertyModel(this,"geColors"),this.columns));
    		add(new CheckBox("geConcatenate",new PropertyModel(this,"geConcatenate")));
    		
    		TextField txt = new TextField("name",new PropertyModel(this,"name"));
    		txt.setModelValue("export.csv");
    		txt.setRequired(true);
    		txt.add(new InlineValidate());
    		add(txt);
    		for(int i = 1; i < 100; i++) {
    			this.markupCols.add(i+"%");
    		}
    		add(new DropDownChoice("markup",new PropertyModel(this,"markup"),this.markupCols).setRequired(true));
    	}

    	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.setContentType("text/csv");
				    r.setHeader("Content-Disposition", "attachment; filename=\""+name+"\"");
					String filename =  "/tmp/uploads/sheet.csv";
			        PriceSheetManager psheet = new CSVPriceSheetManager(filename);
			        int finalMarkup = new Integer(markup.replaceAll("%", "")).intValue();
			        
			        psheet.setBrand(brand);
			        psheet.setModelRow(modelName);
			        psheet.setDescriptionRow(description);
			        psheet.setPriceRow(price);
			        
			        if(geConcatenate) {
			        	//turn on hack
			        	psheet.setGEHack(true);
			        	psheet.setGEColorRow(geColors);
			        } else {
			        	psheet.setGEHack(false);
			        }
			        
				    r.write(psheet.generateCSV(finalMarkup));
    			}
    		});
    	}

		public void setName(String name) {
			this.name = name;
		}

		public String getName() {
			return name;
		}

		public int getDescription() {
			return description;
		}

		public void setDescription(int description) {
			this.description = description;
		}

		public int getModelName() {
			return modelName;
		}

		public void setModelName(int modelName) {
			this.modelName = modelName;
		}

		public int getPrice() {
			return price;
		}

		public void setPrice(int price) {
			this.price = price;
		}

		public void setMarkup(String markup) {
			this.markup = markup;
		}

		public String getMarkup() {
			return markup;
		}

		public void setBrand(String brand) {
			this.brand = brand;
		}

		public String getBrand() {
			return brand;
		}

		public void setGeColors(int geColors) {
			this.geColors = geColors;
		}

		public int getGeColors() {
			return geColors;
		}

		public void setGeConcatenate(Boolean geConcatenate) {
			this.geConcatenate = geConcatenate;
		}

		public Boolean getGeConcatenate() {
			return geConcatenate;
		}

    }
}