From db54f8d50ce02f601edbd644aa4e8407fda97c59 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Sun, 8 May 2022 17:59:13 +0200 Subject: [PATCH] [DEV] add link on artefact folder and basic generation of GLD files for java dependency --- .classpath | 45 +-- src/module-info.java | 1 + src/org/atriasoft/island/Env.java | 19 +- src/org/atriasoft/island/Tools.java | 175 +++++------ .../island/actions/DependencySync.java | 276 +++++++++++------- src/org/atriasoft/island/internal/Log.java | 40 +-- .../island/model/GLDDependModel.java | 17 ++ .../island/model/GLDDependPathModel.java | 8 + 8 files changed, 344 insertions(+), 237 deletions(-) create mode 100644 src/org/atriasoft/island/model/GLDDependModel.java create mode 100644 src/org/atriasoft/island/model/GLDDependPathModel.java diff --git a/.classpath b/.classpath index f7ea3c4..1beaed3 100644 --- a/.classpath +++ b/.classpath @@ -5,26 +5,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -45,5 +25,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/module-info.java b/src/module-info.java index 7f545e4..7aa2f54 100644 --- a/src/module-info.java +++ b/src/module-info.java @@ -15,4 +15,5 @@ open module org.atriasoft.island { requires org.atriasoft.etk; //requires org.eclipse.jgit; requires jgit.bundle; + requires org.atriasoft.ejson; } diff --git a/src/org/atriasoft/island/Env.java b/src/org/atriasoft/island/Env.java index d864268..46b6dab 100644 --- a/src/org/atriasoft/island/Env.java +++ b/src/org/atriasoft/island/Env.java @@ -45,6 +45,7 @@ public class Env { private static Path islandPathManifest = null; + private static Path islandPathArtifactoryLink = null; private static Path islandPathArtifactory = null; static { //String tmp = island_root_path.toAbsolutePath().toString(); @@ -66,6 +67,7 @@ public class Env { Env.islandPathConfig = Env.islandPath.resolve("config.xml"); Env.islandPathManifest = Env.islandPath.resolve("manifest"); Env.islandPathArtifactory = Env.islandPath.resolve(Env.artifactoryBaseFolder); + Env.islandPathArtifactoryLink = Env.islandRootPath.resolve(Env.artifactoryBaseFolder); } public static boolean getDisplayFolderInsteadOfGitName() { @@ -88,6 +90,10 @@ public class Env { return Env.islandPathArtifactory; } + public static Path getIslandPathArtifactoryLink() { + return Env.islandPathArtifactoryLink; + } + public static Path getIslandPathConfig() { return Env.islandPathConfig; } @@ -121,12 +127,13 @@ public class Env { } public static void main(final String[] args) { - Log.error("islandRootPath = " + Env.islandRootPath.toAbsolutePath()); - Log.error("islandPathUserConfig = " + Env.islandPathUserConfig.toAbsolutePath()); - Log.error("islandPath = " + Env.islandPath.toAbsolutePath()); - Log.error("islandPathConfig = " + Env.islandPathConfig.toAbsolutePath()); - Log.error("islandPathManifest = " + Env.islandPathManifest.toAbsolutePath()); - Log.error("islandPathArtifactory = " + Env.islandPathArtifactory.toAbsolutePath()); + Log.error("islandRootPath = {}", Env.islandRootPath.toAbsolutePath()); + Log.error("islandPathUserConfig = {}", Env.islandPathUserConfig.toAbsolutePath()); + Log.error("islandPath = {}", Env.islandPath.toAbsolutePath()); + Log.error("islandPathConfig = {}", Env.islandPathConfig.toAbsolutePath()); + Log.error("islandPathManifest = {}", Env.islandPathManifest.toAbsolutePath()); + Log.error("islandPathArtifactory = {}", Env.islandPathArtifactory.toAbsolutePath()); + Log.error("islandPathArtifactoryLink = {}", Env.islandPathArtifactoryLink.toAbsolutePath()); } public static boolean needProcessWithFilter(final String data) { diff --git a/src/org/atriasoft/island/Tools.java b/src/org/atriasoft/island/Tools.java index f19be86..0a505e1 100644 --- a/src/org/atriasoft/island/Tools.java +++ b/src/org/atriasoft/island/Tools.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -14,96 +15,33 @@ import org.atriasoft.island.model.manifest.Dependency; import org.atriasoft.island.model.manifest.ProjectConfig; public class Tools { - - - public static String getListBaseDisplay(final int id, final int count, final ProjectConfig elem) { - if (!Env.getDisplayFolderInsteadOfGitName()) { - return id + "/" + count + " : " + elem.getName(); - } - return id + "/" + count + " : " + elem.getPath(); - } - public static String getListBaseDisplay(final int id, final int count, final Dependency elem) { - if (!Env.getDisplayFolderInsteadOfGitName()) { - return id + "/" + count + " : " + elem.name(); - } - return id + "/" + count + " : " + elem.name(); - } - + public static void createDirectory(final Path basePath) { Path absPath = basePath.toAbsolutePath(); - if (!Files.exists(absPath)) { - try { + if (!Files.exists(absPath)) { + try { Files.createDirectory(absPath); } catch (IOException e) { Log.error("Errro while creating path ... " + e.getMessage()); Log.error("Path ... " + absPath); e.printStackTrace(); } - } + } } - - public static void waitForServerIfNeeded() { - int waitTime = Env.getWaitBetweenSeverCommand(); - if (waitTime>0) { - Log.info("Waiting between commands: " + waitTime + "s"); - try { - Thread.sleep(waitTime*1000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + + public static void createSymbolicLink(Path link, Path target) throws IOException { + Log.warning("create Link {} -> {}", link, target); + createDirectory(link.getParent()); + if (Files.exists(link)) { + Files.delete(link); } - + Files.createSymbolicLink(link, target); } - public static String readFile(final Path path, final Charset encoding) throws IOException { - byte[] encoded = Files.readAllBytes(path); - return new String(encoded, encoding); - } - - /** - * Generate the split of the generic version : - * - 1.5.2-dev - * @param version - * @return list of element : {"1", "5", "2", "dev"} - */ - public static String[] versionStringToList(final String version) { - Log.verbose("parse version string '" + version +"'"); - List out = new ArrayList<>(); - if (version == null || version.isEmpty()) { - return new String[]{"0", "0", "0"}; - } - String[] elems = version.split("-"); - if (elems[0].split(".").length <= 1) { - Log.critical("Can not parde a version with wrong version model '" + version +"'"); - } - List values = Arrays.asList(elems[0].split(".")); - for (String elem : values) { - out.add(elem); - } - if (elems.length >= 2) { - out.add(elems[1]); - } - return out.toArray(new String[0]); - } - - public static String versionToString(final int[] version, final boolean develop) { - StringBuilder sb = new StringBuilder(); - for (int iii=0; iii move is 99.999999% atomic. - try { - Files.move(tmpFile, path); + // this is the way to have atomic replacement of file and not partial downloaded file ==> move is 99.999999% atomic. + try { + Files.move(tmpFile, path, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } - + + public static String getListBaseDisplay(final int id, final int count, final Dependency elem) { + if (!Env.getDisplayFolderInsteadOfGitName()) { + return id + "/" + count + " : " + elem.name(); + } + return id + "/" + count + " : " + elem.name(); + } + + public static String getListBaseDisplay(final int id, final int count, final ProjectConfig elem) { + if (!Env.getDisplayFolderInsteadOfGitName()) { + return id + "/" + count + " : " + elem.getName(); + } + return id + "/" + count + " : " + elem.getPath(); + } + public static String getPlural(final List artefactories) { return artefactories.size() > 1 ? "ies" : "y"; } + public static String readFile(final Path path, final Charset encoding) throws IOException { + byte[] encoded = Files.readAllBytes(path); + return new String(encoded, encoding); + } + + /** + * Generate the split of the generic version : + * - 1.5.2-dev + * @param version + * @return list of element : {"1", "5", "2", "dev"} + */ + public static String[] versionStringToList(final String version) { + Log.verbose("parse version string '" + version + "'"); + List out = new ArrayList<>(); + if (version == null || version.isEmpty()) { + return new String[] { "0", "0", "0" }; + } + String[] elems = version.split("-"); + if (elems[0].split(".").length <= 1) { + Log.critical("Can not parde a version with wrong version model '" + version + "'"); + } + List values = Arrays.asList(elems[0].split(".")); + for (String elem : values) { + out.add(elem); + } + if (elems.length >= 2) { + out.add(elems[1]); + } + return out.toArray(new String[0]); + } + + public static String versionToString(final int[] version, final boolean develop) { + StringBuilder sb = new StringBuilder(); + for (int iii = 0; iii < version.length; iii++) { + if (sb.length() != 0) { + sb.append("."); + } + sb.append(Integer.toString(version[iii])); + } + if (develop) { + sb.append("-dev"); + } + return sb.toString(); + } + + public static void waitForServerIfNeeded() { + int waitTime = Env.getWaitBetweenSeverCommand(); + if (waitTime > 0) { + Log.info("Waiting between commands: " + waitTime + "s"); + try { + Thread.sleep(waitTime * 1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + } + } diff --git a/src/org/atriasoft/island/actions/DependencySync.java b/src/org/atriasoft/island/actions/DependencySync.java index 0853b9d..fc5620f 100644 --- a/src/org/atriasoft/island/actions/DependencySync.java +++ b/src/org/atriasoft/island/actions/DependencySync.java @@ -22,6 +22,10 @@ import org.atriasoft.death.annotation.ArgDescription; import org.atriasoft.death.annotation.ArgExecute; import org.atriasoft.death.annotation.ArgName; import org.atriasoft.death.annotation.ArgSample; +import org.atriasoft.ejson.Ejson; +import org.atriasoft.ejson.model.JsonArray; +import org.atriasoft.ejson.model.JsonObject; +import org.atriasoft.ejson.model.JsonString; import org.atriasoft.exml.Exml; import org.atriasoft.exml.exception.ExmlException; import org.atriasoft.island.Config; @@ -30,6 +34,7 @@ import org.atriasoft.island.Manifest; import org.atriasoft.island.Tools; import org.atriasoft.island.internal.Log; import org.atriasoft.island.model.ActionException; +import org.atriasoft.island.model.GLDDependModel; import org.atriasoft.island.model.manifest.Artifactory; import org.atriasoft.island.model.manifest.ConfigManifest; import org.atriasoft.island.model.manifest.Dependency; @@ -40,8 +45,15 @@ import org.atriasoft.island.model.maven.PomMaven; @ArgCommand("depend-sync") @ArgDescription("Syncronize all the dependencies referenced") @ArgSample("depend-sync") -public class DependencySync { - +public class DependencySync { + + private class UpdateDependency { + public Dependency dependency; + public List download = new ArrayList<>(); + } + + private static final String MAVEN_METADATA = "maven-metadata.xml"; + @ArgName("doc") @ArgDescription("enable download of the documentation") public boolean documentation = false; @@ -50,49 +62,14 @@ public class DependencySync { @ArgDescription("enable download of the sources") public boolean sources = false; - - - - private static final String MAVEN_METADATA = "maven-metadata.xml"; - - Artifactory findArtifactory(final List artefactories, final String name) { - Artifactory out = null; - for (Artifactory elem: artefactories) { - if ("default".equals(elem.getName())) { - out = elem; - break; - } - } - // By default we are capable to use maven artefactory (can be replace with using "default" name). - if (out == null) { - out = new Artifactory("default", "https://repo1.maven.org/maven2", "maven"); - } - boolean find = false; - for (Artifactory elem: artefactories) { - if (name.equals(elem.getName())) { - return elem; - } - } - Log.error("Can not find the remote '" + name + "'artefactory in the list ==> fallback to 'default'"); - return out; - } - - public String createMavenMetadataRemoteFileName(final List artefactories, final Dependency dependency) { - return createBasePkgRemoteFileName(artefactories, dependency, DependencySync.MAVEN_METADATA); + public Path createArtefactLinkFileName(final String fileName) { + Path outPath = Env.getIslandPathArtifactoryLink().resolve(fileName); + return outPath; } - public Path createMetadataLocalFileName(final List artefactories, final Dependency dependency) { - return createBasePkgLocalFileName(artefactories, dependency, DependencySync.MAVEN_METADATA); - } - - public String createBasePkgRemoteFileName(final List artefactories, final Dependency dependency, final String version) { - Artifactory artifactory = findArtifactory(artefactories, dependency.remote()); - String out = artifactory.getFetch(); - while (out.endsWith("/")) { - out = out.substring(0, out.length()-1); - } - out += "/" + dependency.org().replace(".", "/") + "/" + dependency.name() + "/" + version; - return out; + public Path createArtefactLinkGLDFile(final String fileName) { + Path outPath = Env.getIslandPathArtifactoryLink().resolve("GLD_" + fileName + ".json"); + return outPath; } public Path createBasePkgLocalFileName(final List artefactories, final Dependency dependency, final String version) { @@ -102,35 +79,68 @@ public class DependencySync { return outPath; } - - // this is the maven module interface - public String getPomFileName(final Dependency dependency, final String version) { - return dependency.name() + "-" + version + ".pom"; + public String createBasePkgRemoteFileName(final List artefactories, final Dependency dependency, final String version) { + Artifactory artifactory = findArtifactory(artefactories, dependency.remote()); + String out = artifactory.getFetch(); + while (out.endsWith("/")) { + out = out.substring(0, out.length() - 1); + } + out += "/" + dependency.org().replace(".", "/") + "/" + dependency.name() + "/" + version; + return out; } - public String getJavaPackageFileName(final Dependency dependency, final String version) { - return dependency.name() + "-" + version + ".jar"; + + private void createGLDFile(PomMaven mavenPom, Path createArtefactLinkGLDFile, Path artefactLink) { + GLDDependModel model = new GLDDependModel(); + model.path.java.add(artefactLink.getFileName().toString()); + model.groupId = mavenPom.groupId(); + model.version = mavenPom.version(); + if (mavenPom.dependencies() != null) { + for (PomDependency elem : mavenPom.dependencies()) { + model.dependency.add(elem.artifactId()); + } + } + // TODO: for later : create a generic serializer ... + StringBuilder data = new StringBuilder(); + JsonObject root = new JsonObject(); + root.put("type", new JsonString(model.type)); + root.put("group-id", new JsonString(model.groupId)); + root.put("version", new JsonString(model.version)); + JsonObject path = new JsonObject(); + root.put("path", path); + JsonArray java = new JsonArray(); + for (String elem : model.path.java) { + java.add(new JsonString(elem)); + } + path.put("java", java); + JsonArray dep = new JsonArray(); + for (String elem : model.dependency) { + dep.add(new JsonString(elem)); + } + root.put("dependency", dep); + Ejson.generate(root, data); + //Log.error("generated GLD dependency : {}", data.toString()); + //Log.error(" ==> {}", createArtefactLinkGLDFile.toString()); + //Log.error(" --> {}", artefactLink.toString()); + Tools.fileWriteData(createArtefactLinkGLDFile, data.toString()); } - public String getJavaDocFileName(final Dependency dependency, final String version) { - return dependency.name() + "-" + version + "-javadoc.jar"; + + void createLinkOnArtefact(final Path path, final String baseName) throws Exception { + // remove previous file in the link area: + Tools.createSymbolicLink(createArtefactLinkFileName(baseName), path); } - public String getJavaSourceFileName(final Dependency dependency, final String version) { - return dependency.name() + "-" + version + "-sources.jar"; + + public String createMavenMetadataRemoteFileName(final List artefactories, final Dependency dependency) { + return createBasePkgRemoteFileName(artefactories, dependency, DependencySync.MAVEN_METADATA); } - // This is the gradle module interface - public String getModuleFileName(final Dependency dependency, final String version) { - return dependency.name() + "-" + version + ".module"; - } - private class UpdateDependency { - public Dependency dependency; - public List download = new ArrayList<>(); + + public Path createMetadataLocalFileName(final List artefactories, final Dependency dependency) { + return createBasePkgLocalFileName(artefactories, dependency, DependencySync.MAVEN_METADATA); } private void downloadPackage(final List artefactories, final Dependency dependency, final List alreadyDone) throws Exception { Log.debug("download : " + dependency); for (UpdateDependency elem : alreadyDone) { - if (elem.dependency.org().equals(dependency.org()) - && elem.dependency.name().equals(dependency.name()) - && elem.dependency.remote().equals(dependency.remote())) { + if (elem.dependency.org().equals(dependency.org()) && elem.dependency.name().equals(dependency.name()) && elem.dependency.remote().equals(dependency.remote())) { // find element ==> check version for (String version : elem.download) { if (version.equals(dependency.revision())) { @@ -142,10 +152,10 @@ public class DependencySync { } String metadataFile = createMavenMetadataRemoteFileName(artefactories, dependency); - Log.print("Metadata position: " + metadataFile); + Log.verbose("Metadata position: " + metadataFile); Path localPath = createMetadataLocalFileName(artefactories, dependency); String dataAsString = readAllMatadataAndStore(metadataFile, localPath); - Log.print("dataAsString: " + dataAsString); + Log.verbose("dataAsString: " + dataAsString); MavenMetadata metaData = null; try { metaData = Exml.parseOne(dataAsString, MavenMetadata.class, "metadata"); @@ -173,9 +183,16 @@ public class DependencySync { // TODO Auto-generated catch block e.printStackTrace(); } + // retrieve binary base = getJavaPackageFileName(dependency, lastReleaseTag); readRemoteFileAndStore(remotePakageFileName + "/" + base, localPackageFileName.resolve(base), base); + // TODO: If Zip artefact this mean we need to uncompress it. + createLinkOnArtefact(localPackageFileName.resolve(base), base); + // create the GLD file with maven dependency + + createGLDFile(mavenPom, createArtefactLinkGLDFile(mavenPom.artifactId()), createArtefactLinkFileName(base)); + // listFiles(localPackageFileName.resolve(base)); // retrieve javadoc if (this.documentation) { @@ -194,29 +211,28 @@ public class DependencySync { */ boolean find = false; for (UpdateDependency elem : alreadyDone) { - if (elem.dependency.org().equals(dependency.org()) - && elem.dependency.name().equals(dependency.name()) - && elem.dependency.remote().equals(dependency.remote())) { + if (elem.dependency.org().equals(dependency.org()) && elem.dependency.name().equals(dependency.name()) && elem.dependency.remote().equals(dependency.remote())) { // find element ==> check version elem.download.add(dependency.revision()); find = true; break; } } - if (!find ) { + if (!find) { UpdateDependency tmpp = new UpdateDependency(); tmpp.dependency = dependency; tmpp.download.add(dependency.revision()); alreadyDone.add(tmpp); } if (mavenPom != null && mavenPom.dependencies() != null) { - for ( PomDependency value : mavenPom.dependencies()) { + for (PomDependency value : mavenPom.dependencies()) { Dependency dependencyTmp = new Dependency(value.groupId(), value.artifactId(), value.version(), dependency.remote()); downloadPackage(artefactories, dependencyTmp, alreadyDone); } } } - @ArgExecute + + @ArgExecute public void execute() throws ActionException, Exception { List alreadyDone = new ArrayList<>(); // check system is OK @@ -229,7 +245,7 @@ public class DependencySync { Log.critical("Missing manifest file : '" + file_source_manifest + "'"); } Manifest mani = new Manifest(file_source_manifest); - + List artefactories = mani.getAllArtefactories(); List dependencies = mani.getAllDependencies(); @@ -246,7 +262,68 @@ public class DependencySync { } Log.print("Dependency sync END"); } - + + Artifactory findArtifactory(final List artefactories, final String name) { + Artifactory out = null; + for (Artifactory elem : artefactories) { + if ("default".equals(elem.getName())) { + out = elem; + break; + } + } + // By default we are capable to use maven artefactory (can be replace with using "default" name). + if (out == null) { + out = new Artifactory("default", "https://repo1.maven.org/maven2", "maven"); + } + boolean find = false; + for (Artifactory elem : artefactories) { + if (name.equals(elem.getName())) { + return elem; + } + } + Log.error("Can not find the remote '" + name + "'artefactory in the list ==> fallback to 'default'"); + return out; + } + + public String getJavaDocFileName(final Dependency dependency, final String version) { + return dependency.name() + "-" + version + "-javadoc.jar"; + } + + public String getJavaPackageFileName(final Dependency dependency, final String version) { + return dependency.name() + "-" + version + ".jar"; + } + + public String getJavaSourceFileName(final Dependency dependency, final String version) { + return dependency.name() + "-" + version + "-sources.jar"; + } + + // This is the gradle module interface + public String getModuleFileName(final Dependency dependency, final String version) { + return dependency.name() + "-" + version + ".module"; + } + + // this is the maven module interface + public String getPomFileName(final Dependency dependency, final String version) { + return dependency.name() + "-" + version + ".pom"; + } + + void listFiles(final Path path) { + Log.info("List of file in " + path); + try { + ZipFile zipFile = new ZipFile(path.toFile()); + + Enumeration entries = zipFile.entries(); + while (entries.hasMoreElements()) { + ZipEntry entry = entries.nextElement(); + Log.info(" - " + entry.getName() + " (" + entry.getSize() + ")"); + //InputStream stream = zipFile.getInputStream(entry); + } + } catch (IOException ex) { + Log.error("Catch Exception : " + ex.getLocalizedMessage()); + ex.printStackTrace(); + } + } + String readAllMatadataAndStore(final String urlPath, final Path path) throws Exception { URL url = new URL(urlPath); HttpURLConnection con = (HttpURLConnection) url.openConnection(); @@ -256,7 +333,7 @@ public class DependencySync { con.setInstanceFollowRedirects(false); StringBuilder result = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()))) { - for (String line; (line = reader.readLine()) != null; ) { + for (String line; (line = reader.readLine()) != null;) { result.append(line); result.append("\n"); } @@ -265,7 +342,7 @@ public class DependencySync { throw ex; } String dataAsString = result.toString(); - Log.print("return=" + dataAsString); + Log.verbose("return=" + dataAsString); Tools.fileWriteData(path, dataAsString); return dataAsString; } @@ -288,46 +365,27 @@ public class DependencySync { con.setConnectTimeout(5000); con.setReadTimeout(5000); con.setInstanceFollowRedirects(false); - final int BUFFER_SIZE = 1024*1024; - StringBuilder result = new StringBuilder(); + final int BUFFER_SIZE = 1024 * 1024; InputStream inputStream = con.getInputStream(); - Path tmpFile = path.getParent().resolve(path.getFileName()+"__tmp"); + Path tmpFile = path.getParent().resolve(path.getFileName() + "__tmp"); FileOutputStream outputStream = new FileOutputStream(tmpFile.toFile()); - int bytesRead = -1; - int totalRead = 0; - byte[] buffer = new byte[BUFFER_SIZE]; - while ((bytesRead = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead); - totalRead += bytesRead; - //System.out.print("Download: " + baseName + " =" + totalRead + " B\r"); - } - System.out.print("Download: " + baseName + " =" + totalRead + " B\n"); - outputStream.close(); - inputStream.close(); - // this is the way to have atomic replacement of file and not partial downloaded file ==> move is 99.999999% atomic. - Files.move(tmpFile, path); + int bytesRead = -1; + int totalRead = 0; + byte[] buffer = new byte[BUFFER_SIZE]; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + totalRead += bytesRead; + //System.out.print("Download: " + baseName + " =" + totalRead + " B\r"); + } + System.out.print("Download: " + baseName + " =" + totalRead + " B\n"); + outputStream.close(); + inputStream.close(); + // this is the way to have atomic replacement of file and not partial downloaded file ==> move is 99.999999% atomic. + Files.move(tmpFile, path); } catch (FileNotFoundException ex) { Log.warning("File not found: " + urlPath); } finally { } } - - void listFiles(final Path path) { - Log.info("List of file in " + path); - try { - ZipFile zipFile = new ZipFile(path.toFile()); - - Enumeration entries = zipFile.entries(); - while(entries.hasMoreElements()){ - ZipEntry entry = entries.nextElement(); - Log.info(" - " + entry.getName() + " (" + entry.getSize() + ")"); - //InputStream stream = zipFile.getInputStream(entry); - } - } catch (IOException ex) { - Log.error("Catch Exception : " + ex.getLocalizedMessage()); - ex.printStackTrace(); - } - } } - diff --git a/src/org/atriasoft/island/internal/Log.java b/src/org/atriasoft/island/internal/Log.java index c6b0039..88b14c6 100644 --- a/src/org/atriasoft/island/internal/Log.java +++ b/src/org/atriasoft/island/internal/Log.java @@ -16,12 +16,6 @@ public class Log { private static final boolean PRINT_TODO = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.TODO); private static final boolean PRINT_PRINT = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.PRINT); - public static void critical(final String data) { - if (Log.PRINT_CRITICAL || Log.FORCE) { - Logger.critical(Log.LIB_NAME_DRAW, data); - } - } - public static void critical(final String data, final Exception e) { e.printStackTrace(); if (Log.PRINT_CRITICAL || Log.FORCE) { @@ -29,45 +23,51 @@ public class Log { } } - public static void debug(final String data) { + public static void critical(final String data, Object... objects) { + if (Log.PRINT_CRITICAL || Log.FORCE) { + Logger.critical(Log.LIB_NAME_DRAW, data, objects); + } + } + + public static void debug(final String data, Object... objects) { if (Log.PRINT_DEBUG || Log.FORCE) { - Logger.debug(Log.LIB_NAME_DRAW, data); + Logger.debug(Log.LIB_NAME_DRAW, data, objects); } } - public static void error(final String data) { + public static void error(final String data, Object... objects) { if (Log.PRINT_ERROR || Log.FORCE) { - Logger.error(Log.LIB_NAME_DRAW, data); + Logger.error(Log.LIB_NAME_DRAW, data, objects); } } - public static void info(final String data) { + public static void info(final String data, Object... objects) { if (Log.PRINT_INFO || Log.FORCE) { - Logger.info(Log.LIB_NAME_DRAW, data); + Logger.info(Log.LIB_NAME_DRAW, data, objects); } } - public static void print(final String data) { + public static void print(final String data, Object... objects) { if (Log.PRINT_PRINT || Log.FORCE) { - System.out.println(data); + Logger.print(Log.LIB_NAME_DRAW, data, objects); } } - public static void todo(final String data) { + public static void todo(final String data, Object... objects) { if (Log.PRINT_TODO || Log.FORCE) { - Logger.todo(Log.LIB_NAME_DRAW, data); + Logger.todo(Log.LIB_NAME_DRAW, data, objects); } } - public static void verbose(final String data) { + public static void verbose(final String data, Object... objects) { if (Log.PRINT_VERBOSE || Log.FORCE) { - Logger.verbose(Log.LIB_NAME_DRAW, data); + Logger.verbose(Log.LIB_NAME_DRAW, data, objects); } } - public static void warning(final String data) { + public static void warning(final String data, Object... objects) { if (Log.PRINT_WARNING || Log.FORCE) { - Logger.warning(Log.LIB_NAME_DRAW, data); + Logger.warning(Log.LIB_NAME_DRAW, data, objects); } } diff --git a/src/org/atriasoft/island/model/GLDDependModel.java b/src/org/atriasoft/island/model/GLDDependModel.java new file mode 100644 index 0000000..7a96c59 --- /dev/null +++ b/src/org/atriasoft/island/model/GLDDependModel.java @@ -0,0 +1,17 @@ +package org.atriasoft.island.model; + +import java.util.ArrayList; +import java.util.List; + +import org.atriasoft.aknot.annotation.AknotName; + +public class GLDDependModel { + public String type = "LIBRARY"; + @AknotName("group-id") + public String groupId; + public String version; + public GLDDependPathModel path = new GLDDependPathModel(); + public List dependency = new ArrayList<>(); + @AknotName("dependency-build") + public List dependencyBuild = new ArrayList<>(); +} \ No newline at end of file diff --git a/src/org/atriasoft/island/model/GLDDependPathModel.java b/src/org/atriasoft/island/model/GLDDependPathModel.java new file mode 100644 index 0000000..65832f3 --- /dev/null +++ b/src/org/atriasoft/island/model/GLDDependPathModel.java @@ -0,0 +1,8 @@ +package org.atriasoft.island.model; + +import java.util.ArrayList; +import java.util.List; + +public class GLDDependPathModel { + public List java = new ArrayList<>(); +} \ No newline at end of file