00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 package org.openmobileis.common.user.profile;
00027
00028 import java.util.Hashtable;
00029
00030 import org.openmobileis.common.context.ApplicationContextManager;
00031 import org.openmobileis.common.user.UserManager;
00032 import org.openmobileis.common.user.profile.Profile;
00033
00042 public class ProfileDataManager {
00043 private static ProfileDataManager manager;
00044 private Hashtable factoryList;
00045 private ProfileDataFactory defaultFactory;
00046
00047 private ProfileDataManager() {
00048 factoryList = new Hashtable();
00049 }
00050
00051 public static ProfileDataManager getManager() {
00052 if (manager == null) {
00053 synchronized (UserManager.class) {
00054 if (manager == null) {
00055 manager = new ProfileDataManager();
00056 ApplicationContextManager.getManager().addManager(manager);
00057 }
00058 }
00059 }
00060 return manager;
00061 }
00062
00063 public void registerDefaultProfilDataFactory(ProfileDataFactory factory) {
00064 defaultFactory = factory;
00065 }
00066
00067 public void registerProfilDataFactoryForGroup(String group, ProfileDataFactory factory) {
00068 factoryList.put(group, factory);
00069 }
00070
00075 public Profile getProfil(String group, String profilName) throws ProfileNotFoundException {
00076 ProfileDataFactory factory = (ProfileDataFactory) factoryList.get(group);
00077 if (factory != null) {
00078 return factory.getProfil(profilName);
00079 } else if (defaultFactory != null) {
00080 return defaultFactory.getProfil(profilName);
00081 } else {
00082 throw new ProfileNotFoundException("No ProfilDataFactory registered for group :"+group);
00083 }
00084 }
00085
00086 }