Package org.multibit.mbm.client.infrastructure.persistence.hibernate

Source Code of org.multibit.mbm.client.infrastructure.persistence.hibernate.HibernateDeliveryReadService

package org.multibit.mbm.client.infrastructure.persistence.hibernate;

import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import org.multibit.mbm.client.common.pagination.PaginatedList;
import org.multibit.mbm.client.domain.model.model.Delivery;
import org.multibit.mbm.client.domain.model.model.DeliveryBuilder;
import org.multibit.mbm.client.domain.model.model.Supplier;
import org.multibit.mbm.client.domain.repositories.DeliveryReadService;
import org.springframework.stereotype.Repository;

@Repository("hibernateDeliveryDao")
public class HibernateDeliveryReadService extends BaseHibernateReadService<Delivery> implements DeliveryReadService {

  @SuppressWarnings("unchecked")
  @Override
  public Optional<Delivery> getById(Long id) {
    return getById(Delivery.class, id);
  }

  @Override
  public Optional<Delivery> getInitialisedDeliveryBySupplier(Supplier supplier) {
    Preconditions.checkNotNull(supplier, "supplier cannot be null");

    Delivery delivery;
    if (supplier.getDeliveries().isEmpty()) {
      // Create a suitable delivery
      delivery = DeliveryBuilder
        .newInstance()
        .withSupplier(supplier)
        .build();
    } else {
      // TODO Need to differentiate between deliveries
      delivery = supplier.getDeliveries().iterator().next();
    }

    // Ensure we associate the Supplier and Delivery with the current session and initialise the collection
    hibernateTemplate.saveOrUpdate(supplier);
    hibernateTemplate.initialize(supplier.getDeliveries());

    return Optional.of(delivery);

  }

  /**
   * Initialize various collections since we are targeting the individual entity (perhaps for display)
   *
   * @param entity The entity
   *
   * @return The entity with all collections initialized
   */
  @Override
  protected Delivery initialized(Delivery entity) {
    return entity;
  }


  @SuppressWarnings("unchecked")
  public PaginatedList<Delivery> getPaginatedList(final int pageSize, final int pageNumber) {
    return buildPaginatedList(pageSize, pageNumber, Delivery.class);
  }

  @Override
  public Delivery saveOrUpdate(Delivery delivery) {
    Preconditions.checkNotNull(delivery, "delivery cannot be null");
    hibernateTemplate.saveOrUpdate(delivery);
    return delivery;
  }

  /**
   * Force an immediate in-transaction flush (normally only used in test code)
   */
  public void flush() {
    hibernateTemplate.flush();
  }

}
TOP

Related Classes of org.multibit.mbm.client.infrastructure.persistence.hibernate.HibernateDeliveryReadService

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.