/** * Returns the project model that represents the whole application. If this projectModel is the root projectModel, it will return it. * * Note: This may be the synthetic shared-libs project in some cases. * * @return ProjectModel representing the whole application */ default ProjectModel getRootProjectModel() { ProjectModel projectModel = this; try { while (projectModel.getParentProject() != null) { projectModel = projectModel.getParentProject(); } } catch (NoSuchElementException e) { // Ignore... this just means that the parent didn't exist. // Ferma tends to throw a NoSuchElementException instead of just returning null } return projectModel; }
/** * Returns the project model that represents the whole application. If this projectModel is the root projectModel, it will return it. * * Note: This may be the synthetic shared-libs project in some cases. * * @return ProjectModel representing the whole application */ default ProjectModel getRootProjectModel() { ProjectModel projectModel = this; try { while (projectModel.getParentProject() != null) { projectModel = projectModel.getParentProject(); } } catch (NoSuchElementException e) { // Ignore... this just means that the parent didn't exist. // Ferma tends to throw a NoSuchElementException instead of just returning null } return projectModel; }
private List<String> getAllFatherProjectPaths(ProjectModel projectModel) { List<String> paths = new ArrayList<String>(); paths.add(projectModel.getRootFileModel().getFilePath()); while (projectModel.getParentProject() != null) { projectModel = projectModel.getParentProject(); paths.add(projectModel.getRootFileModel().getFilePath()); } return paths; } }
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; }
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; }
boolean isChildren = projectModel.getParentProject() != null; boolean isSkipped = projectModel.getRootFileModel() instanceof IdentifiedArchiveModel; switch (projectType.toLowerCase())
boolean isChildren = projectModel.getParentProject() != null; boolean isSkipped = projectModel.getRootFileModel() instanceof IdentifiedArchiveModel; switch (projectType.toLowerCase())
private void addProjectToChildFiles(FileModel fileModel, ProjectModel projectModel) { for (FileModel childFile : fileModel.getFilesInDirectory()) { if (childFile.getProjectModel() == null) { projectModel.addFileModel(childFile); childFile.setProjectModel(projectModel); } else if (childFile.getProjectModel().getParentProject() == null && !childFile.getProjectModel().equals(projectModel)) { // if the child has a project, but the project doesn't have a parent, associate it with the root project childFile.getProjectModel().setParentProject(projectModel); } addProjectToChildFiles(childFile, projectModel); } }
private void addProjectToChildFiles(FileModel fileModel, ProjectModel projectModel) { for (FileModel childFile : fileModel.getFilesInDirectory()) { boolean childHasProject = childFile.getProjectModel() != null; // Also, if it is a duplicate, check the canonical archive if (!childHasProject && childFile instanceof DuplicateArchiveModel) childHasProject = ((DuplicateArchiveModel)childFile).getCanonicalArchive().getProjectModel() != null; if (!childHasProject) { projectModel.addFileModel(childFile); } else if (childFile.getProjectModel() != null && childFile.getProjectModel().getParentProject() == null && !childFile.getProjectModel().equals(projectModel)) { // if the child has a project, but the project doesn't have a parent, associate it with the root // project childFile.getProjectModel().setParentProject(projectModel); } addProjectToChildFiles(childFile, projectModel); } }
private void addProjectToChildFiles(FileModel fileModel, ProjectModel projectModel) { for (FileModel childFile : fileModel.getFilesInDirectory()) { boolean childHasProject = childFile.getProjectModel() != null; // Also, if it is a duplicate, check the canonical archive if (!childHasProject && childFile instanceof DuplicateArchiveModel) childHasProject = ((DuplicateArchiveModel)childFile).getCanonicalArchive().getProjectModel() != null; if (!childHasProject) { projectModel.addFileModel(childFile); } else if (childFile.getProjectModel() != null && childFile.getProjectModel().getParentProject() == null && !childFile.getProjectModel().equals(projectModel)) { // if the child has a project, but the project doesn't have a parent, associate it with the root // project childFile.getProjectModel().setParentProject(projectModel); } addProjectToChildFiles(childFile, projectModel); } }
boolean isRootProject = traversal.getCurrent().getParentProject() == null; if (!isRootProject && rootFileModel instanceof ArchiveModel)
boolean isRootProject = traversal.getCurrent().getParentProject() == null; if (!isRootProject && rootFileModel instanceof ArchiveModel)
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); } }
project = project.getParentProject();
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); } }