package org.overture.ide.ui.templates; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.overture.ast.definitions.AExplicitFunctionDefinition; import org.overture.ast.definitions.AExplicitOperationDefinition; import org.overture.ast.definitions.AImplicitFunctionDefinition; import org.overture.ast.definitions.AImplicitOperationDefinition; import org.overture.ast.patterns.APatternListTypePair; import org.overture.ast.patterns.PPattern; public class VdmOperationCompletionExtractor { private static VdmCompletionHelper VdmHelper = new VdmCompletionHelper(); public String[] explicitOperationNameExtractor(AExplicitOperationDefinition node){ String[] functionName = new String[2]; String[] SplitName = (node.getName().toString()).split("\\("); functionName[0] = SplitName[0]; if(functionName[0] != null && !functionName[0].isEmpty()){ functionName[1] = functionName[0] + "("; //ReplacemestString } List<String> parameterNameList = null; parameterNameList = explicitOperationParameterNameExtractor(node); return VdmHelper.templatePatternGenerator(parameterNameList,functionName); } public String[] implicitOperationNameExtractor(AImplicitOperationDefinition node){ String[] functionName = new String[2]; String[] SplitName = (node.getName().toString()).split("\\("); functionName[0] = SplitName[0]; if(functionName[0] != null && !functionName[0].isEmpty()){ functionName[1] = functionName[0] + "("; //ReplacemestString } List<String> parameterNameList = null; parameterNameList = implicitOperationParameterNameExtractor(node); return VdmHelper.templatePatternGenerator(parameterNameList,functionName); } public List<String> explicitOperationParameterNameExtractor(AExplicitOperationDefinition node) { List<String> parameterNameList = new ArrayList<String>(); LinkedList<PPattern> strList = node.getParameterPatterns(); for(int i = 0;i < strList.size(); i++){ parameterNameList.add(strList.get(i).toString()); } return parameterNameList; } public List<String> implicitOperationParameterNameExtractor(AImplicitOperationDefinition node) { List<String> parameterNameList = new ArrayList<String>(); LinkedList<APatternListTypePair> strList = node.getParameterPatterns(); for(int i = 0;i < strList.size(); i++){ parameterNameList.add(strList.get(i).getPatterns().getFirst().toString()); } return parameterNameList; } }