protected void formatJavCode(PsiClass cls) { if (cls == null) { return; } JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(cls.getProject()); styleManager.optimizeImports(cls.getContainingFile()); styleManager.shortenClassReferences(cls); }
protected PsiFile createFile(Project project, @NotNull PsiDirectory psiDirectory, String fileName, String context, LanguageFileType fileType) { //+ final String simpleContent = XmlSorterUtil.replaceAllByRegex(content, ">" + lineSeparator + "*\\s+?<", "><"); String replace = context.replaceAll("\r\n", "\n"); PsiFile file = psiDirectory.findFile(fileName); if (file!=null){ file.delete(); } PsiFile psiFile = PsiFileFactory.getInstance(project).createFileFromText(fileName, fileType, replace); // reformat class CodeStyleManager.getInstance(project).reformat(psiFile); if (psiFile instanceof PsiJavaFile) { JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(project); styleManager.optimizeImports(psiFile); styleManager.shortenClassReferences(psiFile); } //加载到磁盘中 psiDirectory.add(psiFile); return psiFile; }
@Override protected void run(@NotNull Result<PsiFile> result) throws Throwable { final PsiPackage packageElement = directoryService.getPackage(directory); if (packageElement == null) { throw new InvalidDirectoryException("Target directory does not provide a package"); } final String fileName = Extensions.append(name, StdFileTypes.JAVA); final PsiFile found = directory.findFile(fileName); if (found != null) { throw new ClassAlreadyExistsException("Class '" + name + "'already exists in " + packageElement.getName()); } final String packageName = packageElement.getQualifiedName(); final String className = Extensions.remove(this.name, StdFileTypes.JAVA); try { final String java = converter.convert(packageName, className, json); final PsiFile classFile = fileFactory.createFileFromText(fileName, JavaFileType.INSTANCE, java); CodeStyleManager.getInstance(classFile.getProject()).reformat(classFile); JavaCodeStyleManager.getInstance(classFile.getProject()).optimizeImports(classFile); final PsiFile created = (PsiFile) directory.add(classFile); result.setResult(created); } catch (IOException e) { throw new ClassCreationException("Failed to create new class from JSON", e); } } }