[gatein-commits] gatein SVN: r7819 - portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Oct 21 07:00:18 EDT 2011


Author: ndkhoiits
Date: 2011-10-21 07:00:18 -0400 (Fri, 21 Oct 2011)
New Revision: 7819

Modified:
   portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/NewPortalConfigListener.java
   portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java
Log:
GTNPORTAL-2196 Set UserPortalConfigService templates and portals definition easily ereasable

Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/NewPortalConfigListener.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/NewPortalConfigListener.java	2011-10-21 09:06:06 UTC (rev 7818)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/NewPortalConfigListener.java	2011-10-21 11:00:18 UTC (rev 7819)
@@ -28,15 +28,9 @@
 import org.exoplatform.container.xml.ValueParam;
 import org.exoplatform.portal.application.PortletPreferences;
 import org.exoplatform.portal.application.PortletPreferences.PortletPreferencesSet;
-import org.exoplatform.portal.config.model.NavigationFragment;
-import org.exoplatform.portal.mop.importer.ImportMode;
-import org.exoplatform.portal.mop.importer.Imported;
-import org.exoplatform.portal.mop.importer.Imported.Status;
-import org.exoplatform.portal.mop.importer.NavigationImporter;
-import org.exoplatform.portal.mop.importer.PageImporter;
-import org.exoplatform.portal.mop.importer.PortalConfigImporter;
 import org.exoplatform.portal.config.model.Container;
 import org.exoplatform.portal.config.model.ModelUnmarshaller;
+import org.exoplatform.portal.config.model.NavigationFragment;
 import org.exoplatform.portal.config.model.Page;
 import org.exoplatform.portal.config.model.Page.PageSet;
 import org.exoplatform.portal.config.model.PageNavigation;
@@ -44,13 +38,19 @@
 import org.exoplatform.portal.config.model.PortalConfig;
 import org.exoplatform.portal.config.model.UnmarshalledObject;
 import org.exoplatform.portal.mop.description.DescriptionService;
+import org.exoplatform.portal.mop.importer.ImportMode;
+import org.exoplatform.portal.mop.importer.Imported;
+import org.exoplatform.portal.mop.importer.Imported.Status;
+import org.exoplatform.portal.mop.importer.NavigationImporter;
+import org.exoplatform.portal.mop.importer.PageImporter;
+import org.exoplatform.portal.mop.importer.PortalConfigImporter;
 import org.exoplatform.portal.mop.navigation.NavigationService;
 import org.exoplatform.portal.pom.config.POMSession;
 import org.exoplatform.portal.pom.config.POMSessionManager;
 import org.gatein.common.logging.Logger;
 import org.gatein.common.logging.LoggerFactory;
 import org.gatein.mop.api.workspace.Workspace;
-import org.jibx.runtime.*;
+import org.jibx.runtime.JiBXException;
 
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -449,6 +449,95 @@
       overrideExistingData = overrideExistingData || other.overrideExistingData;
    }
 
+   /**
+    * This is used to delete an already loaded NewPortalConfigListener(s)
+    * 
+    * @param other
+    */
+   public void deleteListenerElements(NewPortalConfigListener other)
+   {
+      if (configs == null)
+      {
+         log.warn("No Portal configurations was loaded, nothing to delete !");
+      }
+      else if (other.configs != null && !other.configs.isEmpty())
+      {
+         List<NewPortalConfig> result = new ArrayList<NewPortalConfig>(configs);
+         for (NewPortalConfig newPortalConfigToDelete : other.configs)
+         {
+            int i = 0;
+            while (i < result.size())
+            {
+               NewPortalConfig newPortalConfig = result.get(i);
+               if (newPortalConfigToDelete.getOwnerType().equals(newPortalConfig.getOwnerType()))
+               {
+                  for (String owner : newPortalConfigToDelete.getPredefinedOwner())
+                  {
+                     newPortalConfig.getPredefinedOwner().remove(owner);
+                  }
+               }
+               // if the configuration has no owner definitions, then delete it
+               if (newPortalConfig.getPredefinedOwner().size() == 0)
+               {
+                  result.remove(newPortalConfig);
+               }
+               else
+               {
+                  i++;
+               }
+            }
+         }
+         this.configs = Collections.unmodifiableList(result);
+      }
+
+      if (templateConfigs == null)
+      {
+         log.warn("No Portal templates configurations was loaded, nothing to delete !");
+      }
+      else if (other.templateConfigs != null && !other.templateConfigs.isEmpty())
+      {
+         List<SiteConfigTemplates> result = new ArrayList<SiteConfigTemplates>(templateConfigs);
+         deleteSiteConfigTemplates(other, result, PortalConfig.PORTAL_TYPE);
+         deleteSiteConfigTemplates(other, result, PortalConfig.GROUP_TYPE);
+         deleteSiteConfigTemplates(other, result, PortalConfig.USER_TYPE);
+         this.templateConfigs = Collections.unmodifiableList(result);
+      }
+   }
+
+   private void deleteSiteConfigTemplates(NewPortalConfigListener other, List<SiteConfigTemplates> result, String templateType)
+   {
+      for (SiteConfigTemplates siteConfigTemplatesToDelete : other.templateConfigs)
+      {
+         Set<String> portalTemplatesToDelete = siteConfigTemplatesToDelete.getTemplates(templateType);
+         if (portalTemplatesToDelete != null && portalTemplatesToDelete.size() > 0)
+         {
+            int i = 0;
+            while (i < result.size())
+            {
+               SiteConfigTemplates siteConfigTemplates = result.get(i);
+               Set<String> portalTemplates = siteConfigTemplates.getTemplates(templateType);
+               if (portalTemplatesToDelete != null && portalTemplatesToDelete.size() > 0)
+               {
+                  portalTemplates.removeAll(portalTemplatesToDelete);
+               }
+               if ((siteConfigTemplates.getTemplates(PortalConfig.PORTAL_TYPE) == null
+                        || siteConfigTemplates.getTemplates(PortalConfig.PORTAL_TYPE).size() == 0)
+                     && (siteConfigTemplates.getTemplates(PortalConfig.GROUP_TYPE) == null
+                        || siteConfigTemplates.getTemplates(PortalConfig.GROUP_TYPE).size() == 0)
+                     && (siteConfigTemplates.getTemplates(PortalConfig.USER_TYPE) == null 
+                        || siteConfigTemplates.getTemplates(PortalConfig.USER_TYPE).size() == 0))
+               {
+                  result.remove(siteConfigTemplates);
+               }
+               else
+               {
+                  i++;
+               }
+            }
+         }
+      }
+   }
+
    public void initPortalConfigDB(NewPortalConfig config) throws Exception
    {
       for (String owner : config.getPredefinedOwner())

Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java	2011-10-21 09:06:06 UTC (rev 7818)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java	2011-10-21 11:00:18 UTC (rev 7819)
@@ -45,7 +45,14 @@
 import org.exoplatform.services.organization.OrganizationService;
 import org.picocontainer.Startable;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.Set;
 
 /**
  * Created by The eXo Platform SAS Apr 19, 2007 This service is used to load the PortalConfig, Page config and
@@ -626,6 +633,20 @@
       }
    }
 
+   public void deleteListenerElements(ComponentPlugin listener)
+   {
+      if (listener instanceof NewPortalConfigListener)
+      {
+         synchronized (this)
+         {
+            if (newPortalConfigListener_ != null)
+            {
+               newPortalConfigListener_.deleteListenerElements((NewPortalConfigListener) listener);
+            }
+         }
+      }
+   }
+
    public void start()
    {
       try



More information about the gatein-commits mailing list