/* jBilling - The Enterprise Open Source Billing System Copyright (C) 2003-2011 Enterprise jBilling Software Ltd. and Emiliano Conde This file is part of jbilling. jbilling is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. jbilling is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with jbilling. If not, see <http://www.gnu.org/licenses/>. */ package com.sapienter.jbilling.server.util.db; import org.hibernate.criterion.Restrictions; import com.sapienter.jbilling.common.SessionInternalError; import org.apache.log4j.Logger; import org.springmodules.cache.provider.CacheProviderFacade; import org.springmodules.cache.CachingModel; public class JbillingTableDAS extends AbstractDAS<JbillingTable> { private CacheProviderFacade cache; private CachingModel cacheModel; private static final Logger LOG = Logger.getLogger(JbillingTableDAS.class); protected JbillingTableDAS() { super(); } // can not cache directly, CGLib can not proxy extenders of <> classes public JbillingTable findByName(String name) { JbillingTable table = (JbillingTable) cache.getFromCache("JbillingTable" + name, cacheModel); if (table == null) { LOG.debug("Looking for table + " + name); table = findByCriteriaSingle(Restrictions.eq("name", name)); if (table == null) { throw new SessionInternalError("Can not find table " + name); } else { cache.putInCache("JbillingTable" + name, cacheModel, table); } } return table; } public void setCache(CacheProviderFacade cache) { this.cache = cache; } public void setCacheModel(CachingModel model) { cacheModel = model; } public static JbillingTableDAS getInstance() { return new JbillingTableDAS(); } }