/* * Copyright (C) 2009 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.portal.resource; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * @author <a href="mailto:hoang281283@gmail.com">Minh Hoang TO</a> * @version $Id$ * */ public class SkinDependentManager { private static Map<String, Set<String>> skinName_Apps_map = new HashMap<String, Set<String>>(); private static Map<String, Set<String>> app_skinNames_map = new HashMap<String, Set<String>>(); private static Map<String, List<SkinKey>> app_portalSkins_map = new HashMap<String, List<SkinKey>>(); private static Map<String, List<SkinKey>> app_portletSkins_map = new HashMap<String, List<SkinKey>>(); public static void addSkinDeployedInApp(String webApp, String skinName) { Set<String> skinsDefinedInApp = app_skinNames_map.get(webApp); if (skinsDefinedInApp == null) { skinsDefinedInApp = new HashSet<String>(); skinsDefinedInApp.add(skinName); app_skinNames_map.put(webApp, skinsDefinedInApp); return; } skinsDefinedInApp.add(skinName); } public static void addDependentAppToSkinName(String skinName, String dependentApp) { Set<String> dependentApps = skinName_Apps_map.get(skinName); if (dependentApps == null) { dependentApps = new HashSet<String>(); dependentApps.add(dependentApp); skinName_Apps_map.put(skinName, dependentApps); return; } dependentApps.add(dependentApp); } public static boolean skinNameIsRemovable(String skinName, String dependentApp) { Set<String> dependentApps = skinName_Apps_map.get(skinName); if (dependentApps == null) { return false; } // Remove the dependentApp defining 'skinName' skin dependentApps.remove(dependentApp); if (dependentApps.isEmpty()) { skinName_Apps_map.remove(skinName); return true; } else { return false; } } public static void addPortalSkin(String webApp, String moduleName, String skinName) { addSkin(webApp, new SkinKey(moduleName, skinName), app_portalSkins_map); } public static void addPortletSkin(String webApp, String moduleName, String skinName) { addSkin(webApp, new SkinKey(moduleName, skinName), app_portletSkins_map); } public static List<SkinKey> getPortalSkins(String webApp) { return app_portalSkins_map.get(webApp); } public static List<SkinKey> getPortletSkins(String webApp) { return app_portletSkins_map.get(webApp); } public static Set<String> getSkinNames(String webApp) { return app_skinNames_map.get(webApp); } public static void clearAssociatedSkins(String webApp) { app_portalSkins_map.remove(webApp); app_portletSkins_map.remove(webApp); } public static void removeSkinName(String webApp, String skinName) { Set<String> skinsDefinedInApp = app_skinNames_map.get(webApp); if (skinsDefinedInApp == null) { return; } else { skinsDefinedInApp.remove(skinName);// TODO: Check the remove here } } private static void addSkin(String webApp, SkinKey key, Map<String, List<SkinKey>> map) { List<SkinKey> skinKeys = map.get(webApp); if (skinKeys == null) { skinKeys = new ArrayList<SkinKey>(5); skinKeys.add(key); map.put(webApp, skinKeys); return; } skinKeys.add(key); } }