use of alien4cloud.dao.model.GetMultipleDataResult in project alien4cloud by alien4cloud.
the class LocationSecurityController method getAuthorizedEnvironmentsAndEnvTypesPerApplicationPaginated.
/**
* search applications,environments and environment types authorised to access the location.
*
* @return {@link RestResponse} that contains a {@link GetMultipleDataResult} of {@link GroupDTO}..
*/
@ApiOperation(value = "List all applications,environments and environment types authorized to access the location", notes = "Only user with ADMIN role can list authorized applications,environments and environment types to the location.")
@RequestMapping(value = "/applications/search", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("hasAuthority('ADMIN')")
public RestResponse<GetMultipleDataResult<ApplicationEnvironmentAuthorizationDTO>> getAuthorizedEnvironmentsAndEnvTypesPerApplicationPaginated(@PathVariable String orchestratorId, @PathVariable String locationId, @ApiParam(value = "Text Query to search.") @RequestParam(required = false) String query, @ApiParam(value = "Query from the given index.") @RequestParam(required = false, defaultValue = "0") int from, @ApiParam(value = "Maximum number of results to retrieve.") @RequestParam(required = false, defaultValue = "20") int size) {
Location location = locationService.getLocation(orchestratorId, locationId);
List<Application> applicationsRelatedToEnvironment = Lists.newArrayList();
List<Application> applicationsRelatedToEnvironmentType = Lists.newArrayList();
List<ApplicationEnvironment> environments = Lists.newArrayList();
List<String> environmentTypes = Lists.newArrayList();
List<Application> applications = Lists.newArrayList();
// we get all authorized applications and environment to not favor the one of them
if (MapUtils.isNotEmpty(location.getEnvironmentPermissions())) {
environments = alienDAO.findByIds(ApplicationEnvironment.class, location.getEnvironmentPermissions().keySet().toArray(new String[location.getEnvironmentPermissions().size()]));
Set<String> environmentApplicationIds = environments.stream().map(ae -> new String(ae.getApplicationId())).collect(Collectors.toSet());
applicationsRelatedToEnvironment = alienDAO.findByIds(Application.class, environmentApplicationIds.toArray(new String[environmentApplicationIds.size()]));
}
if (MapUtils.isNotEmpty(location.getEnvironmentTypePermissions())) {
environmentTypes.addAll(location.getEnvironmentTypePermissions().keySet());
Set<String> environmentTypeApplicationIds = Sets.newHashSet();
for (String envType : safe(location.getEnvironmentTypePermissions()).keySet()) {
environmentTypeApplicationIds.add(envType.split(":")[0]);
}
applicationsRelatedToEnvironmentType = alienDAO.findByIds(Application.class, environmentTypeApplicationIds.toArray(new String[environmentTypeApplicationIds.size()]));
}
if (MapUtils.isNotEmpty(location.getApplicationPermissions())) {
applications = alienDAO.findByIds(Application.class, location.getApplicationPermissions().keySet().toArray(new String[location.getApplicationPermissions().size()]));
}
List<ApplicationEnvironmentAuthorizationDTO> allDTOs = ApplicationEnvironmentAuthorizationDTO.buildDTOs(applicationsRelatedToEnvironment, applicationsRelatedToEnvironmentType, environments, applications, environmentTypes);
int to = (from + size < allDTOs.size()) ? from + size : allDTOs.size();
allDTOs = IntStream.range(from, to).mapToObj(allDTOs::get).collect(Collectors.toList());
List<String> ids = allDTOs.stream().map(appEnvDTO -> appEnvDTO.getApplication().getId()).collect(Collectors.toList());
IdsFilterBuilder idFilters = FilterBuilders.idsFilter().ids(ids.toArray(new String[ids.size()]));
GetMultipleDataResult<Application> tempResult = alienDAO.search(Application.class, query, null, idFilters, null, from, to, "id", false);
return RestResponseBuilder.<GetMultipleDataResult<ApplicationEnvironmentAuthorizationDTO>>builder().data(ApplicationEnvironmentAuthorizationDTO.convert(tempResult, allDTOs)).build();
}
use of alien4cloud.dao.model.GetMultipleDataResult in project alien4cloud by alien4cloud.
the class ApplicationEnvironmentAuthorizationDTO method convert.
public static GetMultipleDataResult<ApplicationEnvironmentAuthorizationDTO> convert(GetMultipleDataResult<Application> toConvert, List<ApplicationEnvironmentAuthorizationDTO> allDTOs) {
if (toConvert == null) {
return null;
}
GetMultipleDataResult<ApplicationEnvironmentAuthorizationDTO> converted = new GetMultipleDataResult<>();
ReflectionUtil.mergeObject(toConvert, converted, "data");
List<ApplicationEnvironmentAuthorizationDTO> data = Lists.newArrayList();
for (Application app : toConvert.getData()) {
for (ApplicationEnvironmentAuthorizationDTO appEnvDTO : allDTOs) {
if (app.getId().equals(appEnvDTO.getApplication().getId())) {
data.add(appEnvDTO);
}
}
}
converted.setData(data.toArray(new ApplicationEnvironmentAuthorizationDTO[toConvert.getData().length]));
return converted;
}
use of alien4cloud.dao.model.GetMultipleDataResult in project alien4cloud by alien4cloud.
the class QuickSearchController method searchByType.
private GetMultipleDataResult searchByType(BasicSearchRequest requestObject, Set<String> authoIndexes, Set<Class<?>> classes, Map<String, String[]> filters, FilterBuilder filterBuilder) {
String[] indices = authoIndexes.toArray(new String[authoIndexes.size()]);
if (indices.length == 0) {
return new GetMultipleDataResult();
}
Class<?>[] classesArray = classes.toArray(new Class<?>[classes.size()]);
GetMultipleDataResult searchResult = alienDAO.search(indices, classesArray, requestObject.getQuery(), filters, filterBuilder, FetchContext.QUICK_SEARCH, requestObject.getFrom(), requestObject.getSize());
return searchResult;
}
use of alien4cloud.dao.model.GetMultipleDataResult in project alien4cloud by alien4cloud.
the class ComponentTest method recommendForCapabilityWhenAlreadyRecommendedTest.
@Test
public void recommendForCapabilityWhenAlreadyRecommendedTest() {
RestResponse<NodeType> response = null;
RecommendationRequest recRequest = new RecommendationRequest();
recRequest.setComponentId(indexedNodeType.getId());
recRequest.setCapability("jdni");
response = componentController.recommendComponentForCapability(recRequest);
assertNull(response.getError());
assertNotNull(response.getData());
assertTrue(response.getData().getDefaultCapabilities().contains("jdni"));
Map<String, String[]> filters = new HashMap<>();
filters.put(AlienConstants.DEFAULT_CAPABILITY_FIELD_NAME, new String[] { "jdni" });
GetMultipleDataResult result = dao.find(NodeType.class, filters, 1);
NodeType component;
if (result == null || result.getData() == null || result.getData().length == 0) {
component = null;
} else {
component = (NodeType) result.getData()[0];
}
assertNotNull(component);
assertNotNull(component.getDefaultCapabilities());
assertTrue(component.getId().equals(recRequest.getComponentId()));
assertTrue(component.getDefaultCapabilities().contains("jdni"));
}
use of alien4cloud.dao.model.GetMultipleDataResult in project alien4cloud by alien4cloud.
the class SuggestionController method tagSuggest.
/**
* Get suggestion for tags based on current tags defined on the components.
*
* @param tagName The name of the tag for which to get suggestion.
* @param searchPrefix The current prefix for the tag suggestion.
* @return A {@link RestResponse} that contains a list of suggestions for the tag key.
*/
@ApiIgnore
@RequestMapping(value = "/tag/{tagName}/{searchPrefix}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("isAuthenticated()")
public RestResponse<String[]> tagSuggest(@PathVariable String tagName, @PathVariable String searchPrefix) {
String suggestFieldPath = TAG_FIELD.concat(".").concat(tagName);
GetMultipleDataResult searchResult = dao.suggestSearch(INDEXES, CLASSES, suggestFieldPath, searchPrefix, FetchContext.TAG_SUGGESTION, 0, SUGGESTION_COUNT);
String[] types = searchResult.getTypes();
Set<String> tagsSuggestions = Sets.newHashSet();
for (int i = 0; i < types.length; i++) {
List<Tag> tags;
if (types[i].equals(MappingBuilder.indexTypeFromClass(Application.class))) {
Application app = (Application) searchResult.getData()[i];
tags = app.getTags();
} else {
AbstractToscaType indexedToscaElement = (AbstractToscaType) searchResult.getData()[i];
tags = indexedToscaElement.getTags();
}
addSuggestedTag(tags, tagName, searchPrefix, tagsSuggestions);
}
return RestResponseBuilder.<String[]>builder().data(tagsSuggestions.toArray(new String[tagsSuggestions.size()])).build();
}
Aggregations