/* * MEDecision, Inc. Software Development Infrastructure, Version 1.0 * * Copyright (c) 2007 MEDecision, Inc. All Rights Reserved. * * This software is the confidential and proprietary information of * MEDecision, Inc. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with MEDecision, Inc. * * MEDecision, Inc MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, OR NON-INFRINGEMENT. MEDecision, Inc SHALL NOT BE LIABLE FOR ANY DAMAGES * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. * */ package com.joe.utilities.core.hibernate.repository.impl; import java.sql.Timestamp; import java.util.Calendar; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.hibernate.engine.SessionImplementor; import org.hibernate.type.DbTimestampType; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.joe.utilities.core.configuration.admin.ApplicationConfiguration; import com.joe.utilities.core.configuration.admin.domain.IApplicationConfiguration; import com.joe.utilities.core.hibernate.repository.ApplicationConfigurationRepository; import com.joe.utilities.core.util.MedException; /** * This the hibernate implementation to handle * application configuration settings held * within the database. * * @author Dave Bartlett * Creation date: 05/22/2007 2:32 PM * Copyright (c) 2007 MEDecision, Inc. All rights reserved. */ @Transactional(readOnly = true) public class ApplicationConfigurationRepositoryImpl extends HibernateDaoSupport implements ApplicationConfigurationRepository{ private Log log = LogFactory.getLog(ApplicationConfigurationRepositoryImpl.class); /** * Contructor with Spring Hibernate template * @param hibernateTemplate spring application framework hibernate template */ public ApplicationConfigurationRepositoryImpl(HibernateTemplate hibernateTemplate) { if (hibernateTemplate == null) throw new IllegalArgumentException("hibernateTemplate is null"); setHibernateTemplate(hibernateTemplate); } /** * Retrieves an application configuration based upon * the code * * @param code * @return an application configuration */ public IApplicationConfiguration retreiveApplicationConfigProperty(String code) { log.trace("Entering retreiveApplicationConfigurationConfigProperty repository method"); if (code == null) throw new IllegalArgumentException("requestId is null"); //ApplicationConfiguration ac = new ApplicationConfiguration(); IApplicationConfiguration ac = (IApplicationConfiguration) getHibernateTemplate().get(ApplicationConfiguration.class, code); if (ac != null) ac.setCode(code); return ac; } /** * Retrieves a list of all application configuration properties * for a category code * * @param category code * @return a list of application configuration */ @SuppressWarnings("unchecked") public List<IApplicationConfiguration> listApplicationConfigurationsByCategoryCode (String categoryCode) { log.trace("Entering listApplicationConfigurationsByCategoryCode repository method"); if (categoryCode == null) throw new IllegalArgumentException("categoryCode is null"); List<IApplicationConfiguration> list = getHibernateTemplate().findByNamedParam( "from ApplicationConfiguration as appconfig where appconfig.categoryCode = :categoryCode", "categoryCode", categoryCode); return list; } /** * Retrieves a list of all application configuration properties * * @return a list of all application configuration */ @SuppressWarnings("unchecked") public List<IApplicationConfiguration> listApplicationConfigurations() { log.trace("Entering listApplicationConfigurations repository method"); List<IApplicationConfiguration> list = getHibernateTemplate().loadAll(ApplicationConfiguration.class); return list; } /** * Retrieves a list of all the active Home page column configuration properties * ordered by tab and then sequence * * @return a list of all Home page column configuration */ /** * Saves an application configuration * * @param IApplicationConfiguration * @return IApplicationConfiguration */ @Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = { MedException.class }) public IApplicationConfiguration saveApplicationConfiguration (IApplicationConfiguration appConfig) { log.trace("Entering saveApplicationConfiguration repository method"); if (appConfig == null) throw new IllegalArgumentException("appConfig is null"); getHibernateTemplate().saveOrUpdate(appConfig); return appConfig; } /** * Removes an application configuration based upon * the code * * @param code * @return an application configuration */ @Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = { MedException.class }) public void removeApplicationConfigProperty(IApplicationConfiguration appConfig) { log.trace("Entering removeApplicationConfiguration repository method"); if (appConfig == null) throw new IllegalArgumentException("appConfig is null"); getHibernateTemplate().delete(appConfig); } public Long retrieveDBTimeOffsetInMilliseconds() { DbTimestampType type = new DbTimestampType(); Timestamp ts = (Timestamp) type.seed((SessionImplementor)getSession()); Calendar cal = Calendar.getInstance(); long actualTimeDiff = cal.getTimeInMillis() - ts.getTime(); //System.out.println("Actual Time Diff in ms(AS - DB)="+actualTimeDiff); return new Long(actualTimeDiff); } public Long retrieveDBTimeInMilliseconds() { DbTimestampType type = new DbTimestampType(); Timestamp ts = (Timestamp) type.seed((SessionImplementor)getSession()); return ts.getTime(); } }