1 20 21 package golfShop.presentation.xmlc.cart; 22 23 import org.enhydra.xml.xmlc.*; 24 import org.enhydra.xml.xmlc.html.*; 25 import com.lutris.appserver.server.httpPresentation.*; 26 import java.io.*; 27 import java.net.URLEncoder ; 28 import org.w3c.dom.*; 29 import org.w3c.dom.html.*; 30 import golfShop.presentation.xmlc.utilities.*; 31 import java.math.BigDecimal ; 32 import java.util.Enumeration ; 33 import golfShop.spec.cart.*; 34 39 public class ContentsTableFormatter { 40 43 public static final String QTY_PREFIX = "qty_"; 44 45 48 public static final String DEL_PREFIX = "del_"; 49 50 53 private static final String ITEM_NUM_ID = "itemNum"; 54 55 58 private static final String ITEM_QUANTITY_ID = "itemQuantity"; 59 60 63 private static final String ITEM_DESC_ID = "itemDesc"; 64 65 68 private ContentsTable htmlObj; 69 70 73 private HTMLTableRowElement protoRow; 74 75 78 private boolean dynamic; 79 80 83 private Cart cart; 84 85 91 private HTMLTableRowElement makeItemRow(int rowNum, CartItemPair itemPair) { 92 int quantity = itemPair.getQuantity(); 94 CartItem item = itemPair.getItem(); 95 BigDecimal price = new BigDecimal (item.getPrice()); 96 BigDecimal total = new BigDecimal (quantity * item.getPrice()); 97 98 price = price.setScale(2, BigDecimal.ROUND_HALF_UP); 100 total = total.setScale(2, BigDecimal.ROUND_HALF_UP); 101 102 HTMLTableRowElement newRow = (HTMLTableRowElement)protoRow.cloneNode(true); 104 105 Element itemNumElem = XMLCUtil.getRequiredElementById(ITEM_NUM_ID, newRow); 107 XMLCUtil.getFirstText(itemNumElem).setData(Integer.toString(rowNum)); 108 109 String quantityStr = Integer.toString(quantity); 111 if (dynamic) { 112 HTMLInputElement quantityElem = (HTMLInputElement)XMLCUtil.getRequiredElementById(ITEM_QUANTITY_ID, newRow); 114 quantityElem.setName(QTY_PREFIX + item.getObjectId()); 115 quantityElem.setValue(quantityStr); 116 } else { 117 Element quantityElem = XMLCUtil.getRequiredElementById(ITEM_QUANTITY_ID, newRow); 121 if (quantityElem instanceof HTMLInputElement) { 122 Text text = htmlObj.createTextNode(quantityStr); 123 quantityElem.getParentNode().replaceChild(text, quantityElem); 124 } else { 125 XMLCUtil.getFirstText(quantityElem).setData(quantityStr); 126 } 127 } 128 129 Element itemDescElem = XMLCUtil.getRequiredElementById(ITEM_DESC_ID, newRow); 131 XMLCUtil.getFirstText(itemDescElem).setData(item.getName()); 132 133 Element itemPriceElem = XMLCUtil.getRequiredElementById("itemPrice", newRow); 135 XMLCUtil.getFirstText(itemPriceElem).setData(price.toString()); 136 137 Element itemTotalElem = XMLCUtil.getRequiredElementById("itemTotal", newRow); 139 XMLCUtil.getFirstText(itemTotalElem).setData(total.toString()); 140 141 if (dynamic) { 143 HTMLInputElement itemDeleteElem = (HTMLInputElement)XMLCUtil.getRequiredElementById("itemDelete", newRow); 144 itemDeleteElem.setName(DEL_PREFIX + item.getObjectId()); 145 } 146 return newRow; 147 } 148 149 152 private void fillInRows() { 153 154 try{ 155 Enumeration items = cart.getContents(); 156 HTMLTableRowElement costRow = htmlObj.getElementCostRow(); 157 Node parent = costRow.getParentNode(); 158 159 int rowNum = 1; 160 while (items.hasMoreElements()) { 161 HTMLTableRowElement newRow = 162 makeItemRow(rowNum++, (CartItemPair)items.nextElement()); 163 parent.insertBefore(newRow, costRow); 164 } 165 166 BigDecimal total = new BigDecimal (cart.getTotal()); 167 total = total.setScale(2, BigDecimal.ROUND_HALF_UP); 168 htmlObj.setTextCost(total.toString()); 169 } catch(NullPointerException ex) { 171 } 172 } 173 174 178 private void deleteDemoRows(Node node) { 179 if (node instanceof HTMLTableRowElement) { 180 String id = ((HTMLTableRowElement)node).getId(); 181 if ((id == null) || (id.length() == 0) || (node == protoRow)) { 182 node.getParentNode().removeChild(node); 183 } 184 } else { 185 Node child = node.getFirstChild(); 187 while (child != null) { 188 Node next = child.getNextSibling(); 189 deleteDemoRows(child); 190 child = next; 191 192 } 193 } 194 } 195 196 202 private ContentsTableFormatter(ContentsTable tableHtmlObj, Cart tableCart, 203 boolean isDynamic) { 204 htmlObj = tableHtmlObj; 205 cart = tableCart; 206 dynamic = isDynamic; 207 protoRow = htmlObj.getElementProtoRow(); 208 deleteDemoRows(htmlObj.getElementItemTable()); 209 } 210 211 214 public static void fillInTable(ContentsTable tableHtmlObj, Cart tableCart, 215 boolean isDynamic) { 216 ContentsTableFormatter table = 217 new ContentsTableFormatter(tableHtmlObj, tableCart, isDynamic); 218 table.fillInRows(); 219 } 220 } 221 | Popular Tags |