Skip to content

Commit

Permalink
feat: update jnosql project returning list instead of iterable
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Mar 18, 2024
1 parent 10ff503 commit 07beed6
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
import org.eclipse.jnosql.mapping.metadata.EntityMetadata;
import org.eclipse.jnosql.mapping.metadata.FieldMetadata;

import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

import static java.util.Objects.nonNull;
import static java.util.Objects.requireNonNull;
Expand Down Expand Up @@ -113,10 +113,9 @@ public <S extends T> S save(S entity) {
}

@Override
public <S extends T> Iterable<S> saveAll(Iterable<S> entities) {
public <S extends T> List<S> saveAll(List<S> entities) {
requireNonNull(entities, "entities is required");
return StreamSupport.stream(entities.spliterator(), false)
.map(this::save).collect(toList());
return entities.stream().map(this::save).collect(toList());
}


Expand Down Expand Up @@ -160,10 +159,9 @@ public void delete(T entity) {
}

@Override
public void deleteAll(Iterable<? extends T> entities) {
public void deleteAll(List<? extends T> entities) {
Objects.requireNonNull(entities, "entities is required");
StreamSupport.stream(entities.spliterator(), false)
.forEach(this::delete);
entities.forEach(this::delete);
}

@Override
Expand All @@ -173,9 +171,10 @@ public <S extends T> S insert(S entity) {
}

@Override
public <S extends T> Iterable<S> insertAll(Iterable<S> entities) {
public <S extends T> List<S> insertAll(List<S> entities) {
Objects.requireNonNull(entities, "entities is required");
return template().insert(entities);
return stream(template().insert(entities).spliterator(), false)
.toList();
}

@Override
Expand All @@ -185,9 +184,10 @@ public <S extends T> S update(S entity) {
}

@Override
public <S extends T> Iterable<S> updateAll(Iterable<S> entities) {
public <S extends T> List<S> updateAll(List<S> entities) {
Objects.requireNonNull(entities, "entities is required");
return template().update(entities);
return stream(template().update(entities).spliterator(), false)
.toList();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.StreamSupport;

import static java.util.stream.StreamSupport.stream;

/**
* Enumeration representing the operations with annotations.
Expand All @@ -37,7 +38,7 @@ public Object invoke(Operation operation) {
Object param = operation.params[0];
ReturnType returnType = new ReturnType(operation.method);
if (param instanceof Iterable entities) {
Iterable<?> result = operation.repository.insertAll(entities);
List<?> result = operation.repository.insertAll(stream(entities.spliterator(), false).toList());
return returnInsert(returnType, result);
} else if (param.getClass().isArray()) {
Iterable<?> result = operation.repository.insertAll(Arrays.asList((Object[]) param));
Expand All @@ -49,13 +50,13 @@ public Object invoke(Operation operation) {
}

private static Object returnInsert(ReturnType returnType, Object result) {
if(returnType.isVoid()){
if (returnType.isVoid()) {
return Void.TYPE;
}else if(returnType.isInt()){
} else if (returnType.isInt()) {
return 1;
} else if(returnType.isLong()){
} else if (returnType.isLong()) {
return 1L;
}else {
} else {
return result;
}
}
Expand All @@ -81,17 +82,18 @@ public Object invoke(Operation operation) {

private static Object executeIterable(Operation operation, Iterable entities, ReturnType returnType,
boolean isArray, Object param) {
Iterable result = operation.repository.updateAll(entities);

List<?> result = operation.repository.updateAll(stream(entities.spliterator(), false).toList());
if (returnType.isVoid()) {
return Void.TYPE;
} else if (returnType.isBoolean()) {
return true;
} else if (returnType.isInt()) {
return (int) StreamSupport.stream(entities.spliterator(), false).count();
} else if(returnType.isLong()){
return StreamSupport.stream(entities.spliterator(), false).count();
}else if (isArray) {
return param;
return result.size();
} else if (returnType.isLong()) {
return (long) result.size();
} else if (isArray) {
return result.toArray();
} else {
return entities;
}
Expand Down Expand Up @@ -133,15 +135,15 @@ public Object invoke(Operation operation) {

private static Object executeIterable(Operation operation, Iterable entities, ReturnType returnType) {

operation.repository.deleteAll(entities);
operation.repository.deleteAll(stream(entities.spliterator(), false).toList());
if (returnType.isVoid()) {
return Void.TYPE;
} else if (returnType.isBoolean()) {
return true;
} else if (returnType.isInt()) {
return (int) StreamSupport.stream(entities.spliterator(), false).count();
return (int) stream(entities.spliterator(), false).count();
} else if (returnType.isLong()) {
return StreamSupport.stream(entities.spliterator(), false).count();
return stream(entities.spliterator(), false).count();
}
return null;
}
Expand All @@ -154,7 +156,7 @@ private static Object executeSingleEntity(Operation operation, Object param, Ret
return true;
} else if (returnType.isInt()) {
return 1;
}else if (returnType.isLong()) {
} else if (returnType.isLong()) {
return 1L;
}
return null;
Expand All @@ -170,7 +172,7 @@ public Object invoke(Operation operation) {
Object param = operation.params[0];
ReturnType returnType = new ReturnType(operation.method);
if (param instanceof Iterable entities) {
Iterable<?> result = operation.repository.saveAll(entities);
Iterable<?> result = operation.repository.saveAll(stream(entities.spliterator(), false).toList());
return returnType.isVoid() ? Void.TYPE : result;
} else if (param.getClass().isArray()) {
Iterable<?> result = operation.repository.saveAll(Arrays.asList((Object[]) param));
Expand Down Expand Up @@ -207,10 +209,9 @@ public boolean equals(Object o) {
}



@Override
public int hashCode() {
return Objects.hash(method, repository) + 31 * Arrays.hashCode(params);
return Objects.hash(method, repository) + 31 * Arrays.hashCode(params);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ void shouldSaveIterable() {
ArgumentCaptor<User> captor = ArgumentCaptor.forClass(User.class);

User user = new User("ada", "Ada", 10);
userRepository.saveAll(Collections.singleton(user));
userRepository.saveAll(Collections.singletonList(user));
Mockito.verify(template).insert(captor.capture());
User value = captor.getValue();
assertEquals(user, value);
Expand All @@ -124,7 +124,7 @@ void shouldInsertIterable() {
ArgumentCaptor<Iterable> captor = ArgumentCaptor.forClass(Iterable.class);

User user = new User("ada", "Ada", 10);
userRepository.insertAll(Collections.singleton(user));
userRepository.insertAll(Collections.singletonList(user));
Mockito.verify(template).insert(captor.capture());
User value = (User) captor.getValue().iterator().next();
assertEquals(user, value);
Expand All @@ -147,7 +147,7 @@ void shouldUpdateIterable() {
ArgumentCaptor<Iterable> captor = ArgumentCaptor.forClass(Iterable.class);

User user = new User("ada", "Ada", 10);
userRepository.updateAll(Collections.singleton(user));
userRepository.updateAll(Collections.singletonList(user));
Mockito.verify(template).update(captor.capture());
User value = (User) captor.getValue().iterator().next();
assertEquals(user, value);
Expand Down

0 comments on commit 07beed6

Please sign in to comment.