IDEA-88147 Add PROJECT_NAME variable to file templates

This commit is contained in:
peter
2012-07-03 16:20:43 +02:00
parent 7df170831b
commit 3b176ae6aa
18 changed files with 60 additions and 25 deletions
@@ -49,11 +49,11 @@ import java.util.regex.Pattern;
public class FileHeaderChecker {
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInspection.defaultFileTemplateUsage.FileHeaderChecker");
static ProblemDescriptor checkFileHeader(final PsiFile file, final InspectionManager manager, boolean onTheFly) {
static ProblemDescriptor checkFileHeader(@NotNull final PsiFile file, final InspectionManager manager, boolean onTheFly) {
FileTemplate template = FileTemplateManager.getInstance().getDefaultTemplate(FileTemplateManager.FILE_HEADER_TEMPLATE_NAME);
TIntObjectHashMap<String> offsetToProperty = new TIntObjectHashMap<String>();
String templateText = template.getText().trim();
String regex = templateToRegex(templateText, offsetToProperty);
String regex = templateToRegex(templateText, offsetToProperty, file.getProject());
regex = StringUtil.replace(regex, "with", "(?:with|by)");
regex = ".*("+regex+").*";
String fileText = file.getText();
@@ -144,9 +144,9 @@ public class FileHeaderChecker {
return new LocalQuickFix[]{replaceTemplateFix,editFileTemplateFix};
}
private static String templateToRegex(final String text, TIntObjectHashMap<String> offsetToProperty) {
private static String templateToRegex(final String text, TIntObjectHashMap<String> offsetToProperty, Project project) {
String regex = text;
@NonNls Collection<String> properties = new ArrayList<String>((Collection)FileTemplateManager.getInstance().getDefaultProperties().keySet());
@NonNls Collection<String> properties = new ArrayList<String>((Collection)FileTemplateManager.getInstance().getDefaultProperties(project).keySet());
properties.add("PACKAGE_NAME");
regex = escapeRegexChars(regex);
@@ -120,7 +120,7 @@ public class JavaDirectoryServiceImpl extends CoreJavaDirectoryService {
FileTemplate template = FileTemplateManager.getInstance().getInternalTemplate(templateName);
Properties defaultProperties = FileTemplateManager.getInstance().getDefaultProperties();
Properties defaultProperties = FileTemplateManager.getInstance().getDefaultProperties(dir.getProject());
Properties properties = new Properties(defaultProperties);
properties.setProperty(FileTemplate.ATTRIBUTE_NAME, name);
@@ -187,14 +187,14 @@ public class CreateClassUtil {
}
@Nullable
public static PsiClass createClassNamed(String newClassName, String templateName, PsiDirectory directory) throws IncorrectOperationException {
return createClassNamed(newClassName, new Properties(FileTemplateManager.getInstance().getDefaultProperties()), templateName, directory);
public static PsiClass createClassNamed(String newClassName, String templateName, @NotNull PsiDirectory directory) throws IncorrectOperationException {
return createClassNamed(newClassName, FileTemplateManager.getInstance().getDefaultProperties(directory.getProject()), templateName, directory);
}
@Nullable
public static PsiClass createClassNamed(String newClassName, Map classProperties, String templateName, PsiDirectory directory)
public static PsiClass createClassNamed(String newClassName, Map classProperties, String templateName, @NotNull PsiDirectory directory)
throws IncorrectOperationException {
Properties defaultProperties = FileTemplateManager.getInstance().getDefaultProperties();
Properties defaultProperties = FileTemplateManager.getInstance().getDefaultProperties(directory.getProject());
Properties properties = new Properties(defaultProperties);
properties.putAll(classProperties);
@@ -235,7 +235,7 @@ public class CreateClassUtil {
try {
final Properties properties = ApplicationManager.getApplication().isUnitTestMode() ?
new Properties() :
FileTemplateManager.getInstance().getDefaultProperties();
FileTemplateManager.getInstance().getDefaultProperties(classDirectory.getProject());
return createClassNamed(className, new Properties(properties), templateName, classDirectory);
}
catch (IncorrectOperationException e) {