package org.axway.grapes.server.db; import org.axway.grapes.commons.datamodel.Artifact; import org.axway.grapes.commons.datamodel.DataModelFactory; import org.axway.grapes.commons.datamodel.Dependency; import org.axway.grapes.commons.datamodel.Module; import org.axway.grapes.server.db.datamodel.DbArtifact; import org.axway.grapes.server.db.datamodel.DbDependency; import org.axway.grapes.server.db.datamodel.DbModule; import java.util.*; /** * Data Utility * * <p>Utility class that performs data transformation.</p> * * @author jdcoffre */ public final class DataUtils { private DataUtils(){ // Hide utility class constructor } /** * Return a gavc list of all the artifact contained into the module (an its submodules) * * @param module * @return List<String> */ public static List<String> getAllArtifacts(final DbModule module) { final List<String> gavcs = module.getArtifacts(); for(DbModule submodule: module.getSubmodules()){ gavcs.addAll(getAllArtifacts(submodule)); } return gavcs; } /** * Return a list of all the artifact contained into the module (an its submodules) * * @param module * @return Set<Artifact> */ public static Set<Artifact> getAllArtifacts(final Module module) { final Set<Artifact> artifacts = new HashSet<Artifact>(); artifacts.addAll(module.getArtifacts()); for(Module submodule: module.getSubmodules()){ artifacts.addAll(getAllArtifacts(submodule)); } return artifacts; } /** * Return a list of all the dependencies contained into the module (an its submodules) * * @param module * @return Set<Dependency> */ public static Set<Dependency> getAllDependencies(final Module module) { final Set<Dependency> dependencies = new HashSet<Dependency>(); dependencies.addAll(module.getDependencies()); for(Module submodule: module.getSubmodules()){ dependencies.addAll(getAllDependencies(submodule)); } return dependencies; } /** * Return a list of all the dependencies contained into the module (an its submodules) * * @param module * @return List<DbDependency> */ public static List<DbDependency> getAllDbDependencies(final DbModule module) { final List<DbDependency> dependencies = new ArrayList<DbDependency>(); dependencies.addAll(module.getDependencies()); for(DbModule submodule: module.getSubmodules()){ dependencies.addAll(getAllDbDependencies(submodule)); } return dependencies; } /** * Split a module Id to get the module name * @param moduleId * @return String */ public static String getModuleName(final String moduleId) { final int splitter = moduleId.indexOf(':'); if(splitter == -1){ return moduleId; } return moduleId.substring(0, splitter); } /** * Split a module Id to get the module version * @param moduleId * @return String */ public static String getModuleVersion(final String moduleId) { final int splitter = moduleId.lastIndexOf(':'); if(splitter == -1){ return moduleId; } return moduleId.substring(splitter+1); } /** * Split an artifact gavc to get the groupId * @param gavc * @return String */ public static String getGroupId(final String gavc) { final int splitter = gavc.indexOf(':'); if(splitter == -1){ return gavc; } return gavc.substring(0, splitter); } /** * Generates an artifact starting from gavc * * WARNING: use this method only if you have a missing reference in the database!!! * * @param gavc * @return DbArtifact */ public static DbArtifact createDbArtifact(final String gavc) { final DbArtifact artifact = new DbArtifact(); final String[] artifactInfo = gavc.split(":"); if(artifactInfo.length > 0){ artifact.setGroupId(artifactInfo[0]); } if(artifactInfo.length > 1){ artifact.setArtifactId(artifactInfo[1]); } if(artifactInfo.length > 2){ artifact.setVersion(artifactInfo[2]); } if(artifactInfo.length > 3){ artifact.setClassifier(artifactInfo[3]); } if(artifactInfo.length > 4){ artifact.setExtension(artifactInfo[4]); } return artifact; } /** * Generates an artifact starting from gavc * * WARNING: use this method only if you have a missing reference in the database!!! * * @param gavc * @return DbArtifact */ public static Artifact createArtifact(final String gavc) { String groupId = null, artifactId = null, version = null, classifier = null, extension = null; final String[] artifactInfo = gavc.split(":"); if(artifactInfo.length > 0){ groupId = artifactInfo[0]; } if(artifactInfo.length > 1){ artifactId = artifactInfo[1]; } if(artifactInfo.length > 2){ version= artifactInfo[2]; } if(artifactInfo.length > 3){ classifier= artifactInfo[3]; } if(artifactInfo.length > 4){ extension= artifactInfo[4]; } return DataModelFactory.createArtifact(groupId, artifactId, version, classifier, null, extension); } /** * Return the list of all the module submodules * * @param module * @return List<DbModule> */ public static List<DbModule> getAllSubmodules(final DbModule module) { final List<DbModule> submodules = new ArrayList<DbModule>(); submodules.addAll(module.getSubmodules()); for(DbModule submodule: module.getSubmodules()){ submodules.addAll(getAllSubmodules(submodule)); } return submodules; } /** * Bubble sort * * @param targets */ public static void sort(final List<Artifact> targets) { int n = targets.size(); while(n != 0){ int newn = 0; for(int i = 1 ; i <= n-1 ; i++){ if (targets.get(i-1).toString().compareTo(targets.get(i).toString()) > 0){ Collections.swap(targets, i - 1, i); newn = i; } } n = newn; } } }