1 6 package com.nightlabs.ipanema.config; 7 8 import java.io.Serializable ; 9 import java.lang.reflect.Constructor ; 10 import java.lang.reflect.InvocationTargetException ; 11 import java.util.Collection ; 12 13 import javax.jdo.PersistenceManager; 14 import javax.jdo.Query; 15 16 import com.nightlabs.inheritance.Inheritable; 17 18 39 public abstract class UserConfigModule extends ConfigModule implements Serializable , Inheritable 40 { 41 42 public static final String QUERY_GET_CONFIG_MODULE_FOR_USER_CONFIG = "getConfigModuleForUserConfig"; 43 44 protected UserConfigModule() 45 { 46 super(); 47 } 48 49 52 public UserConfigModule(UserConfig userConfig, String cfModID) 53 { 54 super(userConfig.getOrganisationID(), userConfig.getUserConfigID(), userConfig.getClass().getName(), cfModID); 55 this.userConfig = userConfig; 56 } 57 58 61 protected UserConfig userConfig; 62 63 64 public static UserConfigModule createNewConfigModule(PersistenceManager pm, boolean makePersistent, Class cfModClass, UserConfig userConfig, String cfModID) 65 throws InstantiationException , IllegalAccessException , ClassCastException , SecurityException , NoSuchMethodException , IllegalArgumentException , InvocationTargetException  66 { 67 Constructor constructor = cfModClass.getConstructor(new Class []{UserConfig.class, String .class}); 68 UserConfigModule result = (UserConfigModule)constructor.newInstance(new Object [] {userConfig, cfModID}); 69 result.init(); 70 if (makePersistent) 71 pm.makePersistent(result); 72 return result; 73 } 74 75 public static UserConfigModule getConfigModuleForUserConfig(PersistenceManager pm, UserConfig userConfig, Class cfModClass, String cfModID) { 76 Query q = pm.newNamedQuery(UserConfigModule.class, QUERY_GET_CONFIG_MODULE_FOR_USER_CONFIG); 77 Collection cfMods = (Collection )q.execute(userConfig.getOrganisationID(), userConfig.getUserConfigID(), UserConfigModule.getCfModKey(cfModClass, cfModID)); 78 if (!cfMods.isEmpty()) 79 return (UserConfigModule)cfMods.iterator().next(); 80 return null; 81 } 82 } 83
| Popular Tags
|