martes, 29 de abril de 2014

limpiando elementos de un nodo en webdynpro java

Otro dia de laburo, esperando la hora de almuerzo mientras mis colegas terminan sus labores
asi que pongo esto que me toco realizar, es un codigo simple para limpiar un elemento en webDynpro java sin usar el invalidate del nodo,

      /**  
       * Limpia un elemento  
       * @param messageManager  
       * @param p_element  
       * @param p_nodeInfo  
       */  
      public void limpiarElemento(  
           IWDMessageManager messageManager,  
           com.sap.tc.webdynpro.progmodel.api.IWDNodeElement p_element,  
           IWDNodeInfo p_nodeInfo) {  
           if (p_element != null) {  
                for (Iterator iter = p_nodeInfo.iterateAttributes(); iter.hasNext();) {  
                     IWDAttributeInfo element = (IWDAttributeInfo) iter.next();  
                     String name = element.getName();  
                     //se verifica si es una estructura (nodo en el nodo)  
                     boolean isBoolean = BuiltInTypeEnum.TYPE_BOOLEAN.equals(element.getSimpleType().getBuiltInTypeEnum());  
                     if (isBoolean) {  
                          p_element.setAttributeValue(name, Boolean.FALSE);  
                     } else if (!element.getDataType().isStructure()) {  
                          p_element.setAttributeValue(name, null);  
                     }  
                }  
                IWDNode nodoPadre = p_element.node();  
                //se recorren nodos hijos para su inicializacion  
                for (Iterator iter = p_nodeInfo.iterateChildren(); iter.hasNext();) {  
                     IWDNodeInfo element = (IWDNodeInfo) iter.next();  
                     IWDNode nodo = nodoPadre.getChildNode(element.getName(), IWDNode.LEAD_SELECTION);  
                     if (!nodo.isEmpty()) {  
                          try {  
                               nodo.setLeadSelection(-1);  
                          } catch (RuntimeException e) {  
                               messageManager.reportWarning("error: " + e.getMessage());  
                               messageManager.reportWarning(this.getStackTrace(e));  
                               //si no se puede seleccionar, se deja tal cual :S  
                          }  
                     }  
                }  
           }  
      }  

formatiado con http://codeformatter.blogspot.com/ :)