All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.gdface.facelog.db.mysql.DeviceGroupCacheManager Maven / Gradle / Ivy

There is a newer version: 2.5.1
Show newest version
// ______________________________________________________
// Generated by sql2java - https://github.com/10km/sql2java-2-6-7 (custom branch) 
// modified by guyadong from
// sql2java original version https://sourceforge.net/projects/sql2java/ 
// JDBC driver used at code generation time: com.mysql.jdbc.Driver
// template: cache.manager.java.vm
// ______________________________________________________
package net.gdface.facelog.db.mysql;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

import com.google.common.util.concurrent.UncheckedExecutionException;

import net.gdface.facelog.db.ITableCache;
import net.gdface.facelog.db.ITableCache.UpdateStrategy;
import net.gdface.facelog.db.exception.ObjectRetrievalException;
import net.gdface.facelog.db.exception.RuntimeDaoException;
import net.gdface.facelog.db.DeviceBean;
import net.gdface.facelog.db.PermitBean;
import net.gdface.facelog.db.PersonGroupBean;
import net.gdface.facelog.db.mysql.DeviceGroupManager;
import net.gdface.facelog.db.DeviceGroupBean;
import net.gdface.facelog.db.mysql.DeviceGroupCache;

/**
 * cache implementation for DeviceGroupManager
* @author guyadong */ public class DeviceGroupCacheManager extends DeviceGroupManager { /** singleton of DeviceGroupCacheManager */ private static DeviceGroupCacheManager instance; /** * @return a instance of DeviceGroupCacheManager * @throws IllegalStateException while {@link #instance} is null */ public static final DeviceGroupCacheManager getInstance(){ if(null == instance){ throw new IllegalStateException("uninitialized instance of DeviceGroupCacheManager"); } return instance; } /** * create a instance of DeviceGroupCacheManager and assign to {@link #instance} if {@code instance} is not initialized.
* otherwise return {@code instance}. * @see DeviceGroupCacheManager#DeviceGroupCacheManager(UpdateStrategy ,long , long , TimeUnit ) */ public static synchronized final DeviceGroupCacheManager makeInstance(UpdateStrategy updateStrategy,long maximumSize, long duration, TimeUnit unit){ if(null == instance){ instance = new DeviceGroupCacheManager(updateStrategy,maximumSize,duration,unit); } return instance; } /** @see #makeInstance(UpdateStrategy,long, long, TimeUnit) */ public static final DeviceGroupCacheManager makeInstance(long maximumSize, long duration, TimeUnit unit){ return makeInstance(ITableCache.DEFAULT_STRATEGY,maximumSize, duration, unit); } /** @see #makeInstance(long, long, TimeUnit) */ public static final DeviceGroupCacheManager makeInstance(long maximumSize, long durationMinutes){ return makeInstance(maximumSize, durationMinutes, ITableCache.DEFAULT_TIME_UNIT); } /** @see #makeInstance(long, long, TimeUnit) */ public static final DeviceGroupCacheManager makeInstance(long maximumSize){ return makeInstance(maximumSize,ITableCache.DEFAULT_DURATION,ITableCache.DEFAULT_TIME_UNIT); } /** instance of {@link DeviceGroupCache} */ private final DeviceGroupCache cache; /** constructor
* @see DeviceGroupCache#DeviceGroupCache(UpdateStrategy ,long , long , TimeUnit ) */ protected DeviceGroupCacheManager(UpdateStrategy updateStrategy,long maximumSize, long duration, TimeUnit unit) { cache = new DeviceGroupCache(updateStrategy,maximumSize,duration,unit); cache.registerListener(); } @Override protected DeviceManager instanceOfDeviceManager(){ try{ return DeviceCacheManager.getInstance(); } catch(IllegalStateException e){ return DeviceManager.getInstance(); } } @Override protected PermitManager instanceOfPermitManager(){ try{ return PermitCacheManager.getInstance(); } catch(IllegalStateException e){ return PermitManager.getInstance(); } } @Override protected PersonGroupManager instanceOfPersonGroupManager(){ try{ return PersonGroupCacheManager.getInstance(); } catch(IllegalStateException e){ return PersonGroupManager.getInstance(); } } @Override protected DeviceGroupCacheManager instanceOfDeviceGroupManager(){ return this; } ////////////////////////////////////// // PRIMARY KEY METHODS ////////////////////////////////////// //1.1 override IDeviceGroupManager @Override public DeviceGroupBean loadByPrimaryKeyChecked(Integer id) throws ObjectRetrievalException { if(null == id){ throw new ObjectRetrievalException(new NullPointerException()); } try{ return cache.getBean(id); }catch(ExecutionException ee){ try{ throw ee.getCause(); }catch(ObjectRetrievalException oe){ throw oe; } catch (RuntimeDaoException we) { throw we; } catch (RuntimeException re) { throw re; }catch (Throwable e) { throw new RuntimeException(ee); } }catch(UncheckedExecutionException ue){ try{ throw ue.getCause(); }catch(ObjectRetrievalException oe){ throw oe; } catch (RuntimeDaoException we) { throw we; } catch (RuntimeException re) { throw re; }catch (Throwable e) { throw new RuntimeException(ue); } } } //1.4 override IDeviceGroupManager @Override public boolean existsPrimaryKey(Integer id){ return null != loadByPrimaryKey(id); } private class CacheAction implements Action{ final Action action; CacheAction(Actionaction){ this.action = action; } @Override public void call(DeviceGroupBean bean) { if(null != action){ action.call(bean); } cache.update(bean); } @Override public DeviceGroupBean getBean() { return null == action?null:action.getBean(); } } //20-5 @Override public int loadUsingTemplate(DeviceGroupBean bean, int[] fieldList, int startRow, int numRows,int searchType, Action action){ if(null == fieldList ){ action = new CacheAction(action); } return super.loadUsingTemplate(bean,fieldList,startRow,numRows,searchType,action); } //_____________________________________________________________________ // // SAVE //_____________________________________________________________________ //12 @Override public DeviceGroupBean save(DeviceGroupBean bean){ // check cycle for the self-reference field before save checkCycleOfParent(bean); boolean modified = null == bean ? false : bean.isModified(); super.save(bean); if( modified && UpdateStrategy.refresh == cache.getUpdateStrategy() ){ bean.copy(cache.getBeanUnchecked(bean.getId())).resetIsModified(); } return bean; } //_____________________________________________________________________ // // MANY TO MANY: LOAD OTHER BEAN VIA JUNCTION TABLE //_____________________________________________________________________ //23 MANY TO MANY // override DeviceGroupManager @Override public java.util.List loadViaPermitAsList(PersonGroupBean bean, int startRow, int numRows) { PermitManager m = instanceOfPermitManager(); java.util.List junctions; if(m instanceof PermitCacheManager){ junctions = com.google.common.collect.Lists.newArrayList(((PermitCacheManager)m).getBeanByPersonGroupIdUnchecked(bean.getId())); }else{ PermitBean template = PermitBean.builder().personGroupId(bean.getId()).build(); junctions = m.loadUsingTemplateAsList(template); } startRow = Math.min(Math.max(0, startRow - 1), junctions.size() - 1); numRows = numRows < 0 ? junctions.size():Math.min(junctions.size(), numRows); numRows = Math.min(junctions.size() - startRow , numRows) ; junctions = com.google.common.collect.Ordering .natural() .onResultOf(new com.google.common.base.Function(){ @Override public Integer apply(PermitBean input) { return input.getDeviceGroupId(); }}) .sortedCopy(junctions) .subList(startRow, startRow + numRows); java.util.ArrayList lbeans = new java.util.ArrayList(junctions.size()); for(PermitBean jbean:junctions){ try{ lbeans.add(loadByPrimaryKeyChecked(jbean.getDeviceGroupId())); }catch(ObjectRetrievalException e){} } return lbeans; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy