Skip to content

Commit

Permalink
Hmmmmm
Browse files Browse the repository at this point in the history
  • Loading branch information
derjust committed Jan 30, 2018
1 parent fd04d75 commit 184f287
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 6 deletions.
Expand Up @@ -28,16 +28,16 @@ public interface Query<T> {
* @throws IllegalStateException if called for a Java
* Persistence query language UPDATE or DELETE statement
*/
public List<T> getResultList();
List<T> getResultList();

/**
* Execute a SELECT query that returns a single result.
* @return the result
*/
public T getSingleResult();
T getSingleResult();


public void setScanEnabled(boolean scanEnabled);
public void setScanCountEnabled(boolean scanCountEnabled);
void setScanEnabled(boolean scanEnabled);
void setScanCountEnabled(boolean scanCountEnabled);

}
Expand Up @@ -25,6 +25,10 @@
*/
public interface DynamoDBQueryCriteria<T, ID> {

default DynamoDBQueryCriteria<T, ID> NULL() {
return new NullDynamoDBQueryCriteria();
}

DynamoDBQueryCriteria<T, ID> withSingleValueCriteria(String propertyName, ComparisonOperator comparisonOperator,
Object value, Class<?> type);

Expand Down
@@ -0,0 +1,96 @@
package org.socialsignin.spring.data.dynamodb.repository.query;

import com.amazonaws.services.dynamodbv2.model.ComparisonOperator;
import org.socialsignin.spring.data.dynamodb.core.DynamoDBOperations;
import org.socialsignin.spring.data.dynamodb.query.Query;
import org.springframework.data.domain.Sort;

import java.util.Collections;
import java.util.List;

public class NullDynamoDBQueryCriteria<T, ID> implements DynamoDBQueryCriteria<T, ID> {

private static final Query<Object> EMPTY_QUERY_RESULT = new Query<Object>() {
@Override
public List<Object> getResultList() {
return Collections.emptyList();
}

@Override
public Object getSingleResult() {
return null;
}

@Override
public void setScanEnabled(boolean scanEnabled) {
}

@Override
public void setScanCountEnabled(boolean scanCountEnabled) {
}
};

private static final Query<Long> ZERO_QUERY_RESULT = new Query<Long>() {
private final Long ZERO = Long.valueOf(0L);
private final List<Long> ZERO_LIST = Collections.singletonList(ZERO);

@Override
public List<Long> getResultList() {
return ZERO_LIST;
}

@Override
public Long getSingleResult() {
return ZERO;
}

@Override
public void setScanEnabled(boolean scanEnabled) {
}

@Override
public void setScanCountEnabled(boolean scanCountEnabled) {
}
};


@Override
public DynamoDBQueryCriteria<T, ID> withSingleValueCriteria(String propertyName, ComparisonOperator comparisonOperator, Object value, Class<?> type) {
return this;
}

@Override
public DynamoDBQueryCriteria<T, ID> withNoValuedCriteria(String segment, ComparisonOperator null1) {
return this;
}

@Override
public DynamoDBQueryCriteria<T, ID> withPropertyEquals(String segment, Object next, Class<?> type) {
return this;
}

@Override
public DynamoDBQueryCriteria<T, ID> withPropertyIn(String segment, Iterable<?> o, Class<?> type) {
return this;
}

@Override
public DynamoDBQueryCriteria<T, ID> withPropertyBetween(String segment, Object value1, Object value2, Class<?> type) {
return this;
}

@Override
public DynamoDBQueryCriteria<T, ID> withSort(Sort sort) {
return this;
}

@Override
public Query<T> buildQuery(DynamoDBOperations dynamoDBOperations) {
return (Query<T>)EMPTY_QUERY_RESULT;
}

@Override
public Query<Long> buildCountQuery(DynamoDBOperations dynamoDBOperations, boolean pageQuery) {
return ZERO_QUERY_RESULT;
}
}
Expand Up @@ -28,6 +28,7 @@
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.time.Instant;
import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
Expand All @@ -51,7 +52,11 @@ public void setUp() {

@Test
public void testFindAll() {
List<User> actual = userRepository.findAllByOrderByName();
//List<User> actual1 = userRepository.findByLeaveDate(Instant.now());

List<User> actual3 = userRepository.findByNameOrderByNameAsc("x");

// List<User> actual = userRepository.findAllByOrderByName();
}
}

Expand Down
Expand Up @@ -31,7 +31,10 @@ public interface UserRepository extends Repository<User, String> {
List<User> findByLeaveDate(Instant leaveDate);

@EnableScan
List<User> findAllByOrderByName();
List<User> findByNameOrderByNameAsc(String name);

@EnableScan
List<User> findAll();

@EnableScan
Optional<User> findByName(String name);
Expand Down

0 comments on commit 184f287

Please sign in to comment.