Package org.springframework.data.simpledb.repository.support

Source Code of org.springframework.data.simpledb.repository.support.SimpleDbRepositoryImpl

/*
* Copyright 2008-2012 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.simpledb.repository.support;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.simpledb.core.QueryBuilder;
import org.springframework.data.simpledb.core.SimpleDbOperations;
import org.springframework.data.simpledb.repository.SimpleDbPagingAndSortingRepository;
import org.springframework.data.simpledb.repository.support.entityinformation.SimpleDbEntityInformation;
import org.springframework.util.Assert;

@org.springframework.stereotype.Repository
public class SimpleDbRepositoryImpl<T, ID extends Serializable> implements PagingAndSortingRepository<T, ID>,
    SimpleDbPagingAndSortingRepository<T, ID> {

  private final SimpleDbEntityInformation<T, ID> entityInformation;
  private final SimpleDbOperations operations;
  private final boolean consistentRead;

  public SimpleDbRepositoryImpl(SimpleDbEntityInformation<T, ID> entityInformation,
      SimpleDbOperations simpledbOperations) {
    Assert.notNull(simpledbOperations);
    Assert.notNull(entityInformation);
    this.operations = simpledbOperations;
    this.entityInformation = entityInformation;
    this.consistentRead = simpledbOperations.getSimpleDb().isConsistentRead();
  }

  @Override
  public <S extends T> S save(S entity) {
    return save(entity, consistentRead);
  }

  @Override
  public <S extends T> Iterable<S> save(Iterable<S> entities) {
    return save(entities, consistentRead);
  }

  @Override
  public T findOne(ID id) {
    return findOne(id, consistentRead);
  }

  @Override
  public boolean exists(ID id) {
    return exists(id, consistentRead);
  }

  @Override
  public Iterable<T> findAll() {
    return findAll(consistentRead);
  }

  @Override
  public Iterable<T> findAll(Iterable<ID> ids) {
    return findAll(ids, consistentRead);
  }

  @Override
  public Iterable<T> findAll(Sort sort) {
    return findAll(sort, consistentRead);
  }

  @Override
  public Page<T> findAll(Pageable pageable) {
    return findAll(pageable, consistentRead);
  }

  @Override
  public long count() {
    return count(consistentRead);
  }

  @Override
  public void delete(ID id) {
    delete(id, consistentRead);
  }

  @Override
  public void delete(T entity) {
    operations.delete(entity);
  }

  @Override
  public void delete(Iterable<? extends T> entities) {
    delete(entities, consistentRead);
  }

  @Override
  public void deleteAll() {
    deleteAll(consistentRead);
  }

  // --------------------------------------------------
  @Override
  public <S extends T> S save(S entity, boolean consistentRead) {
    return operations.createOrUpdate(entity);
  }

  @Override
  public <S extends T> List<S> save(Iterable<S> entities, boolean consistentRead) {
    List<S> result = new ArrayList<S>();
    if(entities == null) {
      return result;
    }
    for(S entity : entities) {
      result.add(save(entity, consistentRead));
    }
    return result;
  }

  @Override
  public T findOne(ID id, boolean consistentRead) {
    Assert.notNull(id, "The given id must not be null!");
    return operations.read(id, entityInformation.getJavaType(), consistentRead);
  }

  @Override
  public boolean exists(ID id, boolean consistentRead) {
    Assert.notNull(id, "The given id must not be null!");
    return findOne(id, consistentRead) != null;
  }

  @Override
  public List<T> findAll(boolean consistentRead) {
    return operations.find(entityInformation.getJavaType(), new QueryBuilder(entityInformation).toString(),
        consistentRead);
  }

  @Override
  public List<T> findAll(Iterable<ID> ids, boolean consistentRead) {
    return operations.find(entityInformation.getJavaType(), new QueryBuilder(entityInformation).withIds(ids)
        .toString(), consistentRead);
  }

  @Override
  public List<T> findAll(Sort sort, boolean consistentRead) {
    return operations.find(entityInformation.getJavaType(), new QueryBuilder(entityInformation).with(sort)
        .toString(), consistentRead);
  }

  @Override
  public Page<T> findAll(Pageable pageable, boolean consistentRead) {
    return operations.executePagedQuery(entityInformation.getJavaType(),
        new QueryBuilder(entityInformation).toString(), pageable, consistentRead);
  }

  @Override
  public long count(boolean consistentRead) {
    return operations.count(entityInformation.getJavaType(), consistentRead);
  }

  @Override
  public void delete(ID id, boolean consistentRead) {
    Assert.notNull(id, "The given id must not be null!");

    if(consistentRead) {
      T entity = findOne(id, consistentRead);

      if(entity == null) {
        throw new EmptyResultDataAccessException(String.format("No %s entity with id %s exists!",
            entityInformation.getJavaType(), id));
      }
    }

    operations.delete(entityInformation.getDomain(), (String) id);
  }

  @Override
  public void delete(T entity, boolean consistentRead) {
    Assert.notNull(entity, "The entity must not be null!");
    delete(entityInformation.getId(entity), consistentRead);
  }

  @Override
  public void delete(Iterable<? extends T> entities, boolean consistentRead) {
    Assert.notNull(entities, "The given Iterable of entities not be null!");
    for(T entity : entities) {
      delete(entity, consistentRead);
    }
  }

  @Override
  public void deleteAll(boolean consistentRead) {
    operations.deleteAll(entityInformation.getJavaType());
  }
}
TOP

Related Classes of org.springframework.data.simpledb.repository.support.SimpleDbRepositoryImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.