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; } } }