양방향 언어 스크립트의 정보를 사용하는 경우, 데이터 형식을 변환할 필요가 있습니다. 다음은 DataObject 유형 데이터의 변환을 수행하는 단계적인 코드의 예입니다.
모듈은 DataObject 유형 정보가 한 양방향 형식에서 다른 양방향 형식으로 변환될 것을 요구합니다.
import com.ibm.bidiTools.bdlayout.*;
import commonj.sdo.DataObject; import commonj.sdo.Type; import commonj.sdo.Property;
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";
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; }
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();
if (!isStringFamilyType(property)) continue; if (property.isContainment()) { if (property.isMany()) { List childsList = boIn.getList(property);
for (int childNumber = 0; childNumber < childsList.size(); childNumber++){ BiDiDataObjTransformationBO(connectionContext, ((DataObject)childsList.get(childNumber)),formatIn, formatOut); } } else {
BiDiDataObjTransformationBO(connectionContext, ((DataObject)boIn.get(property)),formatIn, formatOut); } } else {
String str = BiDiStringTransformation( (boIn.getString(propertyName),formatIn, formatOut); boIn.setString(propertyName, str); } } return boIn; }
ⓒ Copyright IBM Corporation 2005, 2006.
이 Information Center는 Eclipse 기술을 기반으로 합니다. (http://www.eclipse.org)