EffectiveDateConfigRepositoryImpl.java

package com.tradecloud.repository.rate.impl;

import org.hibernate.criterion.DetachedCriteria;

import com.tradecloud.domain.costing.CostGroup;
import com.tradecloud.domain.infrastructure.persistence.CriteriaBuilder;
import com.tradecloud.domain.rate.EffectiveDateALC;
import com.tradecloud.domain.rate.EffectiveDateCLC;
import com.tradecloud.domain.rate.EffectiveDateConfig;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import com.tradecloud.repository.rate.EffectiveDateConfigRepository;
import org.springframework.stereotype.Repository;

@Repository(value = "effectiveDateConfigRepository")
public class EffectiveDateConfigRepositoryImpl extends RepositoryBaseImpl<EffectiveDateConfig, Object>
    implements EffectiveDateConfigRepository {

    @Override
    public EffectiveDateConfig findBy(CostGroup costGroup) {
        DetachedCriteria criteria = DetachedCriteria.forClass(EffectiveDateConfig.class);

        CriteriaBuilder.addEqRestriction(criteria, "costGroup", costGroup);
        return (EffectiveDateConfig) criteria.getExecutableCriteria(getSessionCustom()).uniqueResult();
    }

    @Override
    public void saveDefaultConfig() {
        EffectiveDateConfig config = new EffectiveDateConfig();
        config.setCostGroup(CostGroup.AGENT);
        config.setEffectiveDateCLC(EffectiveDateCLC.EARLIEST_SHIPMENT_DATE);
        config.setEffectiveDateALC(EffectiveDateALC.BILL_OF_LADING_DATE);
        save(config);

        config = new EffectiveDateConfig();
        config.setCostGroup(CostGroup.FORWARDING);
        config.setEffectiveDateCLC(EffectiveDateCLC.EARLIEST_SHIPMENT_DATE);
        config.setEffectiveDateALC(EffectiveDateALC.BILL_OF_LADING_DATE);
        save(config);

        config = new EffectiveDateConfig();
        config.setCostGroup(CostGroup.FREIGHT);
        config.setEffectiveDateCLC(EffectiveDateCLC.EARLIEST_SHIPMENT_DATE);
        config.setEffectiveDateALC(EffectiveDateALC.BILL_OF_LADING_DATE);
        save(config);

        config = new EffectiveDateConfig();
        config.setCostGroup(CostGroup.CLEARING);
        config.setEffectiveDateCLC(EffectiveDateCLC.EARLIEST_SHIPMENT_DATE);
        config.setEffectiveDateALC(EffectiveDateALC.BILL_OF_LADING_DATE);
        save(config);

        config = new EffectiveDateConfig();
        config.setCostGroup(CostGroup.FINANCE);
        config.setEffectiveDateCLC(EffectiveDateCLC.EARLIEST_SHIPMENT_DATE);
        config.setEffectiveDateALC(EffectiveDateALC.BILL_OF_LADING_DATE);
        save(config);

        config = new EffectiveDateConfig();
        config.setCostGroup(CostGroup.INTERNAL_PROVISIONS);
        config.setEffectiveDateCLC(EffectiveDateCLC.EARLIEST_SHIPMENT_DATE);
        config.setEffectiveDateALC(EffectiveDateALC.BILL_OF_LADING_DATE);
        save(config);
    }
}