Java 类org.eclipse.emf.ecore.util.BasicFeatureMap 实例源码

项目:cda2fhir    文件:DataTypesTransformerImpl.java   
/**
 * Transforms A CDA StructDocText instance to a Java String containing the transformed text.
 * Since the method is a recursive one and handles with different types of object, parameter is taken as Object. However, parameters of type StructDocText should be given by the caller.
 * @param param A CDA StructDocText instance
 * @return A Java String containing the transformed text
 */
private String tStrucDocText2String(Object param) {
    if(param instanceof org.openhealthtools.mdht.uml.cda.StrucDocText) {
        org.openhealthtools.mdht.uml.cda.StrucDocText paramStrucDocText = (org.openhealthtools.mdht.uml.cda.StrucDocText)param;
        return "<div>" +tStrucDocText2String(paramStrucDocText.getMixed()) + "</div>";
    } 
    else if(param instanceof BasicFeatureMap) {
        String returnValue = "";
        for(Object object : (BasicFeatureMap)param){
            String pieceOfReturn = tStrucDocText2String(object);
            if(pieceOfReturn != null && !pieceOfReturn.isEmpty()) {
                returnValue = returnValue + pieceOfReturn;
            }
        }
        return returnValue;
    } 
    else if(param instanceof EStructuralFeatureImpl.SimpleFeatureMapEntry) {
        String elementBody = ((EStructuralFeatureImpl.SimpleFeatureMapEntry)param).getValue().toString();
        // deletion of unnecessary content (\n, \t)
        elementBody = elementBody.replaceAll("\n", "").replaceAll("\t", "");

        // replacement of special characters
        elementBody = elementBody.replaceAll("<","&lt;").replaceAll(">", "&gt;").replaceAll("&", "&amp;");
        // if there was a well-formed char sequence "&amp;", after replacement it will transform to &amp;amp;
        // the following line of code will remove these type of typos
        elementBody = elementBody.replaceAll("&amp;amp;", "&amp;");

        String typeName = ((EStructuralFeatureImpl.SimpleFeatureMapEntry) param).getEStructuralFeature().getName();
        typeName = typeName.toLowerCase();
        if(typeName.equals("comment")) {
            return "<!-- "+elementBody +" -->";
        } else if(typeName.equals("text")){
            return elementBody;
        } else {
            logger.warn("Unknown element type was found while transforming a StrucDocText instance to Narrative. Returning the value of the element");
            return elementBody;
        }
    } 
    else if(param instanceof EStructuralFeatureImpl.ContainmentUpdatingFeatureMapEntry) {
        EStructuralFeatureImpl.ContainmentUpdatingFeatureMapEntry entry = (EStructuralFeatureImpl.ContainmentUpdatingFeatureMapEntry)param;
        List<String> tagList = getTagsHelperForTStructDocText2String(entry);
        return tagList.get(0) + tStrucDocText2String(entry.getValue()) + tagList.get(1);
    } 
    else if(param instanceof org.eclipse.emf.ecore.xml.type.impl.AnyTypeImpl) {
        // since the name and the attributes are taken already, we just send the mixed of anyTypeImpl
        return tStrucDocText2String(((org.eclipse.emf.ecore.xml.type.impl.AnyTypeImpl)param).getMixed());
    }
    else {
        logger.warn("Parameter for the method tStrucDocText2String is unknown. Returning null", param.getClass());
        return null;
    }
}