001// ______________________________________________________
002// Generated by sql2java - https://github.com/10km/sql2java-2-6-7 (custom branch) 
003// modified by guyadong from
004// sql2java original version https://sourceforge.net/projects/sql2java/ 
005// JDBC driver used at code generation time: com.mysql.jdbc.Driver
006// template: base.dbconverter.generic.java.vm
007// ______________________________________________________
008package net.gdface.facelog.db;
009import java.lang.reflect.ParameterizedType;
010import java.lang.reflect.Type;
011import net.gdface.facelog.db.IBeanConverter;
012import net.gdface.facelog.db.IDbConverter;
013
014import net.gdface.facelog.db.DeviceBean;
015import net.gdface.facelog.db.DeviceGroupBean;
016import net.gdface.facelog.db.FaceBean;
017import net.gdface.facelog.db.FeatureBean;
018import net.gdface.facelog.db.ImageBean;
019import net.gdface.facelog.db.LogBean;
020import net.gdface.facelog.db.PermitBean;
021import net.gdface.facelog.db.PersonBean;
022import net.gdface.facelog.db.PersonGroupBean;
023import net.gdface.facelog.db.StoreBean;
024import net.gdface.facelog.db.LogLightBean;
025/**
026 * generic type converter of {@link IDbConverter} implementation<br>
027 * usage:<pre>new BaseDbConverterGeneric&lt;Model1,Model2,Model3,Model4,Model5,Model6,Model7,Model8,Model9,Model10,Model11&gt;(){};</pre>
028 * @author guyadong
029 *
030 * @param <R_DEVICE> native type for fl_device
031 * @param <R_DEVICEGROUP> native type for fl_device_group
032 * @param <R_FACE> native type for fl_face
033 * @param <R_FEATURE> native type for fl_feature
034 * @param <R_IMAGE> native type for fl_image
035 * @param <R_LOG> native type for fl_log
036 * @param <R_PERMIT> native type for fl_permit
037 * @param <R_PERSON> native type for fl_person
038 * @param <R_PERSONGROUP> native type for fl_person_group
039 * @param <R_STORE> native type for fl_store
040 * @param <R_LOGLIGHT> native type for fl_log_light
041 *
042 */
043public abstract class BaseDbConverterGeneric<
044                    R_DEVICE,
045                    R_DEVICEGROUP,
046                    R_FACE,
047                    R_FEATURE,
048                    R_IMAGE,
049                    R_LOG,
050                    R_PERMIT,
051                    R_PERSON,
052                    R_PERSONGROUP,
053                    R_STORE,
054                    R_LOGLIGHT> 
055    implements IDbConverter<R_DEVICE,R_DEVICEGROUP,R_FACE,R_FEATURE,R_IMAGE,R_LOG,R_PERMIT,R_PERSON,R_PERSONGROUP,R_STORE,R_LOGLIGHT>, Constant{
056    private final IBeanConverter<DeviceBean,R_DEVICE> converterDeviceBean;
057    private final IBeanConverter<DeviceGroupBean,R_DEVICEGROUP> converterDeviceGroupBean;
058    private final IBeanConverter<FaceBean,R_FACE> converterFaceBean;
059    private final IBeanConverter<FeatureBean,R_FEATURE> converterFeatureBean;
060    private final IBeanConverter<ImageBean,R_IMAGE> converterImageBean;
061    private final IBeanConverter<LogBean,R_LOG> converterLogBean;
062    private final IBeanConverter<PermitBean,R_PERMIT> converterPermitBean;
063    private final IBeanConverter<PersonBean,R_PERSON> converterPersonBean;
064    private final IBeanConverter<PersonGroupBean,R_PERSONGROUP> converterPersonGroupBean;
065    private final IBeanConverter<StoreBean,R_STORE> converterStoreBean;
066    private final IBeanConverter<LogLightBean,R_LOGLIGHT> converterLogLightBean;
067    private static Class<?> getRawClass(Type type){
068        if(type instanceof Class<?>){
069            return (Class<?>) type;
070        } else if(type instanceof ParameterizedType){
071            return getRawClass(((ParameterizedType) type).getRawType());
072        } else{
073            throw new IllegalArgumentException("invalid type");
074        }
075    }
076    /** 
077     * usage: <pre>new BaseDbConverterGeneric&lt;Model...&gt;(javaFields...){};</pre>
078     * each 'javaFields' parameter is a comma splice string,including all field name of right type,<br>
079     * if null or empty, use default string of each table
080     */
081    @SuppressWarnings("unchecked")
082    public BaseDbConverterGeneric(String javaFieldsOfDevice,
083                    String javaFieldsOfDeviceGroup,
084                    String javaFieldsOfFace,
085                    String javaFieldsOfFeature,
086                    String javaFieldsOfImage,
087                    String javaFieldsOfLog,
088                    String javaFieldsOfPermit,
089                    String javaFieldsOfPerson,
090                    String javaFieldsOfPersonGroup,
091                    String javaFieldsOfStore,
092                    String javaFieldsOfLogLight){
093        
094        if(null == javaFieldsOfDevice || javaFieldsOfDevice.isEmpty()){
095            javaFieldsOfDevice = FL_DEVICE_JAVA_FIELDS;
096        }
097        if(null == javaFieldsOfDeviceGroup || javaFieldsOfDeviceGroup.isEmpty()){
098            javaFieldsOfDeviceGroup = FL_DEVICE_GROUP_JAVA_FIELDS;
099        }
100        if(null == javaFieldsOfFace || javaFieldsOfFace.isEmpty()){
101            javaFieldsOfFace = FL_FACE_JAVA_FIELDS;
102        }
103        if(null == javaFieldsOfFeature || javaFieldsOfFeature.isEmpty()){
104            javaFieldsOfFeature = FL_FEATURE_JAVA_FIELDS;
105        }
106        if(null == javaFieldsOfImage || javaFieldsOfImage.isEmpty()){
107            javaFieldsOfImage = FL_IMAGE_JAVA_FIELDS;
108        }
109        if(null == javaFieldsOfLog || javaFieldsOfLog.isEmpty()){
110            javaFieldsOfLog = FL_LOG_JAVA_FIELDS;
111        }
112        if(null == javaFieldsOfPermit || javaFieldsOfPermit.isEmpty()){
113            javaFieldsOfPermit = FL_PERMIT_JAVA_FIELDS;
114        }
115        if(null == javaFieldsOfPerson || javaFieldsOfPerson.isEmpty()){
116            javaFieldsOfPerson = FL_PERSON_JAVA_FIELDS;
117        }
118        if(null == javaFieldsOfPersonGroup || javaFieldsOfPersonGroup.isEmpty()){
119            javaFieldsOfPersonGroup = FL_PERSON_GROUP_JAVA_FIELDS;
120        }
121        if(null == javaFieldsOfStore || javaFieldsOfStore.isEmpty()){
122            javaFieldsOfStore = FL_STORE_JAVA_FIELDS;
123        }
124        if(null == javaFieldsOfLogLight || javaFieldsOfLogLight.isEmpty()){
125            javaFieldsOfLogLight = FL_LOG_LIGHT_JAVA_FIELDS;
126        }
127        Type[] typeArguments = ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments();
128        this.converterDeviceBean = new BeanConverterUtils.DeviceBeanConverter<R_DEVICE>(DeviceBean.class,
129            (Class<R_DEVICE>)getRawClass(typeArguments[0]),javaFieldsOfDevice);            
130        this.converterDeviceGroupBean = new BeanConverterUtils.DeviceGroupBeanConverter<R_DEVICEGROUP>(DeviceGroupBean.class,
131            (Class<R_DEVICEGROUP>)getRawClass(typeArguments[1]),javaFieldsOfDeviceGroup);            
132        this.converterFaceBean = new BeanConverterUtils.FaceBeanConverter<R_FACE>(FaceBean.class,
133            (Class<R_FACE>)getRawClass(typeArguments[2]),javaFieldsOfFace);            
134        this.converterFeatureBean = new BeanConverterUtils.FeatureBeanConverter<R_FEATURE>(FeatureBean.class,
135            (Class<R_FEATURE>)getRawClass(typeArguments[3]),javaFieldsOfFeature);            
136        this.converterImageBean = new BeanConverterUtils.ImageBeanConverter<R_IMAGE>(ImageBean.class,
137            (Class<R_IMAGE>)getRawClass(typeArguments[4]),javaFieldsOfImage);            
138        this.converterLogBean = new BeanConverterUtils.LogBeanConverter<R_LOG>(LogBean.class,
139            (Class<R_LOG>)getRawClass(typeArguments[5]),javaFieldsOfLog);            
140        this.converterPermitBean = new BeanConverterUtils.PermitBeanConverter<R_PERMIT>(PermitBean.class,
141            (Class<R_PERMIT>)getRawClass(typeArguments[6]),javaFieldsOfPermit);            
142        this.converterPersonBean = new BeanConverterUtils.PersonBeanConverter<R_PERSON>(PersonBean.class,
143            (Class<R_PERSON>)getRawClass(typeArguments[7]),javaFieldsOfPerson);            
144        this.converterPersonGroupBean = new BeanConverterUtils.PersonGroupBeanConverter<R_PERSONGROUP>(PersonGroupBean.class,
145            (Class<R_PERSONGROUP>)getRawClass(typeArguments[8]),javaFieldsOfPersonGroup);            
146        this.converterStoreBean = new BeanConverterUtils.StoreBeanConverter<R_STORE>(StoreBean.class,
147            (Class<R_STORE>)getRawClass(typeArguments[9]),javaFieldsOfStore);            
148        this.converterLogLightBean = new BeanConverterUtils.LogLightBeanConverter<R_LOGLIGHT>(LogLightBean.class,
149            (Class<R_LOGLIGHT>)getRawClass(typeArguments[10]),javaFieldsOfLogLight);            
150    }
151    public BaseDbConverterGeneric(){
152        this(null,null,null,null,null,null,null,null,null,null,null);
153    }
154    @Override
155    public <L,R>IBeanConverter<L,R>getBeanConverter(Class<L> lClass,Class<R> rClass){
156        throw new UnsupportedOperationException();
157    }
158    
159    @Override
160    public <L,R>void setBeanConverter(Class<L> lClass,Class<R> rClass,IBeanConverter<L,R>converter){
161        throw new UnsupportedOperationException();
162    }
163
164    @Override
165    public IBeanConverter<DeviceBean, R_DEVICE> getDeviceBeanConverter() {
166        return converterDeviceBean;
167    }
168    @Override
169    public IBeanConverter<DeviceGroupBean, R_DEVICEGROUP> getDeviceGroupBeanConverter() {
170        return converterDeviceGroupBean;
171    }
172    @Override
173    public IBeanConverter<FaceBean, R_FACE> getFaceBeanConverter() {
174        return converterFaceBean;
175    }
176    @Override
177    public IBeanConverter<FeatureBean, R_FEATURE> getFeatureBeanConverter() {
178        return converterFeatureBean;
179    }
180    @Override
181    public IBeanConverter<ImageBean, R_IMAGE> getImageBeanConverter() {
182        return converterImageBean;
183    }
184    @Override
185    public IBeanConverter<LogBean, R_LOG> getLogBeanConverter() {
186        return converterLogBean;
187    }
188    @Override
189    public IBeanConverter<PermitBean, R_PERMIT> getPermitBeanConverter() {
190        return converterPermitBean;
191    }
192    @Override
193    public IBeanConverter<PersonBean, R_PERSON> getPersonBeanConverter() {
194        return converterPersonBean;
195    }
196    @Override
197    public IBeanConverter<PersonGroupBean, R_PERSONGROUP> getPersonGroupBeanConverter() {
198        return converterPersonGroupBean;
199    }
200    @Override
201    public IBeanConverter<StoreBean, R_STORE> getStoreBeanConverter() {
202        return converterStoreBean;
203    }
204    @Override
205    public IBeanConverter<LogLightBean, R_LOGLIGHT> getLogLightBeanConverter() {
206        return converterLogLightBean;
207    }
208}