2019-10-17 18:38:30 +02:00
|
|
|
package eu.dnetlib.maven.plugin.properties;
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.apache.commons.lang.ArrayUtils;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
import org.apache.maven.plugin.AbstractMojo;
|
|
|
|
import org.apache.maven.plugin.MojoExecutionException;
|
|
|
|
import org.apache.maven.plugin.MojoFailureException;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Generates oozie properties which were not provided from commandline.
|
|
|
|
* @author mhorst
|
|
|
|
*
|
|
|
|
* @goal generate-properties
|
|
|
|
*/
|
|
|
|
public class GenerateOoziePropertiesMojo extends AbstractMojo {
|
|
|
|
|
|
|
|
public static final String PROPERTY_NAME_WF_SOURCE_DIR = "workflow.source.dir";
|
|
|
|
public static final String PROPERTY_NAME_SANDBOX_NAME = "sandboxName";
|
|
|
|
|
2019-10-18 10:49:34 +02:00
|
|
|
private final String[] limiters = {"dhp", "dnetlib", "eu"};
|
2019-10-17 18:38:30 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void execute() throws MojoExecutionException, MojoFailureException {
|
|
|
|
if (System.getProperties().containsKey(PROPERTY_NAME_WF_SOURCE_DIR) &&
|
|
|
|
!System.getProperties().containsKey(PROPERTY_NAME_SANDBOX_NAME)) {
|
|
|
|
String generatedSandboxName = generateSandboxName(System.getProperties().getProperty(
|
|
|
|
PROPERTY_NAME_WF_SOURCE_DIR));
|
|
|
|
if (generatedSandboxName!=null) {
|
|
|
|
System.getProperties().setProperty(PROPERTY_NAME_SANDBOX_NAME,
|
|
|
|
generatedSandboxName);
|
|
|
|
} else {
|
|
|
|
System.out.println("unable to generate sandbox name from path: " +
|
|
|
|
System.getProperties().getProperty(PROPERTY_NAME_WF_SOURCE_DIR));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Generates sandbox name from workflow source directory.
|
|
|
|
* @param wfSourceDir
|
|
|
|
* @return generated sandbox name
|
|
|
|
*/
|
|
|
|
private String generateSandboxName(String wfSourceDir) {
|
|
|
|
// utilize all dir names until finding one of the limiters
|
|
|
|
List<String> sandboxNameParts = new ArrayList<String>();
|
|
|
|
String[] tokens = StringUtils.split(wfSourceDir, File.separatorChar);
|
|
|
|
ArrayUtils.reverse(tokens);
|
|
|
|
if (tokens.length>0) {
|
|
|
|
for (String token : tokens) {
|
|
|
|
for (String limiter : limiters) {
|
|
|
|
if (limiter.equals(token)) {
|
|
|
|
return sandboxNameParts.size()>0?
|
|
|
|
StringUtils.join(sandboxNameParts.toArray()):null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (sandboxNameParts.size()>0) {
|
|
|
|
sandboxNameParts.add(0, File.separator);
|
|
|
|
}
|
|
|
|
sandboxNameParts.add(0, token);
|
|
|
|
}
|
|
|
|
return StringUtils.join(sandboxNameParts.toArray());
|
|
|
|
} else {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|