OrganisationalUnitTierRepositoryImpl.java

package com.tradecloud.repository.impl;

import com.tradecloud.domain.base.utils.ObjectUtil;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnitTier;
import com.tradecloud.repository.OrganisationalUnitTierRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * Repository Implementation for Organisational Unit.
 * 
 * This is the only class in the system that should be calling Hibernate with an
 * Organisational Unit Tier
 */
@Repository
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class OrganisationalUnitTierRepositoryImpl extends RepositoryBaseImpl<OrganisationalUnitTier, Object> implements
        OrganisationalUnitTierRepository {

    private static final long serialVersionUID = 1L;

    private static final Logger log = Logger.getLogger(OrganisationalUnitTierRepositoryImpl.class);

    @Override
    public OrganisationalUnitTier findByName(String name) {
        log.debug("Name=" + name);
        @SuppressWarnings("unchecked")
        List<OrganisationalUnitTier> list = (List<OrganisationalUnitTier>) findByNamedQueryAndNamedParam("orgUnitTier.byName", "name", name);
        return ObjectUtil.first(list);
    }

    @Override
    public OrganisationalUnitTier findByCode(String code) {
        log.debug("Code=" + code);
        @SuppressWarnings("unchecked")
        List<OrganisationalUnitTier> list = (List<OrganisationalUnitTier>) findByNamedQueryAndNamedParam("orgUnitTier.byCode", "code", code);
        return ObjectUtil.first(list);
    }

    /**
     * Deletes 'em all!
     */
    @Override
    public void deleteAll() {
        log.debug("In delete all");

        List<OrganisationalUnitTier> orgUnitTiers = findAll();

        log.debug("Found " + orgUnitTiers.size() + " org unit tiers");
        deleteAll(orgUnitTiers);
    }

    @Override
    public void delete(String orgUnitName) {
        OrganisationalUnitTier orgUnitTier = findByName(orgUnitName);
        delete(orgUnitTier);
    }

    @Override
    public OrganisationalUnitTier findByLevel(Integer level_) {
        log.debug("level_=" + level_);
        @SuppressWarnings("unchecked")
        List<OrganisationalUnitTier> list = (List<OrganisationalUnitTier>) findByNamedQueryAndNamedParam("orgUnitTier.byLevel", "level", level_);
        return ObjectUtil.first(list);
    }
}