Search in sources :

Example 1 with ParamTag

use of com.dexels.navajo.document.navascript.tags.ParamTag in project navajo by Dexels.

the class NS3ToNSXML method parseInnerBody.

private List<NS3Compatible> parseInnerBody(NS3Compatible parent, XMLElement currentXML) throws Exception {
    currentXML.setAttribute("PROCESSED", "true");
    List<NS3Compatible> bodyElts = new ArrayList<>();
    Vector<XMLElement> children = currentXML.getChildren();
    for (XMLElement child : children) {
        String name = child.getName();
        String content = (child.getContent() != null && !"".equals(child.getContent()) ? child.getContent() : null);
        if (name.equals("Print")) {
            DebugTag pt = parsePrint(parent, child);
            bodyElts.add(pt);
        }
        if (name.equals("Log")) {
            LogTag pt = parseLog(parent, child);
            bodyElts.add(pt);
        }
        if (name.equals("Property")) {
            NS3Compatible pt = parseProperty(parent, child);
            bodyElts.add(pt);
        }
        if (name.equals("Option")) {
            // Find type of option: name, value or selected
            NS3Compatible pt = parseProperty(parent, child);
            bodyElts.add(pt);
        }
        if (name.equals("Map")) {
            MapTag mt = parseMap(parent, child);
            bodyElts.add(mt);
        }
        if (name.equals("Var")) {
            ParamTag pt = parseVar(parent, child);
            bodyElts.add(pt);
        }
        if (name.equals("Break")) {
            BreakTag mt = parseBreak(parent, child);
            bodyElts.add(mt);
        }
        if (name.equals("Include")) {
            IncludeTag mt = parseInclude(parent, child);
            bodyElts.add(mt);
        }
        if (name.equals("Message")) {
            MessageTag pt = parseMessage(parent, child);
            bodyElts.add(pt);
        }
        if (name.equals("Synchronized")) {
            SynchronizedTag st = parseSynchronizedBlock(parent, child);
            bodyElts.add(st);
        }
        if (name.equals("ConditionalEmptyMessage")) {
            BlockTag pt = parseConditionalBlock(parent, child, true);
            bodyElts.add(pt);
        }
        if (name.equals("TopLevelStatement")) {
            bodyElts.addAll(parseInnerBody(parent, child));
        }
        if (name.equals("MethodOrSetter")) {
            MapTag parentMap = findClosestMapTag(parent, "");
            FieldTag ft = parseMethodOrSetter(parentMap, child);
            bodyElts.add(ft);
        }
        if (name.equals("Loop")) {
            LoopTag mt = parseLoop(parent, child);
            bodyElts.add(mt);
        }
    }
    return bodyElts;
}
Also used : ParamTag(com.dexels.navajo.document.navascript.tags.ParamTag) LoopTag(com.dexels.navajo.document.navascript.tags.LoopTag) DebugTag(com.dexels.navajo.document.navascript.tags.DebugTag) ArrayList(java.util.ArrayList) LogTag(com.dexels.navajo.document.navascript.tags.LogTag) CaseSensitiveXMLElement(com.dexels.navajo.document.nanoimpl.CaseSensitiveXMLElement) XMLElement(com.dexels.navajo.document.nanoimpl.XMLElement) BreakTag(com.dexels.navajo.document.navascript.tags.BreakTag) NS3Compatible(com.dexels.navajo.document.navascript.tags.NS3Compatible) MapTag(com.dexels.navajo.document.navascript.tags.MapTag) BlockTag(com.dexels.navajo.document.navascript.tags.BlockTag) IncludeTag(com.dexels.navajo.document.navascript.tags.IncludeTag) MessageTag(com.dexels.navajo.document.navascript.tags.MessageTag) FieldTag(com.dexels.navajo.document.navascript.tags.FieldTag) SynchronizedTag(com.dexels.navajo.document.navascript.tags.SynchronizedTag)

Example 2 with ParamTag

use of com.dexels.navajo.document.navascript.tags.ParamTag in project navajo by Dexels.

the class NS3ToNSXML method parseVarArrayElement.

private ParamTag parseVarArrayElement(ParamTag parent, XMLElement currentXML) throws Exception {
    ParamTag paramElt = new ParamTag(myNavascript);
    paramElt.setType(Message.MSG_TYPE_ARRAY_ELEMENT);
    Vector<XMLElement> children = currentXML.getChildren();
    for (XMLElement child : children) {
        String name = child.getName();
        if (name.equals("Var")) {
            ParamTag pt = parseVar(paramElt, child);
            paramElt.addParam(pt);
        }
    }
    return paramElt;
}
Also used : ParamTag(com.dexels.navajo.document.navascript.tags.ParamTag) CaseSensitiveXMLElement(com.dexels.navajo.document.nanoimpl.CaseSensitiveXMLElement) XMLElement(com.dexels.navajo.document.nanoimpl.XMLElement)

Example 3 with ParamTag

use of com.dexels.navajo.document.navascript.tags.ParamTag in project navajo by Dexels.

the class NS3ToNSXML method parseProperty.

private NS3Compatible parseProperty(NS3Compatible parent, XMLElement currentXML) throws Exception {
    currentXML.setAttribute("PROCESSED", "true");
    PropertyTag pt = new PropertyTag(myNavascript);
    pt.addParent(parent);
    Vector<XMLElement> children = currentXML.getChildren();
    for (XMLElement child : children) {
        String name = child.getName();
        String content = (child.getContent() != null && !"".equals(child.getContent()) ? child.getContent() : null);
        if (name.equals("TOKEN")) {
            if (content.equals("value")) {
                pt.setName("value");
            }
            if (content.equals("name")) {
                pt.setName("name");
            }
            if (content.equals("selected")) {
                pt.setName("selected");
            }
        }
        if (name.equals("Conditional")) {
            ConditionFragment currentFragment = new ConditionFragment();
            consumeContent(currentFragment, child);
            pt.setCondition(currentFragment.consumedFragment());
        }
        if (name.equals("PropertyName")) {
            pt.setName(content);
        }
        if (name.equals("PropertyArguments")) {
            parsePropertyArguments(pt, child);
        }
        if (name.equals("ConditionalExpressions")) {
            List<ExpressionTag> expressions = parseConditionalExpressions(pt, child);
            for (ExpressionTag et : expressions) {
                pt.addExpression(et);
            }
        }
        if (name.equals("StringConstant")) {
            String c = content.replaceAll("\"", "");
            ExpressionTag et = new ExpressionTag(myNavascript);
            et.setConstant(c);
            pt.addExpression(et);
        }
        if (name.equals("MappedArrayFieldSelection")) {
            MapTag maf = parseMappedArrayField(parent, child);
            pt.addMap(maf);
        }
        if (name.equals("MappedArrayMessageSelection")) {
            MapTag maf = parsedMappedArrayMessage(parent, child);
            pt.addMap(maf);
        }
        // Use SelectionMap in combination with a param array message to support this construction in navascript XML.
        if (name.equals("SelectionArray")) {
            // Create param array
            ParamTag paramtag = new ParamTag(myNavascript);
            paramtag.setType(Message.MSG_TYPE_ARRAY);
            paramtag.setName(randomParamName(pt.getName() + "_selections"));
            myNavascript.addParam(paramtag);
            // Create com.dexels.navajo.adapter.SelectionMap
            MapTag mt = new MapTag(myNavascript);
            mt.setObject("com.dexels.navajo.adapter.SelectionMap");
            mt.setOldStyleMap(true);
            FieldTag fieldOptions = new FieldTag(mt);
            fieldOptions.setFieldName("options");
            fieldOptions.setOldSkool(true);
            MapTag mappedOptions = new MapTag(myNavascript);
            fieldOptions.addMap(mappedOptions);
            mappedOptions.setOldStyleMap(true);
            mappedOptions.setRefAttribute("[/@" + paramtag.getName() + "]");
            // Add name, value, selected
            FieldTag nameField = new FieldTag(mappedOptions);
            nameField.setOldSkool(true);
            nameField.setFieldName("optionName");
            mappedOptions.addField(nameField);
            nameField.addExpression(null, "[name]");
            FieldTag valueField = new FieldTag(mappedOptions);
            valueField.setOldSkool(true);
            valueField.setFieldName("optionValue");
            mappedOptions.addField(valueField);
            valueField.addExpression(null, "[value]");
            FieldTag selectedField = new FieldTag(mappedOptions);
            selectedField.setOldSkool(true);
            selectedField.setFieldName("optionSelected");
            mappedOptions.addField(selectedField);
            selectedField.addExpression(null, "[selected]");
            // add options field to map
            mt.addField(fieldOptions);
            // add property to selectionmap
            mt.addProperty(pt);
            MapTag refOptions = new MapTag(myNavascript);
            refOptions.setOldStyleMap(true);
            refOptions.setRefAttribute("options");
            pt.addMap(refOptions);
            PropertyTag nameProp = new PropertyTag(myNavascript);
            nameProp.setName("name");
            nameProp.addExpression(null, "$optionName");
            refOptions.addProperty(nameProp);
            PropertyTag valueProp = new PropertyTag(myNavascript);
            valueProp.setName("value");
            valueProp.addExpression(null, "$optionValue");
            refOptions.addProperty(valueProp);
            PropertyTag selectedProp = new PropertyTag(myNavascript);
            selectedProp.setName("selected");
            selectedProp.addExpression(null, "$optionSelected");
            refOptions.addProperty(selectedProp);
            // Fetch the array elements to construct a param array message to store them.
            parseSelectionArrayElements(paramtag, mt, child);
            // Return the map instead of the property.
            return mt;
        }
    }
    return pt;
}
Also used : PropertyTag(com.dexels.navajo.document.navascript.tags.PropertyTag) ParamTag(com.dexels.navajo.document.navascript.tags.ParamTag) ExpressionTag(com.dexels.navajo.document.navascript.tags.ExpressionTag) FieldTag(com.dexels.navajo.document.navascript.tags.FieldTag) CaseSensitiveXMLElement(com.dexels.navajo.document.nanoimpl.CaseSensitiveXMLElement) XMLElement(com.dexels.navajo.document.nanoimpl.XMLElement) MapTag(com.dexels.navajo.document.navascript.tags.MapTag)

Example 4 with ParamTag

use of com.dexels.navajo.document.navascript.tags.ParamTag in project navajo by Dexels.

the class NS3ToNSXML method parseVar.

private ParamTag parseVar(NS3Compatible parent, XMLElement currentXML) throws Exception {
    // Conditional -> VarName -> "=" OR ":" -> ConditionalExpressions
    Vector<XMLElement> children = currentXML.getChildren();
    ParamTag paramTag = new ParamTag(myNavascript);
    paramTag.addParent(parent);
    currentXML.setAttribute("PROCESSED", "true");
    for (XMLElement child : children) {
        String name = child.getName();
        String content = (child.getContent() != null && !"".equals(child.getContent()) ? child.getContent() : null);
        if (name.equals("VarName")) {
            paramTag.setName(content);
        }
        if (name.equals("VarArguments")) {
            parseVarArguments(paramTag, child);
        }
        if (name.equals("Conditional")) {
            ConditionFragment currentFragment = new ConditionFragment();
            consumeContent(currentFragment, child);
            paramTag.setCondition(currentFragment.consumedFragment());
        }
        if (name.equals("ConditionalExpressions")) {
            List<ExpressionTag> expressions = parseConditionalExpressions(paramTag, child);
            for (ExpressionTag et : expressions) {
                paramTag.addExpression(et);
            }
        }
        if (name.equals("MappedArrayField")) {
            // <map ref="$"
            MapTag maf = parseMappedArrayField(findClosestMapTag(parent, ""), child);
            paramTag.addMap(maf);
        }
        if (name.equals("MappedArrayMessage")) {
            MapTag mt = parsedMappedArrayMessage(parent, child);
            paramTag.addMap(mt);
        }
        if (name.equals("VarArray")) {
            paramTag.setType(Message.MSG_TYPE_ARRAY);
            Vector<XMLElement> paramChildren = child.getChildren();
            for (XMLElement paramChild : paramChildren) {
                if (paramChild.getName().equals("VarArrayElement")) {
                    ParamTag paramElt = parseVarArrayElement(paramTag, paramChild);
                    paramElt.setName(paramTag.getName());
                    paramTag.addParam(paramElt);
                }
            }
        }
    }
    return paramTag;
}
Also used : ParamTag(com.dexels.navajo.document.navascript.tags.ParamTag) ExpressionTag(com.dexels.navajo.document.navascript.tags.ExpressionTag) CaseSensitiveXMLElement(com.dexels.navajo.document.nanoimpl.CaseSensitiveXMLElement) XMLElement(com.dexels.navajo.document.nanoimpl.XMLElement) MapTag(com.dexels.navajo.document.navascript.tags.MapTag)

Example 5 with ParamTag

use of com.dexels.navajo.document.navascript.tags.ParamTag in project navajo by Dexels.

the class NS3ToNSXML method parseOptionElement.

private void parseOptionElement(ParamTag ft, XMLElement currentXML) {
    Vector<XMLElement> children = currentXML.getChildren();
    ParamTag pt = null;
    for (XMLElement child : children) {
        String name = child.getName();
        String content = (child.getContent() != null && !"".equals(child.getContent()) ? child.getContent() : null);
        if (name.equals("TOKEN") && (content.equals("name") || content.equals("value") || content.equals("selected"))) {
            pt = new ParamTag(myNavascript);
            pt.setName(content);
            ft.addParam(pt);
        }
        if (name.equals("ConditionalExpressions")) {
            List<ExpressionTag> expressions = parseConditionalExpressions(pt, child);
            for (ExpressionTag et : expressions) {
                pt.addExpression(et);
            }
        }
    }
}
Also used : ParamTag(com.dexels.navajo.document.navascript.tags.ParamTag) ExpressionTag(com.dexels.navajo.document.navascript.tags.ExpressionTag) CaseSensitiveXMLElement(com.dexels.navajo.document.nanoimpl.CaseSensitiveXMLElement) XMLElement(com.dexels.navajo.document.nanoimpl.XMLElement)

Aggregations

ParamTag (com.dexels.navajo.document.navascript.tags.ParamTag)8 CaseSensitiveXMLElement (com.dexels.navajo.document.nanoimpl.CaseSensitiveXMLElement)7 XMLElement (com.dexels.navajo.document.nanoimpl.XMLElement)7 MapTag (com.dexels.navajo.document.navascript.tags.MapTag)5 ExpressionTag (com.dexels.navajo.document.navascript.tags.ExpressionTag)4 BlockTag (com.dexels.navajo.document.navascript.tags.BlockTag)3 BreakTag (com.dexels.navajo.document.navascript.tags.BreakTag)3 DebugTag (com.dexels.navajo.document.navascript.tags.DebugTag)3 FieldTag (com.dexels.navajo.document.navascript.tags.FieldTag)3 IncludeTag (com.dexels.navajo.document.navascript.tags.IncludeTag)3 LogTag (com.dexels.navajo.document.navascript.tags.LogTag)3 MessageTag (com.dexels.navajo.document.navascript.tags.MessageTag)3 SynchronizedTag (com.dexels.navajo.document.navascript.tags.SynchronizedTag)3 DefineTag (com.dexels.navajo.document.navascript.tags.DefineTag)2 FinallyTag (com.dexels.navajo.document.navascript.tags.FinallyTag)2 LoopTag (com.dexels.navajo.document.navascript.tags.LoopTag)2 MethodsTag (com.dexels.navajo.document.navascript.tags.MethodsTag)2 PropertyTag (com.dexels.navajo.document.navascript.tags.PropertyTag)2 BaseNode (com.dexels.navajo.document.base.BaseNode)1 CheckTag (com.dexels.navajo.document.navascript.tags.CheckTag)1