use of org.eclipse.sw360.datahandler.thrift.projects.Project in project sw360portal by sw360.
the class ProjectRepository method filterAccessibleProjectsByIds.
@NotNull
private Set<Project> filterAccessibleProjectsByIds(User user, Set<String> searchIds) {
final Set<Project> accessibleProjects = getAccessibleProjects(user);
final Set<Project> output = new HashSet<>();
for (Project accessibleProject : accessibleProjects) {
if (searchIds.contains(accessibleProject.getId()))
output.add(accessibleProject);
}
return output;
}
use of org.eclipse.sw360.datahandler.thrift.projects.Project in project sw360portal by sw360.
the class ProjectDatabaseHandler method createProjectLink.
private Optional<ProjectLink> createProjectLink(String id, ProjectRelationship relationship, String parentNodeId, Deque<String> visitedIds, Map<String, Project> projectMap, Map<String, Release> releaseMap, int maxDepth) {
ProjectLink projectLink = null;
if (!visitedIds.contains(id) && (maxDepth < 0 || visitedIds.size() < maxDepth)) {
visitedIds.push(id);
Project project = projectMap.get(id);
if (project != null) {
projectLink = new ProjectLink(id, project.name);
if (project.isSetReleaseIdToUsage() && (maxDepth < 0 || visitedIds.size() < maxDepth)) {
// ProjectLink on the last level does not get children added
List<ReleaseLink> linkedReleases = componentDatabaseHandler.getLinkedReleases(project, releaseMap, visitedIds);
fillMainlineStates(linkedReleases, project.getReleaseIdToUsage());
projectLink.setLinkedReleases(nullToEmptyList(linkedReleases));
}
projectLink.setNodeId(generateNodeId(id)).setParentNodeId(parentNodeId).setRelation(relationship).setVersion(project.getVersion()).setState(project.getState()).setProjectType(project.getProjectType()).setClearingState(project.getClearingState()).setTreeLevel(visitedIds.size() - 1);
if (project.isSetLinkedProjects()) {
List<ProjectLink> subprojectLinks = iterateProjectRelationShips(project.getLinkedProjects(), projectLink.getNodeId(), visitedIds, projectMap, releaseMap, maxDepth);
projectLink.setSubprojects(subprojectLinks);
}
} else {
log.error("Broken ProjectLink in project with id: " + parentNodeId + ". Linked project with id " + id + " was not in the project cache");
}
visitedIds.pop();
}
return Optional.ofNullable(projectLink);
}
use of org.eclipse.sw360.datahandler.thrift.projects.Project in project sw360portal by sw360.
the class ProjectController method downloadLicenseInfo.
@RequestMapping(value = PROJECTS_URL + "/{id}/licenseinfo", method = RequestMethod.GET)
public void downloadLicenseInfo(@PathVariable("id") String id, OAuth2Authentication oAuth2Authentication, @RequestParam("generatorClassName") String generatorClassName, HttpServletResponse response) throws TException, IOException {
final User sw360User = restControllerHelper.getSw360UserFromAuthentication(oAuth2Authentication);
final Project sw360Project = projectService.getProjectForUserById(id, sw360User);
final Map<String, Set<String>> selectedReleaseAndAttachmentIds = new HashMap<>();
for (final String releaseId : sw360Project.getReleaseIdToUsage().keySet()) {
final Release release = releaseService.getReleaseForUserById(releaseId, sw360User);
if (release.isSetAttachments()) {
if (!selectedReleaseAndAttachmentIds.containsKey(releaseId)) {
selectedReleaseAndAttachmentIds.put(releaseId, new HashSet<>());
}
final Set<Attachment> attachments = release.getAttachments();
for (final Attachment attachment : attachments) {
selectedReleaseAndAttachmentIds.get(releaseId).add(attachment.getAttachmentContentId());
}
}
}
// TODO: implement method to determine excluded licenses
final Map<String, Set<LicenseNameWithText>> excludedLicenses = new HashMap<>();
final String projectName = sw360Project.getName();
final String timestamp = SW360Utils.getCreatedOn();
final OutputFormatInfo outputFormatInfo = licenseInfoService.getOutputFormatInfoForGeneratorClass(generatorClassName);
final String filename = String.format("LicenseInfo-%s-%s.%s", projectName, timestamp, outputFormatInfo.getFileExtension());
final LicenseInfoFile licenseInfoFile = licenseInfoService.getLicenseInfoFile(sw360Project, sw360User, generatorClassName, selectedReleaseAndAttachmentIds, excludedLicenses);
byte[] byteContent = licenseInfoFile.bufferForGeneratedOutput().array();
response.setContentType(outputFormatInfo.getMimeType());
response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", filename));
FileCopyUtils.copy(byteContent, response.getOutputStream());
}
use of org.eclipse.sw360.datahandler.thrift.projects.Project in project sw360portal by sw360.
the class ProjectController method getProjectsForUser.
@RequestMapping(value = PROJECTS_URL, method = RequestMethod.GET)
public ResponseEntity<Resources<Resource<Project>>> getProjectsForUser(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "type", required = false) String projectType, OAuth2Authentication oAuth2Authentication) throws TException {
User sw360User = restControllerHelper.getSw360UserFromAuthentication(oAuth2Authentication);
List<Project> sw360Projects = new ArrayList<>();
if (name != null && !name.isEmpty()) {
sw360Projects.addAll(projectService.searchProjectByName(name, sw360User));
} else {
sw360Projects.addAll(projectService.getProjectsForUser(sw360User));
}
List<Resource<Project>> projectResources = new ArrayList<>();
sw360Projects.stream().filter(project -> projectType == null || projectType.equals(project.projectType.name())).forEach(p -> {
Project embeddedProject = restControllerHelper.convertToEmbeddedProject(p);
projectResources.add(new Resource<>(embeddedProject));
});
Resources<Resource<Project>> resources = new Resources<>(projectResources);
return new ResponseEntity<>(resources, HttpStatus.OK);
}
use of org.eclipse.sw360.datahandler.thrift.projects.Project in project sw360portal by sw360.
the class ProjectController method downloadClearingReports.
@RequestMapping(value = PROJECTS_URL + "/{projectId}/attachments/clearingReports", method = RequestMethod.GET, produces = "application/zip")
public void downloadClearingReports(@PathVariable("projectId") String projectId, HttpServletResponse response, OAuth2Authentication oAuth2Authentication) throws TException {
final User sw360User = restControllerHelper.getSw360UserFromAuthentication(oAuth2Authentication);
final Project project = projectService.getProjectForUserById(projectId, sw360User);
final String filename = "Clearing-Reports-" + project.getName() + ".zip";
final Set<Attachment> attachments = project.getAttachments();
final Set<AttachmentContent> clearingAttachments = new HashSet<>();
for (final Attachment attachment : attachments) {
if (attachment.getAttachmentType().equals(AttachmentType.CLEARING_REPORT)) {
clearingAttachments.add(attachmentService.getAttachmentContent(attachment.getAttachmentContentId()));
}
}
try (InputStream attachmentStream = attachmentService.getStreamToAttachments(clearingAttachments, sw360User, project)) {
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", filename));
FileCopyUtils.copy(attachmentStream, response.getOutputStream());
} catch (final TException | IOException e) {
log.error(e.getMessage());
}
}
Aggregations