You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Midhat Ali <mi...@gmail.com> on 2006/07/22 10:00:46 UTC

Problem while customizing BOMNode.java

I modified the BOMNode.java to customize for our requirements. The file
compiles successfully, When i run a BOM simulation, it shows:

 org.ofbiz.webapp.event.EventHandlerException: Service invocation error
(null)

I added a rate field to BOMNode.java and modiied the loadChildren() method
as follows :

protected void loadChildren(String partBomTypeId, Date inDate, List
productFeatures, int type) throws GenericEntityException {
        if (product == null) {
            throw new GenericEntityException("product is null");
        }
        // If the date is null, set it to today.
        if (inDate == null) inDate = new Date();
        bomTypeId = partBomTypeId;
//        GenericDelegator delegator = product.getDelegator();
        List rows = delegator.findByAnd("ProductAssoc",
                                            UtilMisc.toMap("productId",
product.get("productId"),
                                                       "productAssocTypeId",
partBomTypeId),
                                            UtilMisc.toList("sequenceNum"));
        rows = EntityUtil.filterByDate(rows, inDate);
        if ((rows == null || rows.size() == 0) && substitutedNode != null) {
            // If no child is found and this is a substituted node
            // we try to search for substituted node's children.
            rows = delegator.findByAnd("ProductAssoc",
                                        UtilMisc.toMap("productId",
substitutedNode.getProduct().get("productId"),
                                                       "productAssocTypeId",
partBomTypeId),
                                        UtilMisc.toList("sequenceNum"));
            rows = EntityUtil.filterByDate(rows, inDate);
        }
        children = new ArrayList(rows);
        childrenNodes = new ArrayList();
        Iterator childrenIterator = children.iterator();
        GenericValue oneChild = null;
        BOMNode oneChildNode = null;
        while(childrenIterator.hasNext()) {
            oneChild = (GenericValue)childrenIterator.next();
            // Configurator
            oneChildNode = configurator(oneChild, productFeatures,
getRootNode().getProductForRules(), inDate);
            // If the node is null this means that the node has been
discarded by the rules.
            if (oneChildNode != null) {
                oneChildNode.setParentNode(this);
                switch (type) {
                    case BOMTree.EXPLOSION:
                        oneChildNode.loadChildren(partBomTypeId, inDate,
productFeatures, BOMTree.EXPLOSION);
                    break;
                    case BOMTree.EXPLOSION_MANUFACTURING:
                        if (!oneChildNode.isWarehouseManaged()) {
                            oneChildNode.loadChildren(partBomTypeId, inDate,
productFeatures, type);
                        }
                    break;
                }
            }
            childrenNodes.add(oneChildNode);
        }
        //-----Comment By: Midhat Ali. Customization Start Here -------
        HashMap conditions=new HashMap();
        conditions.put("PRODUCT_ID",this.product);
        List costs=null;
        GenericValue costComp=null;
        if (childrenNodes.isEmpty())
        {
            costs=delegator.findByAnd("CostComponent",conditions);
            Iterator costIterator=costs.iterator();
            while(costIterator.hasNext())
            {
                costComp=(GenericValue)costIterator.next();
                rate+=Double.parseDouble(costComp.get("cost").toString());
            }

        }
        else
        {
            childrenIterator=childrenNodes.iterator();
            while(childrenIterator.hasNext())
            {
                oneChild=(GenericValue)childrenIterator.next();
                rate+=Double.parseDouble(oneChild.get("rate").toString());
            }

        }
        //-----Comment By: Midhat Ali. Customization Ends Here -------

    }

Please help