package is.idega.idegaweb.golf.service; import is.idega.idegaweb.golf.entity.Member; import is.idega.idegaweb.golf.entity.PriceCatalogue; import is.idega.idegaweb.golf.entity.Union; import is.idega.idegaweb.golf.entity.UnionHome; import java.io.IOException; import java.sql.SQLException; import java.util.StringTokenizer; import javax.ejb.FinderException; import com.idega.data.IDOLookup; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWContext; import com.idega.presentation.Image; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextInput; import com.idega.presentation.ui.Window; /** *@author <a href="mailto:aron@idega.is">Aron Birkir</a> *@version 1.0 */ public class PriceCatalogueMaker extends com.idega.presentation.PresentationObjectContainer { private String union_id,unionName,unionAbbrev; private int un_id; private Union union; private String[][] Values; private Member thisMember; private Member[] unionMembers; private PriceCatalogue[] Catalogs; private String MenuColor,ItemColor,HeaderColor,LightColor,DarkColor,OtherColor; private boolean isAdmin = false; private java.util.Locale currentLocale; private Link sidan, UpdateLink, PriceLink; private Window window; private Member[][] mbsArray; private Integer[][] totals; private int cellspacing = 1, cellpadding = 2; private Thread payThread = null; private String tablewidth = "308"; private int numOfCat, inputLines, saveCount,count,memberCount=0; private String extra_catal_action = ""; private IWResourceBundle iwrb; private final static String IW_BUNDLE_IDENTIFIER="com.idega.projects.golf.tariff"; public PriceCatalogueMaker(){ HeaderColor = "#336660"; LightColor = "#CEDFD0"; DarkColor = "#ADCAB1"; OtherColor = "#6E9073 "; setMenuColor("#ADCAB1");//,"#CEDFD0" setItemColor("#CEDFD0");//"#D0F0D0" setInputLines(15); currentLocale = java.util.Locale.getDefault(); } public String getBundleIdentifier(){ return IW_BUNDLE_IDENTIFIER; } private Table makeMainTable(int menuNr){ Link PiLink = new Link(new Image("/pics/tarif/pi.gif"),"/tarif/pi.jsp"); Text HeaderText = new Text(" F\u00e9lagsgj\u00f6ld "+ unionAbbrev); HeaderText.setFontColor("#FFFFFF"); Table HeaderTable = new Table(1,1); HeaderTable.setColor(HeaderColor ); HeaderTable.setWidth(tablewidth); HeaderTable.add(HeaderText,1,1); Table MainTable = new Table(1,5); MainTable.setCellpadding(0); MainTable.setCellspacing(0); MainTable.setWidth(tablewidth); MainTable.add(makeLinkTable(menuNr),1,1); MainTable.add(HeaderTable,1,2); //MainTable.add(PiLink,1,5); return MainTable; } private Table makeLinkTable(int menuNr){ Table LinkTable = new Table(1,1); LinkTable.setWidth(tablewidth); LinkTable.setCellpadding(0); LinkTable.setCellspacing(0); Link sidan = new Link(iwrb.getImage(menuNr == 1?("ratelist.gif"):("ratelist1.gif")));//,"/tarif/tarif.jsp"); sidan.addParameter("extra_catal_action","main"); sidan.addParameter("union_id",union_id); Link UpdateLink = new Link(iwrb.getImage(menuNr == 2?("change.gif"):("change1.gif"))); UpdateLink.addParameter("extra_catal_action","change"); UpdateLink.addParameter("union_id",union_id); Link ViewLink = new Link(iwrb.getImage(menuNr == 3?("look.gif"):("look1.gif"))); ViewLink.addParameter("extra_catal_action","view"); ViewLink.addParameter("union_id",union_id); Link SaveLink = new Link(iwrb.getImage(menuNr == 4?("createratelist.gif"):("createratelist1.gif"))); SaveLink.addParameter("extra_catal_action","save"); SaveLink.addParameter("union_id",union_id); LinkTable.add(sidan,1,1); if(isAdmin){ LinkTable.add(UpdateLink,1,1); LinkTable.add(ViewLink,1,1); LinkTable.add(SaveLink,1,1); LinkTable.add(PriceLink,1,1); } return LinkTable; } private Table makeSubTable(){ int tablelines = 1; if(Values != null) tablelines += Values.length; Table T = new Table(3,tablelines); T.setBorder(0); T.setWidth(tablewidth); T.setColumnAlignment(1, "center"); T.setColumnAlignment(3, "right"); T.setHorizontalZebraColored(DarkColor,LightColor); T.setCellpadding(cellpadding); T.setCellspacing(cellspacing) ; T.add("Nr",1,1); T.add("L\u00fdsing",2,1); T.add("Upph\u00e6\u00f0",3,1); if(Values != null){ java.text.NumberFormat nf = java.text.NumberFormat.getInstance(); for (int i = 0; i < Values.length; i++) { for (int j = 0; j < 3; j++) { T.add(Values[i][j],j+1,i+2 ); } } } return T; } public void setMenuColor(String MenuColor){ this.MenuColor = MenuColor; } public void setItemColor(String ItemColor){ this.ItemColor = ItemColor; } public void setInputLines(int inputlines){ this.inputLines = inputlines; } private void control(IWContext modinfo) throws IOException{ iwrb = getResourceBundle(modinfo); try{ if(modinfo.getRequest().getParameter("union_id") != null){ union_id = modinfo.getRequest().getParameter("union_id"); } else{ union_id = (String) modinfo.getSession().getAttribute("golf_union_id"); } un_id = Integer.parseInt(union_id) ; union = ((UnionHome) IDOLookup.getHomeLegacy(Union.class)).findByPrimaryKey(un_id); unionName = union.getName(); unionAbbrev = union.getAbbrevation() ; boolean hasSomeValues = false; if(modinfo.getRequest().getParameter("extra_catal_action") == null){ doMain(modinfo); } if(modinfo.getRequest().getParameter("extra_catal_action") != null){ extra_catal_action = modinfo.getRequest().getParameter("extra_catal_action"); if(extra_catal_action.equals("main")){ doMain(modinfo); } if(extra_catal_action.equals("change")){ doChange(modinfo); } if(extra_catal_action.equals("update")){ doUpdate(modinfo); } if(extra_catal_action.equals("view")){ doView(modinfo); } if(extra_catal_action.equals("save")){ doSave(modinfo); } if(extra_catal_action.equals("list")){ doList(modinfo); } } } catch(SQLException S){S.printStackTrace();} catch(FinderException IO){IO.printStackTrace();} // catch(Exception E){ E.printStackTrace(); add("<br> villa "+E.toString() );} } private void doMain(IWContext modinfo) throws SQLException { PriceCatalogue[] Catalogs = (PriceCatalogue[]) ((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class)).findAll("select * from price_catalogue where union_id = "+union_id+" and in_use = 'Y' and is_independent = 'Y'"); java.text.NumberFormat nf = java.text.NumberFormat.getInstance(); Table MainTable = makeMainTable(1); int count = Catalogs.length; Table catalTable = new Table(3,count+1); catalTable.setWidth(tablewidth); catalTable.setHorizontalZebraColored(DarkColor,LightColor); catalTable.setCellpadding(cellpadding); catalTable.setCellspacing(cellspacing) ; catalTable.setColumnAlignment(3, "right"); catalTable.add(iwrb.getLocalizedString("nr","Nr"),1,1); catalTable.add(iwrb.getLocalizedString("description","Description"),2,1); catalTable.add(iwrb.getLocalizedString("amount","Amount"),3,1); if(isAdmin){ if(count > 0){ for (int i = 0;i < count;i++){ catalTable.add(String.valueOf(i+1),1,i+2); catalTable.add(Catalogs[i].getName(),2,i+2); //catalTable.add(String.valueOf(Catalogs[i].getPrice())+" kr",3,i+2); catalTable.add(nf.format(Catalogs[i].getPrice())+iwrb.getLocalizedString("currency","Kr"),3,i+2); } Values = fetchValues(union_id); setValues( modinfo , fetchValues(union_id) ); setValuesCount( modinfo , count ); } } MainTable.add(catalTable,1,3); MainTable.setWidth(tablewidth); add(MainTable); } private String[][] fetchValues(String unionID) throws SQLException{ PriceCatalogue[] Catalogs = (PriceCatalogue[]) ((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class)).findAll("select * from price_catalogue where union_id = "+union_id+" and in_use = 'Y' and is_independent = 'Y'"); int count = Catalogs.length; String activeCats[][] = new String[count][8]; if(count > 0){ //String activeCats[][] = new String[count][8]; // used to store in_use, extra_info strings StringTokenizer st; for (int i = 0;i < count;i++){ st = new StringTokenizer(Catalogs[i].getExtraInfo(),"#"); int a =0; while ((st.hasMoreTokens()) && a < 8) { activeCats[i][a]= st.nextToken(); a++; } } } return activeCats; } private void doChange(IWContext modinfo) throws SQLException{ Form myForm = new Form(); myForm.maintainAllParameters(); Values = this.getValues(modinfo) ; int count = this.getValuesCount(modinfo); Table inputTable = new Table(3,inputLines+1); inputTable.setWidth(tablewidth); inputTable.setCellpadding(2); inputTable.setCellspacing(1); inputTable.setColumnAlignment(1,"right"); inputTable.setHorizontalZebraColored(DarkColor,LightColor); inputTable.add(iwrb.getLocalizedString("nr","Nr"),1,1); inputTable.add(iwrb.getLocalizedString("description","Description"),2,1); inputTable.add(iwrb.getLocalizedString("amount","Amount"),3,1); for (int i = 1; i < inputLines+1 ;i++){ String rownum = String.valueOf(i); String s = ""; TextInput textInput, priceInput, ageFromInput, ageToInput, membForInput; DropdownMenu drpGender, drpExtra; String genderValue,extraValue; String tmp; if(Values != null && i <= Values.length ){ textInput = new TextInput("extra_catal_text"+i,(Values[i-1][1].equalsIgnoreCase("null")?"":Values[i-1][1])); priceInput = new TextInput("extra_catal_price"+i,(Values[i-1][2].equalsIgnoreCase("null")?"":Values[i-1][2])); } else{ textInput = new TextInput("extra_catal_text"+i); priceInput = new TextInput("extra_catal_price"+i); } textInput.setSize(20); priceInput.setSize(4); priceInput.setAsIntegers(); inputTable.add(rownum,1,i+1); inputTable.add(textInput,2,i+1); inputTable.add(priceInput,3,i+1); } myForm.add(new HiddenInput("numofcatal", String.valueOf(inputLines) )); myForm.add(new HiddenInput("extra_catal_action","update" )); myForm.add(inputTable); myForm.add(new SubmitButton(iwrb.getImage("update.gif"))); Table MainTable = makeMainTable(2); MainTable.add(myForm,1,3); add(MainTable); } private void doUpdate(IWContext modinfo) throws SQLException{ int number = Integer.parseInt(modinfo.getRequest().getParameter("numofcatal")); int cols = 3; boolean hasNull = false; if (Values == null) Values = new String[number][cols]; String text; String price; for (int i = 1; i < number+1 ;i++){ count = i; text = modinfo.getRequest().getParameter("extra_catal_text"+i ); price = modinfo.getRequest().getParameter("extra_catal_price"+i); if(text.equalsIgnoreCase("")){ text = "null"; if(!hasNull){ numOfCat = i-1; hasNull = true; } } if(price.equalsIgnoreCase("") ) price = "null"; Values[i-1][0] = String.valueOf(i); Values[i-1][1] = text; Values[i-1][2] = price; }// for lykkja String[][] parsedValues = new String[numOfCat][cols]; for(int k = 0; k < numOfCat; k++){ for(int m = 0; m < Values[k].length;m++){ parsedValues[k][m] = Values[k][m]; } } Values = parsedValues; this.setValues( modinfo , Values ); this.setValuesCount(modinfo,numOfCat) ; Table MainTable = makeMainTable(3); MainTable.setWidth(tablewidth); Text T = new Text("<H3>"+iwrb.getLocalizedString("pcm.info","Veldu VISTA til a� vista gjaldskr� � gagnagrunn")+"</H3>"); MainTable.add(makeSubTable(),1,3); MainTable.add(T ,1,3); add(MainTable); } private void doView(IWContext modinfo) throws SQLException{ Values = getValues( modinfo); Table MainTable = this.makeMainTable(3); MainTable.add(makeSubTable(),1,3); add(MainTable); } private void doSave(IWContext modinfo) throws SQLException{ Values = this.getValues( modinfo ); Text messageText; if(Values != null){ makeAllUnUsable(); saveCatalogs(); messageText = new Text("<H3>"+iwrb.getLocalizedString("pcm.info2"," Gjaldskr� var vistu� !") +"</H3> "); } else{ messageText = new Text("<H3>"+iwrb.getLocalizedString("pcm.info"," Ekkert vista� ! ") +"</H3> "); } Table MainTable = makeMainTable(4); MainTable.setWidth(tablewidth); MainTable.add(messageText,1,3); add(MainTable); } private void doList(IWContext modinfo) throws SQLException{ } private void saveCatalogs()throws SQLException{ PriceCatalogue pcl; for(int i = 0; i < Values.length; i++){ String text = Values[i][1]; String price = Values[i][2]; if(!(text.equalsIgnoreCase("null")) && !(price.equalsIgnoreCase("null"))){ pcl = (PriceCatalogue) IDOLookup.createLegacy(PriceCatalogue.class); pcl.setUnion_id(new Integer(union_id)); pcl.setName(text); pcl.setPrice( Integer.valueOf(price)); StringBuffer SB = new StringBuffer(); for(int k = 0; k < Values[i].length ; k++){ SB.append(Values[i][k]); SB.append("#"); } SB.append("null#null#null#null#null#"); pcl.setExtraInfo(SB.toString()) ; pcl.setInUse(true); pcl.setIndependent(true); pcl.insert(); } } } private void makeAllUnUsable() throws SQLException{ PriceCatalogue[] pcls= (PriceCatalogue[]) ((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class)).findAll("select * from price_catalogue where union_id = "+union_id+" and in_use = 'Y' and is_independent = 'Y'"); if(pcls != null){ for(int i = 0; i < pcls.length; i++){ pcls[i].setInUse(false); pcls[i].setIndependent(false); pcls[i].update(); } } } private void setValues(IWContext modinfo , String[][] values){ modinfo.getSession().setAttribute("extra_catalog_tarifs", values); } private String[][] getValues(IWContext modinfo){ String S[][] = (String[][]) modinfo.getSession().getAttribute("extra_catalog_tarifs"); return S; } private void setValuesCount(IWContext modinfo , int count){ modinfo.getSession().setAttribute("extra_catalog_count", new Integer(count)); } private int getValuesCount(IWContext modinfo){ if(modinfo.getSession().getAttribute("extra_catalog_count")!= null){ Integer I = (Integer)modinfo.getSession().getAttribute("extra_catalog_count"); return I.intValue(); } else return 0; } public void main(IWContext modinfo) throws IOException { //isAdmin = /** @todo: fixa Admin*/ isAdmin = true; control(modinfo); } }// class PriceCatalogueMaker