Ejemplo: uso de la transformación bidireccional en los datos de tipo DataObject

Al utilizar información que es un script de un idioma bidireccional, podría ser necesario transformar el formato de los datos. Este es un ejemplo paso a paso del código que realiza una transformación en datos de tipo DataObject.

Para IBM WebSphere Process Server, versión 6.0.0, si utiliza JDK 1.4.1 para los sistemas operativos Windows , AIX o Linux, no es necesario que instale estas clases.

El módulo requiere que la información de tipo DataObject se transforme de un formato bidireccional a otro.

Nota: Si no está familiarizado con los formatos, consulte el Valores de la serie de formato bidireccional (bi-di).
  1. Incluya todas las clases bi-di que contienen la implementación del motor bi-di.
    import com.ibm.bidiTools.bdlayout.*;
  2. Incluya todas las clases que necesite para manipular el objeto de tipo DataObject.
    import commonj.sdo.DataObject;
    import commonj.sdo.Type;
    import commonj.sdo.Property;
  3. Defina variables de tipo serie para que contengan los distintos tipos de serie que un objeto de tipo DataObject contiene. Este paso facilita el filtrado de los atributos de tipo String a la vez que recorre recursivamente el DataObject.
    String STRING_STR_TYPE = "String"; 
    String NORM_STRING_STR_TYPE = "normalizedString";
    String TOKEN_STR_TYPE = "token"; 
    String LANG_STR_TYPE = "language"; 
    String NAME_STR_TYPE = "Name"; 
    String NMTOKEN_STR_TYPE = "NMTOKEN"; 
    String NCNANE_STR_TYPE = "NCName"; 
    String ID_STR_TYPE = "ID"; 
    String IDREF_STR_TYPE = "IDREF"; 
    String IDREFS_STR_TYPE = "IDREFS"; 
    String ENTITY_STR_TYPE = "ENTITY"; 
    String ENTITIES_STR_TYPE = "ENTITIES";
  4. Defina la función que verifica si el tipo de una propiedad es String.
    private static boolean isStringFamilyType (Property property) { 
        boolean rc = false; 
        if ((property.getType().getName().equalsIgnoreCase(STRING_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NORM_STRING_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(TOKEN_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(LANG_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NAME_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NMTOKEN_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NCNANE_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(ID_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(IDREF_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(IDREFS_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(ENTITY_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(ENTITIES_STR_TYPE))) 
           rc = true; 
         return rc; 
    }
  5. Defina la función recursiva que aplica la transformación bi-di en todo el DataObject.
    Nota: A continuación se describen las suposiciones básicas que se siguen en la lógica del código.
    • Se aplica la transformación bi-di en propiedades de tipo String únicamente
    • Las propiedades de tipo serie del DataObject se almacenan en un formato bi-di
    DataObject BiDiDataObjTransformationBO(DataObject boIn, String formatIn, String formatOut){ 
    
       Type type; 
       Property property; 
    
       if (boIn == null) return null; 
    
       type = boIn.getType(); 
       List propertyList = type.getProperties(); 
       for (int propertyNumber = 0; propertyNumber < propertyList.size(); propertyNumber++){ 
             property = (Property) propertyList.get(propertyNumber); 
             String propertyName = property.getName();
    1. Omita todas las propiedades que no sean de tipo String.
             if (!isStringFamilyType(property)) 
                                           continue;
      
             if (property.isContainment()) { 
                  if (property.isMany()) { 
                        List childsList = boIn.getList(property); 
    2. Llame recursivamente a la transformación para gestionar los objetos hijo.
       
                        for (int childNumber = 0; childNumber < childsList.size(); 
      		   childNumber++){                   BiDiDataObjTransformationBO(connectionContext, 
      											 ((DataObject)childsList.get(childNumber)),formatIn, formatOut); 
                    } 
                } else {
    3. Llame recursivamente a la transformación para gestionar los objetos hijo de los objetos de empresa contenidos.
                    BiDiDataObjTransformationBO(connectionContext, 
      			            ((DataObject)boIn.get(property)),formatIn, formatOut); 
               } 
           } else {
    4. Transforme los atributos de tipo string sencillos.
               String str = BiDiStringTransformation(
                   (boIn.getString(propertyName),formatIn, formatOut); 
               boIn.setString(propertyName, str); 
           } 
         } 
         return boIn; 
      }

Condiciones de uso |

Última actualización: Wed Apr 19 21:42:44 2006

(c) Copyright IBM Corporation 2005, 2006.
Este centro de información está basado en tecnología Eclipse (http://www.eclipse.org)