package com.github.setial.intellijjavadocs.generator.impl;
import com.github.setial.intellijjavadocs.model.JavaDoc;
import com.github.setial.intellijjavadocs.model.settings.JavaDocSettings;
import com.github.setial.intellijjavadocs.model.settings.Level;
import com.github.setial.intellijjavadocs.utils.JavaDocUtils;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiClass;
import freemarker.template.Template;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
/**
* The type Class java doc generator.
*
* @author Sergey Timofiychuk
*/
public class ClassJavaDocGenerator extends AbstractJavaDocGenerator<PsiClass> {
/**
* Instantiates a new Class java doc generator.
*
* @param project the Project
*/
public ClassJavaDocGenerator(@NotNull Project project) {
super(project);
}
@Nullable
@Override
protected JavaDoc generateJavaDoc(@NotNull PsiClass element) {
JavaDocSettings configuration = getSettings().getConfiguration();
if ((configuration != null && !configuration.getGeneralSettings().getLevels().contains(Level.TYPE)) ||
!shouldGenerate(element.getModifierList())) {
return null;
}
Template template = getDocTemplateManager().getClassTemplate(element);
Map<String, Object> params = getDefaultParameters(element);
if (!configuration.getGeneralSettings().isSplittedClassName()) {
params.put("name", element.getName());
}
String javaDocText = getDocTemplateProcessor().merge(template, params);
return JavaDocUtils.toJavaDoc(javaDocText, getPsiElementFactory());
}
}