// Copyright 2006-2012 AdvancedTools. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.advancedtools.cpp.utils; import com.advancedtools.cpp.sdk.CppModuleBuilder; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import java.io.IOException; import java.io.OutputStream; import java.io.StringBufferInputStream; import java.util.Properties; /** * @author maxim */ public class TemplateUtils { public static final String MAKEFILE_TEMPLATE_NAME = "Makefile"; public static final String C_MAIN_TEMPLATE_NAME = "C_Main"; public static final String CPP_MAIN_TEMPLATE_NAME = "Cpp_Main"; public static String getTemplateText(String fileName, String ... additionalParameters) throws IOException { Properties properties = FileTemplateManager.getInstance().getDefaultProperties(); if (additionalParameters != null) { for(int i = 0; i < additionalParameters.length; ++i) { String paramName = additionalParameters[i]; if (i + 1 < additionalParameters.length) { ++i; properties.put(paramName, additionalParameters[i]); } } } final FileTemplate fileTemplate = FileTemplateManager.getInstance().getTemplate(fileName); assert fileTemplate != null; String text = fileTemplate.getText(properties); return text; } public static void createOrResetFileContent(VirtualFile sourcePathDir, String fileName, StringBufferInputStream inputStream) throws IOException { VirtualFile child = sourcePathDir.findChild(fileName); if (child == null) child = sourcePathDir.createChildData(CppModuleBuilder.class, fileName); OutputStream outputStream = child.getOutputStream(CppModuleBuilder.class); FileUtil.copy(inputStream, outputStream); outputStream.flush(); outputStream.close(); } public static void createOrResetFileContentFromTemplate(VirtualFile sourcePathDir, String fileName, String templateFileName, String ... additionalParameters) { try { createOrResetFileContent(sourcePathDir, fileName, new StringBufferInputStream(getTemplateText(templateFileName, additionalParameters))); } catch (IOException ex) { ex.printStackTrace(); } } }