All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.anteros.AnterosMojo Maven / Gradle / Ivy

The newest version!
package br.com.anteros;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;

import com.thoughtworks.qdox.model.JavaClass;

import br.com.anteros.generator.AnterosGenerationLog;
import br.com.anteros.generator.AnterosGeneratorManager;
import br.com.anteros.generator.config.AnterosGenerationConfig;
import freemarker.template.Configuration;

/**
 * 
 * @author Edson Martins
 *
 */
@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES, requiresDependencyResolution = ResolutionScope.COMPILE, requiresDependencyCollection = ResolutionScope.COMPILE)
public class AnterosMojo extends AbstractMojo implements AnterosGenerationConfig, AnterosGenerationLog {
	public static final String ANTEROS_SECURITY_MODEL_SQL = "br.com.anteros.security.model*";	
	public static final String ANTEROS_SECURITY_MODEL_NO_SQL = "br.com.anteros.security.store.mongo.domain*";

	/**
	 * Location of the file.
	 */
	@Parameter(defaultValue = "${project.build.directory}", property = "outputDir", required = true)
	private File outputDirectory;


	@Parameter(defaultValue = "${project.name}", required = true)
	private String projectDisplayName;

	@Parameter(defaultValue = "${basedir}")
	private String baseDir;

	@Parameter(defaultValue = "${basedir}/src/main/java", required = true)
	private String sourceDestination;

	@Parameter(required = true)
	private String packageDestination;

	@Parameter(defaultValue = "true")
	private Boolean includeSecurity;
	
	@Parameter(defaultValue = "true")
	private Boolean includeOAuth2;

	@Parameter(defaultValue = "false")
	private Boolean generateRepository;

	@Parameter(defaultValue = "false")
	private Boolean generateService;

	@Parameter(defaultValue = "false")
	private Boolean generateController;

	@Parameter(defaultValue = "true")
	private boolean generateExceptionHandler;

	@Parameter(defaultValue = "false", required = true)
	private Boolean generateJavaConfiguration;

	@Parameter(required = true)
	private List packageScanComponentsList = new ArrayList();

	@Parameter(required = true)
	private List packageScanEntitiesList = new ArrayList();
	
	@Parameter(required = false)
	private List includeOnlyTheseEntitiesList = new ArrayList();
	
	@Parameter(required = false)
	private List excludeEntitiesList = new ArrayList();
	
	@Parameter(required = true)
	private List packageReplaceNamesList = new ArrayList();

	@Parameter(defaultValue = "")
	private String propertiesFile;

	@Parameter(defaultValue = "false")
	private Boolean generateForAbstractClass;

	@Parameter(defaultValue = "true")
	private Boolean enabled;

	@Parameter(defaultValue = "${project.compileClasspathElements}")
	private List classpathElements;

	@Parameter(defaultValue = "sql")
	private String persistenceDatabase;

	@Parameter(defaultValue = "sql")
	private String securityPersistenceDatabase;

	@Parameter
	private String remoteEndPointCheckToken;

	@Parameter
	private String securedPattern;
	
	@Parameter(defaultValue="v1")
	private String resourceVersion;

	@Parameter
	private String resourceID;

	@Parameter
	private Boolean useAnterosOAuth2Server;
	
	@Parameter(defaultValue = "")
	private String clientID;
	
	@Parameter(defaultValue = "")
	private String clientSecret;

	private Log logger;

	private JavaClass clazz;

	private Configuration configuration;

	public void execute() throws MojoExecutionException {

		if (enabled) {
			logger = getLog();
			try {
				AnterosGeneratorManager.getInstance().generate(this, AnterosMojo.class);
			} catch (Exception e) {
				logger.error(e);
			}
		}
	}

	protected List createClassPath() {
		List list = new ArrayList();
		if (classpathElements != null) {
			for (String cpel : classpathElements) {
				try {
					list.add(new File(cpel).toURI().toURL());
				} catch (MalformedURLException mue) {
				}
			}
		}
		return list;
	}

	public String getPackageDirectory() {
		return sourceDestination + File.separatorChar + packageDestination.replace('.', File.separatorChar);
	}

	public JavaClass getClazz() {
		return clazz;
	}

	public void setClazz(JavaClass clazz) {
		this.clazz = clazz;
	}

	public Configuration getConfiguration() {
		return configuration;
	}

	public String getPackageDestination() {
		return packageDestination;
	}

	public String getProjectDisplayName() {
		return projectDisplayName;
	}

	public boolean isGenerateForAbstractClass() {
		return generateForAbstractClass;
	}

	public String getPropertiesFile() {
		return propertiesFile;
	}

	public String getPackageScanEntity() {
		StringBuilder result = new StringBuilder();
		StringBuilder sb = new StringBuilder();

		if (packageScanEntitiesList.size() > 0) {	
			for (int i = 0; i < packageScanEntitiesList.size(); i++) {
				boolean boAppendDelimiter = (i == packageScanEntitiesList.size() - 1) ? false : true;
				
				sb.append(packageScanEntitiesList.get(i));

				if (boAppendDelimiter)
					sb.append(";");
			}
			result.append(sb);

			if (includeSecurity) {
				if (result.toString().length() > 0) {
					result.append(";");
				}
				if ("sql".equals(getSecurityPersistenceDatabase())) {
					result.append(ANTEROS_SECURITY_MODEL_SQL);
				} else {
					result.append(ANTEROS_SECURITY_MODEL_NO_SQL);
				}
			}
		}
		return result.toString();
	}

	public List getPackageScanComponentsList() {
		return packageScanComponentsList;
	}
	
	public List getPackageReplaceNamesList() {
		return packageReplaceNamesList;
	}

	public String getSourceDestination() {
		return sourceDestination;
	}

	public boolean isIncludeSecurity() {
		return includeSecurity;
	}

	public boolean isGenerateRepository() {
		return generateRepository;
	}

	public boolean isGenerateJavaConfiguration() {
		return generateJavaConfiguration;
	}

	public void setConfiguration(Configuration configuration) {
		this.configuration = configuration;
	}

	public void log(String msg) {
		logger.info(msg);
	}

	public AnterosGenerationLog getGenerationLog() {
		return this;
	}

	@Override
	public boolean isGenerateService() {
		return generateService;
	}

	@Override
	public boolean isGenerateController() {
		return generateController;
	}

	@Override
	public List getClassPathURLs() {
		return createClassPath();
	}

	@Override
	public boolean isGenerateExceptionHandler() {
		return generateExceptionHandler;
	}

	@Override
	public String getPersistenceDatabase() {
		return persistenceDatabase;
	}

	@Override
	public String getSecurityPersistenceDatabase() {
		return securityPersistenceDatabase;
	}

	@Override
	public String remoteEndPointCheckToken() {
		return remoteEndPointCheckToken;
	}

	@Override
	public String getResourceID() {
		return resourceID;
	}

	@Override
	public String getSecuredPattern() {
		return securedPattern;
	}

	@Override
	public Boolean isUseAnterosOAuth2Server() {
		return useAnterosOAuth2Server;
	}

	@Override
	public String getClientID() {
		return clientID;
	}

	@Override
	public String getClientSecret() {
		return clientSecret;
	}

	@Override
	public String getResourceVersion() {
		return resourceVersion;
	}

	@Override
	public List getIncludeOnlyTheseEntitiesList() {
		return includeOnlyTheseEntitiesList;
	}

	@Override
	public List getExcludeEntitiesList() {
		return excludeEntitiesList;
	}

	@Override
	public boolean isIncludeOAuth2() {
		return includeOAuth2;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy