예제 #1
0
 /**
  * The field tag is a helper, based on the spirit of Don't Repeat Yourself.
  *
  * @param args tag attributes
  * @param body tag inner body
  * @param out the output writer
  * @param template enclosing template
  * @param fromLine template line number where the tag is defined
  */
 public static void _field(
     Map<?, ?> args, Closure body, PrintWriter out, ExecutableTemplate template, int fromLine) {
   Map<String, Object> field = new HashMap<String, Object>();
   String _arg = args.get("arg").toString();
   field.put("name", _arg);
   field.put("id", _arg.replace('.', '_'));
   field.put("flash", Flash.current().get(_arg));
   field.put(
       "flashArray",
       field.get("flash") != null && !StringUtils.isEmpty(field.get("flash").toString())
           ? field.get("flash").toString().split(",")
           : new String[0]);
   field.put("error", Validation.error(_arg));
   field.put("errorClass", field.get("error") != null ? "hasError" : "");
   String[] pieces = _arg.split("\\.");
   Object obj = body.getProperty(pieces[0]);
   if (obj != null) {
     if (pieces.length > 1) {
       try {
         String path = _arg.substring(_arg.indexOf(".") + 1);
         Object value = PropertyUtils.getProperty(obj, path);
         field.put("value", value);
       } catch (Exception e) {
         // if there is a problem reading the field we dont set any value
       }
     } else {
       field.put("value", obj);
     }
   }
   body.setProperty("field", field);
   body.call();
 }
 private static void processUpdate(String type, String id, String att, String value) {
   if (type == null || type.trim().length() == 0) return;
   if ("Order".equals(type)) {
     PurchaseOrder order = PurchaseOrder.findById(new Long(id));
     if ("paid".equals(att)) {
       Boolean oldValue = order.paid;
       if (oldValue == null) oldValue = Boolean.FALSE;
       order.paid = !oldValue;
       if (oldValue) setCurrentUseCaseName("Order unpaid");
       else setCurrentUseCaseName("Order paid");
     } else if ("customer".equals(att)) {
       if (value == null
           || value.startsWith(
               "- ")) // Do nothing if somehow the "- select a customer -" item was selected
       return;
       Customer customer = Customer.findById(new Long(value));
       order.customer = customer;
       Flash.current().success("The order has been reassigned to customer " + customer.name);
       setCurrentUseCaseName("Order reassigned");
     } else if ("notes".equals(att)) {
       order.notes = value;
       setCurrentUseCaseName("Order notes updated");
     }
     order.save();
   } else if ("Customer".equals(type)) {
     Customer customer = Customer.findById(new Long(id));
     if ("creditLimit".equals(att)) {
       BigDecimal val = NumberFormat.parseMoney(value);
       customer.creditLimit = val;
       setCurrentUseCaseName("Customer credit limit updated");
     }
     customer.save();
   } else if ("LineItem".equals(type)) {
     LineItem lineitem = LineItem.findById(new Long(id));
     if ("quantity".equals(att)) {
       Integer val = NumberFormat.parseNumber(value);
       lineitem.qtyOrdered = val;
       setCurrentUseCaseName("Line Item quantity updated");
     } else if ("unitPrice".equals(att)) {
       BigDecimal val = NumberFormat.parseMoney(value);
       lineitem.productPrice = val;
       setCurrentUseCaseName("Line Item unit price updated");
     } else if ("product".equals(att)) {
       Product product = Product.findById(new Long(value));
       lineitem.product = product;
       setCurrentUseCaseName("Line Item product changed");
     }
     lineitem.save();
   }
 }