use of org.eclipse.che.api.core.model.workspace.devfile.UserDevfile in project che-server by eclipse-che.
the class UserDevfileDaoTest method shouldGetDevfilesByNamespace.
@Test
public void shouldGetDevfilesByNamespace() throws Exception {
final UserDevfileImpl devfile1 = devfiles[0];
final UserDevfileImpl devfile2 = devfiles[1];
assertEquals(devfile1.getNamespace(), devfile2.getNamespace(), "Namespaces must be the same");
final Page<UserDevfile> found = userDevfileDaoDao.getByNamespace(devfile1.getNamespace(), 6, 0);
assertEquals(found.getTotalItemsCount(), 2);
assertEquals(found.getItemsCount(), 2);
assertEquals(new HashSet<>(found.getItems()), new HashSet<>(asList(devfile1, devfile2)));
}
use of org.eclipse.che.api.core.model.workspace.devfile.UserDevfile in project che-server by eclipse-che.
the class UserDevfileDaoTest method shouldBeAbleToGetAvailableToUserDevfilesWithFilter2.
@Test
public void shouldBeAbleToGetAvailableToUserDevfilesWithFilter2() throws ServerException, NotFoundException, ConflictException {
// given
final UserDevfileImpl update = devfiles[0];
update.setName("New345Name");
userDevfileDaoDao.update(update);
// when
final Page<UserDevfile> result = userDevfileDaoDao.getDevfiles(30, 0, ImmutableList.of(new Pair<>("name", "like:%w345N%")), Collections.emptyList());
// then
assertEquals(new HashSet<>(result.getItems()), ImmutableSet.of(update));
}
use of org.eclipse.che.api.core.model.workspace.devfile.UserDevfile in project che-server by eclipse-che.
the class UserDevfileDaoTest method shouldCreateUserDevfileWithNullDescription.
@Test
public void shouldCreateUserDevfileWithNullDescription() throws Exception {
// given
final UserDevfileImpl devfile = createUserDevfile(accounts[0]);
devfile.setDescription(null);
// when
userDevfileDaoDao.create(devfile);
Optional<UserDevfile> devfileOptional = userDevfileDaoDao.getById(devfile.getId());
assertTrue(devfileOptional.isPresent());
assertNull(devfileOptional.get().getDescription());
assertEquals(devfileOptional, Optional.of(new UserDevfileImpl(devfile)));
}
use of org.eclipse.che.api.core.model.workspace.devfile.UserDevfile in project che-server by eclipse-che.
the class UserDevfileDaoTest method shouldBeAbleToGetAvailableToUserDevfilesWithFilterAndLimit.
@Test
public void shouldBeAbleToGetAvailableToUserDevfilesWithFilterAndLimit() throws ServerException, NotFoundException, ConflictException {
// given
final UserDevfileImpl update = devfiles[0];
update.setName("New345Name");
userDevfileDaoDao.update(update);
// when
final Page<UserDevfile> result = userDevfileDaoDao.getDevfiles(12, 0, ImmutableList.of(new Pair<>("name", "like:devfileName%")), Collections.emptyList());
// then
assertEquals(result.getItems().size(), 9);
}
use of org.eclipse.che.api.core.model.workspace.devfile.UserDevfile in project che-server by eclipse-che.
the class JpaUserDevfileDao method doGetDevfiles.
@Transactional(rollbackOn = { ServerException.class })
protected Page<UserDevfile> doGetDevfiles(int maxItems, int skipCount, List<Pair<String, String>> filter, List<Pair<String, String>> order, Supplier<UserDevfileSearchQueryBuilder> queryBuilderSupplier) throws ServerException {
if (filter != null && !filter.isEmpty()) {
List<Pair<String, String>> invalidFilter = filter.stream().filter(p -> !VALID_SEARCH_FIELDS.contains(p.first.toLowerCase())).collect(toList());
if (!invalidFilter.isEmpty()) {
throw new IllegalArgumentException("Filtering allowed only by " + VALID_SEARCH_FIELDS + " but got: " + invalidFilter);
}
}
List<Pair<String, String>> effectiveOrder = DEFAULT_ORDER;
if (order != null && !order.isEmpty()) {
List<Pair<String, String>> invalidOrder = order.stream().filter(p -> !VALID_ORDER_FIELDS.contains(p.first.toLowerCase())).collect(toList());
if (!invalidOrder.isEmpty()) {
throw new IllegalArgumentException("Order allowed only by " + VALID_ORDER_FIELDS + "¬ but got: " + invalidOrder);
}
List<Pair<String, String>> invalidSortOrder = order.stream().filter(p -> !p.second.equalsIgnoreCase("asc") && !p.second.equalsIgnoreCase("desc")).collect(Collectors.toList());
if (!invalidSortOrder.isEmpty()) {
throw new IllegalArgumentException("Invalid sort order direction. Possible values are 'asc' or 'desc' but got: " + invalidSortOrder);
}
effectiveOrder = order;
}
try {
final long count = queryBuilderSupplier.get().withFilter(filter).buildCountQuery().getSingleResult();
if (count == 0) {
return new Page<>(emptyList(), skipCount, maxItems, count);
}
List<UserDevfileImpl> result = queryBuilderSupplier.get().withFilter(filter).withOrder(effectiveOrder).withMaxItems(maxItems).withSkipCount(skipCount).buildSelectItemsQuery().getResultList().stream().map(UserDevfileImpl::new).collect(toList());
return new Page<>(result, skipCount, maxItems, count);
} catch (RuntimeException x) {
throw new ServerException(x.getLocalizedMessage(), x);
}
}
Aggregations