package org.netbeans.gradle.project.query; import java.nio.charset.Charset; import java.util.Collections; import java.util.Map; import java.util.TreeMap; import org.jtrim.utils.ExceptionHelper; import org.netbeans.api.templates.CreateDescriptor; import org.netbeans.api.templates.CreateFromTemplateAttributes; import org.netbeans.gradle.project.NbGradleProject; import org.netbeans.gradle.project.license.LicenseHeaderInfo; import org.netbeans.gradle.project.license.LicenseManager; import org.netbeans.gradle.project.model.NbGradleModel; import org.netbeans.gradle.project.properties.standard.SourceEncodingProperty; public final class GradleTemplateAttrProvider implements CreateFromTemplateAttributes { private final NbGradleProject project; private final LicenseManager<? super NbGradleModel> licenseManager; public GradleTemplateAttrProvider( NbGradleProject project, LicenseManager<? super NbGradleModel> licenseManager) { ExceptionHelper.checkNotNullArgument(project, "project"); ExceptionHelper.checkNotNullArgument(licenseManager, "licenseManager"); this.project = project; this.licenseManager = licenseManager; } @Override public Map<String, ?> attributesFor(CreateDescriptor desc) { Map<String, Object> values = new TreeMap<>(); LicenseHeaderInfo licenseHeader = project.getCommonProperties().licenseHeaderInfo().getActiveValue(); if (licenseHeader != null) { NbGradleModel currentModel = project.currentModel().getValue(); String licenseName = licenseManager.tryGetRegisteredLicenseName(currentModel, licenseHeader); if (licenseName != null) { values.put("license", licenseName); for (Map.Entry<String, String> property: licenseHeader.getProperties().entrySet()) { values.put(property.getKey(), property.getValue()); } } } Charset encoding = project.getEncodingQuery().getEncoding(desc.getTarget()); if (encoding == null) { encoding = SourceEncodingProperty.DEFAULT_SOURCE_ENCODING; } values.put("encoding", encoding.name()); values.put("name", project.getName()); values.put("displayName", project.getDisplayName()); if (values.size() > 0) { return Collections.singletonMap("project", values); } else { return null; } } }