@Override public Iterable<ProjectModelTraversal> getChildren(final ProjectModelTraversal traversal) { ProjectModel canonicalProject = traversal.getCanonicalProject(); return Iterables.transform(canonicalProject.getChildProjects(), new Function<ProjectModel, ProjectModelTraversal>() { @Override public ProjectModelTraversal apply(ProjectModel input) { return new ProjectModelTraversal(traversal, input, AllTraversalStrategy.this); } }); }
private void writeCsvRecordForProject(Map<String, CSVWriter> projectToFile, String outputFolderPath, ProjectModel projectModel, String[] line) { if (!projectToFile.containsKey(projectModel.getName())) { String filename = PathUtil.cleanFileName(projectModel.getRootFileModel().getFileName()) + ".csv"; CSVWriter writer = initCSVWriter(outputFolderPath + filename); projectToFile.put(projectModel.getName(), writer); LOG.info("Setting csv filename to: " + filename + " for id: " + projectModel.getId()); projectModel.setCsvFilename(filename); } projectToFile.get(projectModel.getName()).writeNext(line); }
/** * Returns this project model as well as all of its children, recursively. */ default Set<ProjectModel> getAllProjectModels() { Set<ProjectModel> result = new HashSet<>(); result.add(this); for (ProjectModel child : getChildProjects()) result.addAll(child.getAllProjectModels()); return result; }
default Set<ProjectModel> getApplications(ProjectModel project) { Set<ProjectModel> applications = new HashSet<>(); for (ProjectModel duplicate : project.getDuplicateProjects()) { duplicate.getApplications().forEach(applications::add); } ProjectModel parent = project.getParentProject(); if (parent != null) parent.getApplications().forEach(applications::add); if (parent == null) applications.add(project); return applications; }
protected String getProjectName(ProjectModel projectModel) { FileModel fileModel = projectModel.getRootFileModel(); if (fileModel != null) { return fileModel.getFileName(); } return projectModel.getName(); }
private void serializeProjectMetadata(ProjectTraversalReducedDTO traversalDTO, PersistedProjectModelTraversalModel traversal) { ProjectModel current = traversal.getCurrentProject(); ProjectModel canonical = traversal.getCanonicalProject(); traversalDTO.setId(traversal.getId()); traversalDTO.setCurrentID(current.getId()); traversalDTO.setCanonicalID(canonical.getId()); FileModel rootFileModel = canonical.getRootFileModel(); if (rootFileModel != null) { traversalDTO.setSha1(rootFileModel.getSHA1Hash()); } traversalDTO.setName(canonical.getName()); traversalDTO.setCanonicalFilename(rootFileModel.getFileName()); traversalDTO.setPath(traversal.getPath()); traversalDTO.setOrganization(canonical.getOrganization()); traversalDTO.setUrl(canonical.getURL()); if (canonical instanceof MavenProjectModel) { traversalDTO.setGav(((MavenProjectModel) canonical).getMavenIdentifier()); } }
private void setupProject(GraphRewrite event, DuplicateArchiveModel duplicateArchive) { Service<DuplicateProjectModel> duplicateProjectService = event.getGraphContext().service(DuplicateProjectModel.class); ArchiveModel canonicalArchive = duplicateArchive.getCanonicalArchive(); ProjectModel canonicalProject = canonicalArchive.getProjectModel(); DuplicateProjectModel duplicateProject = duplicateProjectService.create(); duplicateProject.setCanonicalProject(canonicalProject); duplicateProject.setName(canonicalProject.getName()); if (duplicateArchive.getParentArchive() != null) duplicateProject.setParentProject(duplicateArchive.getParentArchive().getProjectModel()); duplicateProject.setRootFileModel(duplicateArchive); if (canonicalProject.getParentProject() == null) { ProjectService projectService = new ProjectService(event.getGraphContext()); ProjectModel sharedLibsProject = projectService.getOrCreateSharedLibsProject(); canonicalProject.setParentProject(sharedLibsProject); } duplicateProject.addFileModel(duplicateArchive); } }
for (OverviewReportLineMessageModel find : findAll) String projectPrettyPath = projectModel.getRootFileModel().getPrettyPath(); ProjectModel project = find.getProject(); boolean found = false; while (project != null && !found) if (projectPrettyPath.equals(project.getRootFileModel().getPrettyPath())) project = project.getParentProject(); reportService.setUniqueFilename(applicationReportModel, projectModel.getName(), "html");
@Override public void perform(GraphRewrite event, EvaluationContext context) { WindupConfigurationModel configuration = WindupConfigurationService.getConfigurationModel(event.getGraphContext()); for (FileModel mainFileModel : configuration.getInputPaths()) { ProjectService projectModelService = new ProjectService(event.getGraphContext()); ProjectModel mainProjectModel = mainFileModel.getProjectModel(); if (mainProjectModel == null) { mainProjectModel = projectModelService.create(); mainProjectModel.setName(mainFileModel.getFileName()); mainProjectModel.setDescription("Source Directory"); mainProjectModel.setRootFileModel(mainFileModel); mainProjectModel.addFileModel(mainFileModel); } addProjectToChildFiles(mainFileModel, mainProjectModel); } }
public Path getRelativeTransformedXSLTPath(FileModel payload) { Path outputPath = Paths.get(""); if (payload != null) { String ancestorFolder = payload.getProjectModel().getRootProjectModel().getName(); outputPath = outputPath.resolve(PathUtil.cleanFileName(ancestorFolder)); if (!ancestorFolder.equals(payload.getProjectModel().getName())) { outputPath = outputPath.resolve(PathUtil.cleanFileName(payload.getProjectModel().getName())); } } outputPath = outputPath.resolve(TRANSFORMEDXML_DIR_NAME); return outputPath; }
@Override public int compare(ProjectModel o1, ProjectModel o2) { String filePath1 = o1.getRootFileModel().getFilePath(); String filePath2 = o2.getRootFileModel().getFilePath(); return filePathComparator.compare(filePath1, filePath2); } }
private Integer countLibrariesInModel(GraphContext graphContext, ProjectModel projectModel) { int count = 0; for (ProjectModel child: projectModel.getChildProjects()) { if(child.getRootFileModel() instanceof ArchiveModel) { count++; count += countLibrariesInModel(graphContext, child); } } return count; } }
/** * Gets the project model used for shared libraries (libraries duplicated in multiple places within one or * more applications). */ public ProjectModel getOrCreateSharedLibsProject() { ProjectService service = new ProjectService(getGraphContext()); ProjectModel sharedLibsProject = service.getByUniqueID(SHARED_LIBS_UNIQUE_ID); if (sharedLibsProject == null) { sharedLibsProject = service.create(); sharedLibsProject.setName(SHARED_LIBS_APP_NAME); sharedLibsProject.setUniqueID(SHARED_LIBS_UNIQUE_ID); sharedLibsProject.setProjectType(ProjectModel.TYPE_VIRTUAL); // attach a directory to it, as we generally assume that all projects have a location on disk Path archivesDirectory = WindupConfigurationService.getArchivesPath(getGraphContext()); Path sharedLibsPath = archivesDirectory.resolve("shared-libs-" + RandomStringUtils.randomAlphabetic(6)).resolve(SHARED_LIBS_FILENAME); PathUtil.createDirectory(sharedLibsPath, "shared libs virtual app"); FileModel sharedLibsFileModel = new FileService(getGraphContext()).createByFilePath(sharedLibsPath.toString()); ApplicationModel applicationModel = GraphService.addTypeToModel(getGraphContext(), sharedLibsFileModel, ApplicationModel.class); applicationModel.setApplicationName(SHARED_LIBS_FILENAME); sharedLibsProject.setRootFileModel(sharedLibsFileModel); sharedLibsProject.addFileModel(sharedLibsFileModel); // attach this to the configuration, so that reporting treats it as a standalone app WindupConfigurationModel configuration = WindupConfigurationService.getConfigurationModel(getGraphContext()); configuration.addInputPath(sharedLibsFileModel); } return sharedLibsProject; }
File inputPath = fileModel.getProjectModel().getRootProjectModel().getRootFileModel().asFile(); if (PathUtil.isInSubDirectory(inputPath, fileModel.asFile()))
projectModel.setName(archiveModel.getArchiveName()); projectModel.setRootFileModel(archiveModel); projectModel.setDescription("Not available"); projectModel.setProjectType(extension); projectModel.addFileModel(archiveModel); projectModel.addFileModel(f); childProjectModel.setParentProject(projectModel);
/** * Recursively crawls this {@link ProjectModelTraversal} and adds all of the {@link ProjectModel}s to a {@link Set}. The exact projects returns * will be affected by the {@link TraversalStrategy} in use by the current traversal. * * This is the same as {@link ProjectModelTraversal#getAllProjects(boolean)} except that it returns a Set of vertices instead of frames. */ public Set<Vertex> getAllProjectsAsVertices(boolean recursive) { Set<Vertex> vertices = new LinkedHashSet<>(); for (ProjectModel projectModel : getAllProjects(recursive)) vertices.add(projectModel.getElement()); return vertices; }
/** * Returns the application that this file is a part of. This is especially useful in the case of analyzing multiple application's, as we often * need to know which application a particular file is associated with. * <p> * This is a shortcut for calling getProjectModel().getRootProjectModel(). * <p> * Note: In the case of a shared library, this may return the "shared-libs" application. */ default ProjectModel getApplication() { ProjectModel projectModel = getProjectModel(); if (projectModel == null) return null; return projectModel.getRootProjectModel(); }
private List<Vertex> getProjectAndChildren(ProjectModel projectModel) { ArrayList<Vertex> result = new ArrayList<>(); result.add(projectModel.getElement()); for (ProjectModel child : projectModel.getChildProjects()) { result.addAll(getProjectAndChildren(child)); } return result; }
rootProjectModel = rootProjectModel.getRootProjectModel(); GraphTraversal<Vertex, Vertex> pipe = new GraphTraversalSource(getGraphContext().getGraph()).V(rootProjectModel.getElement()); pipe.in(ApplicationReportModel.REPORT_TO_PROJECT_MODEL); pipe.has(ApplicationReportModel.MAIN_APPLICATION_REPORT, true);