TurnInRepositoryImpl.java
package com.tradecloud.repository.demurrage;
import com.tradecloud.domain.base.utils.DateRange;
import com.tradecloud.domain.demurrage.TurnInTransaction;
import com.tradecloud.dto.demurrage.TurnInTransactionSearch;
import com.tradecloud.repository.base.impl.CriteriaValue;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
@Repository(value = "turnInRepository")
public class TurnInRepositoryImpl extends RepositoryBaseImpl<TurnInTransaction, TurnInTransactionSearch>
implements TurnInRepository {
private static final String TURN_IN_DEPOT = "turnInDepot";
private static final String CARRIER = "seaShipment.carrier";
private static final String CONTAINER_REFERENCE = "shipmentContainer.reference";
private static final String SHIPMENT_NUMBER = "shipmentContainer.shipment.number";
private static final String SHIPMENT_REFERENCE = "shipmentContainer.shipment.reference";
private static final String TRANSACTION_STATE = "state";
private static final String CREATED_DATE = "created";
private static final String FREE_PERIOD_DATE = "shipmentContainer.turnInFreePeriodEnd";
private static final String SIGNED_OFF_DATE = "signedOffDate";
private static final String ACTIVE = "active";
@Override
public List<TurnInTransaction> search(TurnInTransactionSearch search) {
Query query = createQuery(search, false, mapFieldsToValues(search));
return getQueryList(query, search.getSearchMetaParams());
}
@Override
protected Collection<CriteriaValue> mapFieldsToValues(TurnInTransactionSearch search) {
Collection<CriteriaValue> fields = new LinkedHashSet<CriteriaValue>();
fields.add(CriteriaValue.like(CONTAINER_REFERENCE, search.getContainerReference()));
fields.add(CriteriaValue.like(SHIPMENT_REFERENCE, search.getShipmentReference()));
fields.add(CriteriaValue.like(SHIPMENT_NUMBER, search.getShipmentNumber()));
fields.add(CriteriaValue.eq(TRANSACTION_STATE, search.getState()));
fields.add(CriteriaValue.eq(CARRIER, search.getCarrier()));
// fields.add(CriteriaValue.eq(TURN_IN_DEPOT, search.getTurnInDepot()));
if(search.getCreatedDateRange() != null) {
DateRange dr = search.getCreatedDateRange();
fields.add(CriteriaValue.gt(CREATED_DATE, dr.getFromAsStartOfDay()));
fields.add(CriteriaValue.lt(CREATED_DATE, dr.getToAsEndOfDay()));
}
if(search.getFreePeriodEndDateRange() != null) {
DateRange dr = search.getFreePeriodEndDateRange();
fields.add(CriteriaValue.gt(FREE_PERIOD_DATE, dr.getFromAsStartOfDay()));
fields.add(CriteriaValue.lt(FREE_PERIOD_DATE, dr.getToAsEndOfDay()));
}
if(search.getSignedOffDateRange() != null) {
DateRange dr = search.getSignedOffDateRange();
fields.add(CriteriaValue.gt(SIGNED_OFF_DATE, dr.getFromAsStartOfDay()));
fields.add(CriteriaValue.lt(SIGNED_OFF_DATE, dr.getToAsEndOfDay()));
}
// fields.add(CriteriaValue.eq(ACTIVE, true));
return fields;
}
}