diff --git a/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java b/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java index 182aa7cff0233a0f8aed39883c1a0f755d8d44a5..0c10a73f68c1f765758a91b4b99dc300f869597d 100644 --- a/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java +++ b/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java @@ -20,7 +20,7 @@ public class ValidatorInstantiator { if(javaHome != null && !javaHome.isEmpty()){ javaEnv = "env $JAVA_HOME=\""+javaHome+"\" "; } - return CD_COMMAND + workspacePath + "\"\n" + javaEnv + mvnExecPath + " archetype:generate -B " + + return CD_COMMAND + workspacePath + "\"\n" + javaEnv + mvnExecPath + " org.apache.maven.plugins:maven-archetype-plugin:2.3:generate -B " + "-DarchetypeGroupId=net.ihe.gazelle.goc " + "-DarchetypeArtifactId=validator-archetype " + "-DarchetypeVersion=" + getVersion() + " " + diff --git a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java index ab08964552ea09d4985aaa714a710afe2440b991..f9ebb028249194ca6b93dd3653291216ebffb129 100644 --- a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java +++ b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java @@ -22,8 +22,9 @@ public class ArchetypeInstantiatorMaven implements ArchetypeInstantiator { private static org.slf4j.Logger log = LoggerFactory.getLogger(ArchetypeInstantiatorMaven.class); //this is supposed to be the version of the packager artifact. It is for now used as artifact version. See what we will use - private static final String gocVersion = "2.0.0"; + private static final String gocVersion = "3.0.0"; private static final String CD_COMMAND = "cd \""; + private static final String REPOSITORY = "https://gazelle.ihe.net/nexus/content/groups/public/"; private String workspacesRoot; private String mvnExecutionPath; @@ -112,20 +113,22 @@ public class ArchetypeInstantiatorMaven implements ArchetypeInstantiator { */ public void createValidatorArtifact(Workspace workspace, ValidatorConfiguration validatorConfiguration) throws ArchetypeInstantiationException { - if(!checkIfArchetypeInstalled()){ - throw new ArchetypeInstantiationException("Archtype not installed, generation will end, please refere to: https://gitlab.inria.fr/gazelle/library/archetypes/generated-validator to install it"); - } + String workspacePath = getWorkspacesRoot() + workspace.getName(); String configuration = System.getProperty("HL7TEMP_CDACONFFOLDERNAME", "cdabasic"); - String createArtifactCommand = ValidatorInstantiator.generateArchetype(workspacePath, getMvnExecutionPath(), gocVersion, + String createArchetypeCommand = ValidatorInstantiator.generateArchetype(workspacePath, getMvnExecutionPath(), gocVersion, validatorConfiguration.getProjectNaming().getProjectName(), validatorConfiguration.getProjectNaming().getProjectNameUpperCase(), configuration, validatorConfiguration.getProjectNaming().getProjectNameCapitalized(), validatorConfiguration.getServiceName(), workspacePath, validatorConfiguration.ignoreCdaBasicRequirements().toString(),System.getProperty("JAVA_EXEC")); - log.warn("Command executed to generate model artifact : \n" + createArtifactCommand); - try { - processExecutor.executeProcess(createArtifactCommand); - } catch (IOException e){ - throw new ArchetypeInstantiationException("Cannot generate validator artifact !", e); + log.warn("Command executed to generate model artifact : \n" + createArchetypeCommand); + + log.info("Trying to look for archetype in local repository..."); + if(!generateArchetypeFromRepository(createArchetypeCommand,null)){ + log.warn("Archetype not found locally, retrieving from remote repository {} ",REPOSITORY); + if(!generateArchetypeFromRepository(createArchetypeCommand,REPOSITORY)){ + log.error("Could not find archetype in remote repository: {}", REPOSITORY); + throw new ArchetypeInstantiationException("Cannot generate validator artifact !"); + } } gocLogger.logSeparator("Extracting Value-sets","Extract Value-sets from the ValidatorConfiguration and put them in project resources"); @@ -174,18 +177,18 @@ public class ArchetypeInstantiatorMaven implements ArchetypeInstantiator { } - //TODO: 28/09/2021 make installation of archetype automatic - -// protected void installArchetypeProject(){ -// FolderCreator folderCreator = new FolderCreatorImpl(); -// try { -// folderCreator.createFolder(getWorkspacesRoot()+"archetype"); -// String command = CD_COMMAND + getWorkspacesRoot() + "\"archetype\"" + System.lineSeparator() -// + "git clone " -// } catch (IOException e) { -// log.error("failed creating archetype folder {}",e); -// } -// } + + private boolean generateArchetypeFromRepository(String createArtifactCommand, String repository){ + try { + if(repository != null && !repository.isEmpty()){ + createArtifactCommand += " -DarchetypeRepository=\""+repository+"\""; + } + processExecutor.executeProcess(createArtifactCommand); + return true; + } catch (IOException e) { + return false; + } + } diff --git a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java index 914963e9ed33fbbbf86637cefdfe7cfff3e8dcdb..d2947f78d868927c99b240d68fb4550f3c9a43d2 100644 --- a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java +++ b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java @@ -151,7 +151,7 @@ public class GOCLoggerImpl implements GOCLogger { long milliseconds = (elapsedTime/1000000)%1000; long seconds = (elapsedTime/(1000000*1000))%60; long minutes = elapsedTime/(1000000000L *60); - String stringToLog = this.previousAction+" takes [ "+minutes+"m "+seconds+"s "+milliseconds+"ms ] to complete"; + String stringToLog = this.previousAction+" took [ '"+minutes+"m "+seconds+"s "+milliseconds+"ms' ] to complete"; //log to detailed log file log.info(stringToLog+"\n"); @@ -176,10 +176,10 @@ public class GOCLoggerImpl implements GOCLogger { BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file,true)); bufferedWriter.write("==========================\n"); if(descriptor.equals(Descriptor.STDOUT)){ - bufferedWriter.write("STDOUT of executing: "+command); + bufferedWriter.write("STDOUT of executing: "+command+"\n\n"); } else{ - bufferedWriter.write("STDERR of executing: "+command); + bufferedWriter.write("STDERR of executing: "+command+"\n\n"); } while ((line = in.readLine()) != null) { line += System.lineSeparator();