/* * Copyright 2013-2014 Grzegorz Ligas <ligasgr@gmail.com> and other contributors * (see the CONTRIBUTORS file). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.intellij.xquery.psi; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFileFactory; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.LocalTimeCounter; import org.intellij.xquery.XQueryFileType; /** * User: ligasgr * Date: 08/06/13 * Time: 22:01 */ public class XQueryElementFactory { public static XQueryFile createFile(Project project, String text) { String name = "dummy.xq"; return (XQueryFile) PsiFileFactory.getInstance(project). createFileFromText(name, XQueryFileType.INSTANCE, text); } public static XQueryFile createPhysicalFile(Project project, String text) { String name = "dummy.xq"; return (XQueryFile) PsiFileFactory.getInstance(project). createFileFromText(name, XQueryFileType.INSTANCE, text, LocalTimeCounter.currentTime(), true); } public static XQueryVarName createVariableReference(Project project, String localVariableName) { final XQueryFile file = createFile(project, "$" + localVariableName); return PsiTreeUtil.findChildOfType(file, XQueryVarName.class); } public static XQueryVarName createVariableReference(Project project, String namespaceName, String localVariableName) { final XQueryFile file = createFile(project, "$" + namespaceName + ":" + localVariableName); return PsiTreeUtil.findChildOfType(file, XQueryVarName.class); } public static XQueryVarDecl createVariableDeclaration(Project project, String namespaceName, String variableName) { final XQueryFile file = createFile(project, "declare variable $" + namespaceName + ":" + variableName + " := " + "'value';"); return PsiTreeUtil.findChildOfType(file, XQueryVarDecl.class); } public static XQueryNamespacePrefix createModuleDeclarationName(Project project, String name) { final XQueryFile file = createFile(project, "module namespace " + name + " = 'dummy';"); return PsiTreeUtil.findChildOfType(file, XQueryNamespacePrefix.class); } public static XQueryModuleImportPath createImportPath(Project project, String wholePathWithAposOrQuote) { final XQueryFile file = createFile(project, "import module namespace dummy = " + wholePathWithAposOrQuote + ";"); return PsiTreeUtil.findChildOfType(file, XQueryModuleImportPath.class); } public static XQueryNamespaceDecl createNamespaceDeclaration(Project project, String namespaceName) { final XQueryFile file = createFile(project, "declare namespace " + namespaceName + " = 'dummy';"); return PsiTreeUtil.findChildOfType(file, XQueryNamespaceDecl.class); } public static XQueryFunctionName createFunctionReference(Project project, String namespaceName, String functionName) { final XQueryFile file = createFile(project, namespaceName + ":" + functionName + "()"); return PsiTreeUtil.findChildOfType(file, XQueryFunctionName.class); } public static XQueryFunctionDecl createFunctionDeclaration(Project project, String namespaceName, String functionName) { final XQueryFile file = createFile(project, "declare function " + namespaceName + ":" + functionName + "" + "($param) {()};"); return PsiTreeUtil.findChildOfType(file, XQueryFunctionDecl.class); } public static XQueryXmlEmptyTag createXmlTag(Project project, String namespaceName, String tagName) { final XQueryFile file = createFile(project, "<" + namespaceName + ":" + tagName + "/>"); return PsiTreeUtil.findChildOfType(file, XQueryXmlEmptyTag.class); } public static XQueryDirAttributeName createAttributeName(Project project, String namespaceName, String attributeName) { final XQueryFile file = createFile(project, "<abc " + namespaceName + ":" + attributeName + "='def'/>"); return PsiTreeUtil.findChildOfType(file, XQueryDirAttributeName.class); } }