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