Author: scottbw
Date: Tue Feb 23 23:06:10 2010
New Revision: 915574

URL: http://svn.apache.org/viewvc?rev=915574&view=rev
Log:
Refactored some of the admin methods into static factories WidgetFactory and 
WidgetInstanceFactory to make the code easier to understand by keeping concerns 
together. Longer term I think the WidgetAdminManager can eventually be removed 
completely.

Added:
    incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
Modified:
    incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
    
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java
    
incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java
    
incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
    incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java

Modified: incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java Tue 
Feb 23 23:06:10 2010
@@ -41,6 +41,7 @@
 import org.apache.wookie.exceptions.InvalidStartFileException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
+import org.apache.wookie.helpers.WidgetFactory;
 import org.apache.wookie.helpers.WidgetKeyManager;
 import org.apache.wookie.manager.IWidgetAdminManager;
 import org.apache.wookie.manager.impl.WidgetAdminManager;
@@ -370,7 +371,7 @@
                String widgetId = request.getParameter("widgetId"); 
//$NON-NLS-1$
                Widget widget = Widget.findById(Integer.parseInt(widgetId));
                String guid = widget.getGuid();
-               
if(manager.removeWidgetAndReferences(Integer.parseInt(widgetId))){
+               if(WidgetFactory.destroy(Integer.parseInt(widgetId))){
                        
if(WidgetPackageUtils.removeWidgetResources(WIDGETFOLDER, guid)){               
        
                                session.setAttribute("message_value", 
localizedMessages.getString("WidgetAdminServlet.12"));                     
//$NON-NLS-1$ //$NON-NLS-2$ 
                        }
@@ -477,7 +478,8 @@
                                IManifestModel widgetModel = 
WidgetPackageUtils.processWidgetPackage(zipFile,properties.getString("widget.widgetfolder"),
 WIDGETFOLDER,UPLOADFOLDER,locales);//$NON-NLS-1$
                                
if(!Widget.exists(widgetModel.getIdentifier())){        
                                        // ADD
-                                       int dbkey = 
manager.addNewWidget(widgetModel, new String[]{});
+                                       Widget widget = 
WidgetFactory.addNewWidget(widgetModel);
+                                       int dbkey = widget.getId();
                                        // widget added
                                        session.setAttribute("message_value", 
"'"+ widgetModel.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.19")); //$NON-NLS-1$ 
//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
                                        retrieveServices(session);

Added: incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java?rev=915574&view=auto
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java 
(added)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java Tue 
Feb 23 23:06:10 2010
@@ -0,0 +1,272 @@
+/*
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wookie.helpers;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.apache.wookie.beans.AccessRequest;
+import org.apache.wookie.beans.Description;
+import org.apache.wookie.beans.Feature;
+import org.apache.wookie.beans.License;
+import org.apache.wookie.beans.Name;
+import org.apache.wookie.beans.Param;
+import org.apache.wookie.beans.PreferenceDefault;
+import org.apache.wookie.beans.StartFile;
+import org.apache.wookie.beans.Widget;
+import org.apache.wookie.beans.WidgetDefault;
+import org.apache.wookie.beans.WidgetIcon;
+import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.WidgetType;
+import org.apache.wookie.manifestmodel.IAccessEntity;
+import org.apache.wookie.manifestmodel.IContentEntity;
+import org.apache.wookie.manifestmodel.IDescriptionEntity;
+import org.apache.wookie.manifestmodel.IFeatureEntity;
+import org.apache.wookie.manifestmodel.IIconEntity;
+import org.apache.wookie.manifestmodel.ILicenseEntity;
+import org.apache.wookie.manifestmodel.IManifestModel;
+import org.apache.wookie.manifestmodel.INameEntity;
+import org.apache.wookie.manifestmodel.IParamEntity;
+import org.apache.wookie.manifestmodel.IPreferenceEntity;
+
+/**
+ * Factory for creating and destroying Widgets
+ */
+public class WidgetFactory {
+       static Logger _logger = Logger.getLogger(WidgetFactory.class.getName());
+
+       /**
+        * Adds a new widget
+        * @param model the model of the widget to add
+        * @param grantAccessRequests whether to automatically grant access 
requests for the widget
+        * @return the widget
+        */
+       public static Widget addNewWidget(IManifestModel model, boolean 
grantAccessRequests) {
+               return addNewWidget(model,null, grantAccessRequests);
+       }
+
+       /**
+        * Adds a new widget
+        * @param model the model of the widget to add
+        * @return the widget
+        */
+       public static Widget addNewWidget(IManifestModel model) {
+               return addNewWidget(model,null,false);
+       }
+
+       /**
+        * Adds a new widget
+        * @param model the model of the widget to add
+        * @param widgetTypes the types to allocate the widget to
+        * @return the widget
+        */
+       public static Widget addNewWidget(IManifestModel model,String[] 
widgetTypes) {
+               return addNewWidget(model,widgetTypes,false);
+       }       
+
+
+       /**
+        * Constructs a new Widget and persists it and all dependent objects
+        * @param model the model for the widget
+        * @param widgetTypes the types to set for the widget
+        * @param grantAccessRequests whether to grant access requests created 
for the widget
+        * @return the widget
+        */
+       public static Widget addNewWidget(IManifestModel model, String[] 
widgetTypes, boolean grantAccessRequests) {    
+               Widget widget = createWidget(model);
+               createTypes(widgetTypes, widget);
+               createStartFiles(model,widget);
+               createNames(model,widget);
+               createDescriptions(model,widget);
+               createIcons(model, widget);
+               createLicenses(model,widget);           
+               createPreferences(model,widget);
+               createFeatures(model,widget);
+               createAccessRequests(model, widget, grantAccessRequests);
+               return widget;         
+       }
+
+       private static Widget createWidget(IManifestModel model){
+               Widget widget;
+               widget = new Widget();                                          
                                                
+               widget.setWidgetAuthor(model.getAuthor());
+               widget.setWidgetAuthorEmail(model.getAuthorEmail());
+               widget.setWidgetAuthorHref(model.getAuthorHref());
+               widget.setGuid(model.getIdentifier());
+               widget.setHeight(model.getHeight());
+               widget.setWidth(model.getWidth());
+               widget.setVersion(model.getVersion());
+               widget.save();  
+               return widget;
+       }
+
+       @SuppressWarnings("unchecked")
+       private static void createTypes(String[] widgetTypes, Widget widget){
+               WidgetType widgetType;
+               if (widgetTypes!=null){
+                       for(int i=0;i<widgetTypes.length;i++){
+                               widgetType = new WidgetType();
+                               widgetType.setWidgetContext(widgetTypes[i]);
+                               widgetType.setWidget(widget);
+                               widget.getWidgetTypes().add(widgetType);
+                               widgetType.save();
+                       }
+               }
+       }
+
+       private static void createStartFiles(IManifestModel model, Widget 
widget){
+               for (IContentEntity page:model.getContentList()){
+                       StartFile start = new StartFile();
+                       start.setCharset(page.getCharSet());
+                       start.setLang(page.getLang());
+                       start.setUrl(page.getSrc());
+                       start.setWidget(widget);
+                       start.save();
+               }
+       }
+
+       private static void createNames(IManifestModel model, Widget widget){
+               for (INameEntity name:model.getNames()){
+                       Name widgetName = new Name();
+                       widgetName.setLang(name.getLang());
+                       widgetName.setDir(name.getDir());
+                       widgetName.setName(name.getName());
+                       widgetName.setShortName(name.getShort());
+                       widgetName.setWidget(widget);
+                       widgetName.save();
+               }
+       }
+
+       private static void createDescriptions(IManifestModel model, Widget 
widget){
+               for (IDescriptionEntity desc:model.getDescriptions()){
+                       Description widgetDesc = new Description();
+                       widgetDesc.setContent(desc.getDescription());
+                       widgetDesc.setLang(desc.getLang());
+                       widgetDesc.setDir(desc.getDir());
+                       widgetDesc.setWidget(widget);
+                       widgetDesc.save();
+               }
+       }
+
+       private static void createIcons(IManifestModel model, Widget widget){
+               for(IIconEntity icon: model.getIconsList()){
+                       WidgetIcon widgetIcon = new 
WidgetIcon(icon.getSrc(),icon.getHeight(),icon.getWidth(),icon.getLang(), 
widget);
+                       widgetIcon.save();
+               }
+       }
+
+       private static void createLicenses(IManifestModel model, Widget widget){
+               for(ILicenseEntity licenseModel: model.getLicensesList()){
+                       License license = new 
License(licenseModel.getLicenseText(),licenseModel.getHref(), 
licenseModel.getLang(), licenseModel.getDir(), widget);
+                       license.save();
+               }
+       }
+
+       private static void createPreferences(IManifestModel model, Widget 
widget){
+               for(IPreferenceEntity prefEntity : model.getPrefences()){
+                       PreferenceDefault prefenceDefault = new 
PreferenceDefault();
+                       prefenceDefault.setPreference(prefEntity.getName());
+                       prefenceDefault.setValue(prefEntity.getValue());
+                       prefenceDefault.setReadOnly(prefEntity.isReadOnly());
+                       prefenceDefault.setWidget(widget);
+                       prefenceDefault.save();
+               }
+       }
+
+       private static void createFeatures(IManifestModel model, Widget widget){
+               for(IFeatureEntity featureEntity: model.getFeatures()){
+                       Feature feature = new Feature();
+                       feature.setFeatureName(featureEntity.getName());
+                       feature.setRequired(featureEntity.isRequired());
+                       feature.setWidget(widget);
+                       feature.save();                 
+                       // now attach all parameters to this feature.
+                       for(IParamEntity paramEntity : 
featureEntity.getParams()){
+                               Param param = new Param();
+                               param.setParameterName(paramEntity.getName());
+                               param.setParameterValue(paramEntity.getValue());
+                               param.setParentFeature(feature);
+                               param.save();
+                       }
+               }
+       }
+
+       private static void createAccessRequests(IManifestModel model, Widget 
widget, boolean grantAccessRequests){
+               for(IAccessEntity accessEntity:model.getAccessList()){
+                       AccessRequest acc = new AccessRequest();
+                       acc.setOrigin(accessEntity.getOrigin());
+                       acc.setSubdomains(accessEntity.hasSubDomains());
+                       acc.setWidget(widget);
+                       acc.setGranted(grantAccessRequests);
+                       if (grantAccessRequests){
+                               _logger.info("access policy granted for 
"+widget.getWidgetTitle("en")+" to access "+acc.getOrigin());
+                       }
+                       acc.save();
+               }
+       }
+
+       /**
+        * Destroy a widget and all dependent objects and references
+        * @param id the id of the widget
+        * @return true if the widget is destroyed successfully
+        */
+       public static boolean destroy(int id){
+               Widget widget = Widget.findById(Integer.valueOf(id));
+               return destroy(widget);
+       }
+
+       /**
+        * Destroy a widget and all dependent objects and references
+        * @param widget the widget to destroy
+        * @return true if the widget is destroyed successfully
+        */
+       public static boolean destroy(Widget widget){
+
+               if(widget==null) return false;
+               
+               // remove any defaults for this widget
+               WidgetDefault[] widgetDefault = 
WidgetDefault.findByValue("widgetId", widget.getId());
+               if (widgetDefault.length == 1) widgetDefault[0].delete();
+               
+               // remove any widget instances for this widget
+               WidgetInstance[] instances = 
WidgetInstance.findByValue("widget", widget);      
+               for(WidgetInstance instance : instances){
+                       WidgetInstanceFactory.destroy(instance);
+               }
+               
+               // remove any widget types for this widget
+               Set<?> types = widget.getWidgetTypes();
+               WidgetType[] widgetTypes = types.toArray(new 
WidgetType[types.size()]);                 
+               for(int j=0;j<widgetTypes.length;++j){  
+                       widgetTypes[j].delete();
+               }
+
+               // remove PreferenceDefaults
+               
PreferenceDefault.delete(PreferenceDefault.findByValue("widget", widget));
+
+               // remove Features
+               for(Feature feature :Feature.findByValue("widget", widget)){
+                       Param.delete(Param.findByValue("parentFeature", 
feature));
+                       feature.delete();
+               }
+               
+               // remove any AccessRequests
+               AccessRequest.delete(AccessRequest.findByValue("widget", 
widget));
+
+               // remove the widget itself
+               widget.delete();
+               return true;
+       } 
+
+}

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java 
Tue Feb 23 23:06:10 2010
@@ -19,8 +19,10 @@
 import org.apache.commons.configuration.Configuration;
 import org.apache.log4j.Logger;
 import org.apache.wookie.Messages;
+import org.apache.wookie.beans.Participant;
 import org.apache.wookie.beans.Preference;
 import org.apache.wookie.beans.PreferenceDefault;
+import org.apache.wookie.beans.SharedData;
 import org.apache.wookie.beans.Widget;
 import org.apache.wookie.beans.WidgetInstance;
 import org.apache.wookie.util.HashGenerator;
@@ -194,6 +196,17 @@
                pref.setReadOnly(readOnly);
                pref.save();    
        }
+       
+       /**
+        * Destroy a widget instance and all references to it
+        * @param instance
+        */
+       public static void destroy(WidgetInstance instance){
+               SharedData.delete(SharedData.findByValue("widgetInstance", 
instance));
+               Preference.delete(Preference.findByValue("widgetInstance", 
instance));
+               Participant.delete(Participant.findByValue("widgetInstance", 
instance));
+               instance.delete();
+       }
 
 }
 

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java 
Tue Feb 23 23:06:10 2010
@@ -14,8 +14,6 @@
 
 package org.apache.wookie.manager;
 
-import org.apache.wookie.manifestmodel.IManifestModel;
-
 /**
  * Interface for admin functions
  * 
@@ -26,51 +24,6 @@
 public interface IWidgetAdminManager {
 
        /**
-        * Adds a new widget
-        * @param model the model of the widget to add
-        * @param widgetTypes the types to allocate the widget to
-        * @return true if successfully added, otherwise false
-        */
-       int addNewWidget(IManifestModel model, String[] widgetTypes);
-       
-       /**
-        * Adds a new widget
-        * @param model the model of the widget to add
-        * @return true if successfully added, otherwise false
-        */
-       int addNewWidget(IManifestModel model);
-       
-       /**
-        * Adds a new widget
-        * @param model the model of the widget to add
-        * @param grantAccessRequests whether to automatically grant access 
requests for the widget
-        * @return true if successfully added, otherwise false
-        */
-       int addNewWidget(IManifestModel model, boolean grantAccessRequests);
-
-       /**
-        * delete any default types that belong to a given widgetid
-        */
-       void deleteWidgetDefaultById(int widgetKey);
-
-       /**
-        * from a given widgetKey & service type, remove the default widget 
entry
-        * @param widgetKey
-        * @param serviceType
-        */
-       void deleteWidgetDefaultByIdAndServiceType(int widgetKey,
-                       String serviceType);
-
-       /**
-        * Check to see if a service type is currently listed for a particular 
widget
-        * @param dbkey
-        * @param serviceType
-        * @return
-        */
-       boolean doesServiceExistForWidget(int dbkey,
-                       String serviceType);
-
-       /**
         * Find if this widget is maximizable, from given key
         * @param dbKey
         * @return
@@ -85,13 +38,6 @@
        boolean removeSingleWidgetType(int widgetId, String widgetType);
 
        /**
-        * Remove a widget and any references in the DB - i.e. WidgetInstances 
-        * @param widgetId
-        * @return
-        */
-       boolean removeWidgetAndReferences(int widgetId);
-
-       /**
         * Sets a given widget to be the default for a given context - i.e. 
chat or discussion etc...
         * @param key - the key of the widget to set as defult
         * @param widgetType - the type of widget

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
 Tue Feb 23 23:06:10 2010
@@ -20,34 +20,10 @@
 
 import org.apache.log4j.Logger;
 import org.apache.wookie.Messages;
-import org.apache.wookie.beans.AccessRequest;
-import org.apache.wookie.beans.Description;
-import org.apache.wookie.beans.Feature;
-import org.apache.wookie.beans.License;
-import org.apache.wookie.beans.Name;
-import org.apache.wookie.beans.Param;
-import org.apache.wookie.beans.Participant;
-import org.apache.wookie.beans.Preference;
-import org.apache.wookie.beans.PreferenceDefault;
-import org.apache.wookie.beans.SharedData;
-import org.apache.wookie.beans.StartFile;
-import org.apache.wookie.beans.Whitelist;
 import org.apache.wookie.beans.Widget;
 import org.apache.wookie.beans.WidgetDefault;
-import org.apache.wookie.beans.WidgetIcon;
-import org.apache.wookie.beans.WidgetInstance;
 import org.apache.wookie.beans.WidgetType;
 import org.apache.wookie.manager.IWidgetAdminManager;
-import org.apache.wookie.manifestmodel.IAccessEntity;
-import org.apache.wookie.manifestmodel.IContentEntity;
-import org.apache.wookie.manifestmodel.IDescriptionEntity;
-import org.apache.wookie.manifestmodel.IFeatureEntity;
-import org.apache.wookie.manifestmodel.IIconEntity;
-import org.apache.wookie.manifestmodel.ILicenseEntity;
-import org.apache.wookie.manifestmodel.IManifestModel;
-import org.apache.wookie.manifestmodel.INameEntity;
-import org.apache.wookie.manifestmodel.IParamEntity;
-import org.apache.wookie.manifestmodel.IPreferenceEntity;
 
 /**
  * WidgetAdminManager
@@ -67,142 +43,7 @@
                this.localizedMessages = localizedMessages;     
        }
        
-       public int addNewWidget(IManifestModel model, boolean 
grantAccessRequests) {
-               return addNewWidget(model,null, grantAccessRequests);
-       }
-
-       public int addNewWidget(IManifestModel model) {
-               return addNewWidget(model,null,false);
-       }
-       
-       public int addNewWidget(IManifestModel model,String[] widgetTypes) {
-               return addNewWidget(model,widgetTypes,false);
-       }       
-
-       @SuppressWarnings("unchecked")
-       public int addNewWidget(IManifestModel model, String[] widgetTypes, 
boolean grantAccessRequests) {
-               // NOTE: we pass the whole model here, so that we can create 
all the DB hooks more easily.
-               int newWidgetIdx = -1;                  
-               Widget widget;
-               widget = new Widget();                                          
                                                
-               widget.setWidgetAuthor(model.getAuthor());
-               widget.setWidgetAuthorEmail(model.getAuthorEmail());
-               widget.setWidgetAuthorHref(model.getAuthorHref());
-               widget.setGuid(model.getIdentifier());
-               widget.setHeight(model.getHeight());
-               widget.setWidth(model.getWidth());
-               widget.setVersion(model.getVersion());
-               widget.save();  
-               WidgetType widgetType;
-               if (widgetTypes!=null){
-                       for(int i=0;i<widgetTypes.length;i++){
-                               widgetType = new WidgetType();
-                               widgetType.setWidgetContext(widgetTypes[i]);
-                               widgetType.setWidget(widget);
-                               widget.getWidgetTypes().add(widgetType);
-                               widgetType.save();
-                       }
-               }
-               newWidgetIdx = widget.getId();
-               
-               // Start Files
-               for (IContentEntity page:model.getContentList()){
-                       StartFile start = new StartFile();
-                       start.setCharset(page.getCharSet());
-                       start.setLang(page.getLang());
-                       start.setUrl(page.getSrc());
-                       start.setWidget(widget);
-                       start.save();
-               }
-               
-               // Names
-               for (INameEntity name:model.getNames()){
-                       Name widgetName = new Name();
-                       widgetName.setLang(name.getLang());
-                       widgetName.setDir(name.getDir());
-                       widgetName.setName(name.getName());
-                       widgetName.setShortName(name.getShort());
-                       widgetName.setWidget(widget);
-                       widgetName.save();
-               }
-               
-               // Descriptions
-               for (IDescriptionEntity desc:model.getDescriptions()){
-                       Description widgetDesc = new Description();
-                       widgetDesc.setContent(desc.getDescription());
-                       widgetDesc.setLang(desc.getLang());
-                       widgetDesc.setDir(desc.getDir());
-                       widgetDesc.setWidget(widget);
-                       widgetDesc.save();
-               }
-               
-               // Icons
-               for(IIconEntity icon: model.getIconsList()){
-                       WidgetIcon widgetIcon = new 
WidgetIcon(icon.getSrc(),icon.getHeight(),icon.getWidth(),icon.getLang(), 
widget);
-                       widgetIcon.save();
-               }
-               
-               // Licenses
-               for(ILicenseEntity licenseModel: model.getLicensesList()){
-                       License license = new 
License(licenseModel.getLicenseText(),licenseModel.getHref(), 
licenseModel.getLang(), licenseModel.getDir(), widget);
-                       license.save();
-               }
-
-               // Save default preferences                             
-               for(IPreferenceEntity prefEntity : model.getPrefences()){
-                       PreferenceDefault prefenceDefault = new 
PreferenceDefault();
-                       prefenceDefault.setPreference(prefEntity.getName());
-                       prefenceDefault.setValue(prefEntity.getValue());
-                       prefenceDefault.setReadOnly(prefEntity.isReadOnly());
-                       prefenceDefault.setWidget(widget);
-                       prefenceDefault.save();
-               }
-
-               // Save Features
-               for(IFeatureEntity featureEntity: model.getFeatures()){
-                       Feature feature = new Feature();
-                       feature.setFeatureName(featureEntity.getName());
-                       feature.setRequired(featureEntity.isRequired());
-                       feature.setWidget(widget);
-                       feature.save();                 
-                       // now attach all parameters to this feature.
-                       for(IParamEntity paramEntity : 
featureEntity.getParams()){
-                               Param param = new Param();
-                               param.setParameterName(paramEntity.getName());
-                               param.setParameterValue(paramEntity.getValue());
-                               param.setParentFeature(feature);
-                               param.save();
-                       }
-               }
-               
-               // Save Access Requests
-               for(IAccessEntity accessEntity:model.getAccessList()){
-                       AccessRequest acc = new AccessRequest();
-                       acc.setOrigin(accessEntity.getOrigin());
-                       acc.setSubdomains(accessEntity.hasSubDomains());
-                       acc.setWidget(widget);
-                       acc.setGranted(grantAccessRequests);
-                       if (grantAccessRequests){
-                               _logger.info("access policy granted for 
"+widget.getWidgetTitle("en")+" to access "+acc.getOrigin());
-                       }
-                       acc.save();
-               }
-
-               return newWidgetIdx;           
-       }
-       
-       /* (non-Javadoc)
-        * @see 
org.apache.wookie.manager.IWidgetAdminManager#deleteWidgetDefaultById(int)
-        */
-       public void deleteWidgetDefaultById(int widgetKey){             
-               WidgetDefault[] widgetDefault = 
WidgetDefault.findByValue("widgetId", widgetKey);
-               if (widgetDefault.length == 1) widgetDefault[0].delete();
-       }
-       
-       /* (non-Javadoc)
-        * @see 
org.apache.wookie.manager.IWidgetAdminManager#deleteWidgetDefaultByIdAndServiceType(int,
 java.lang.String)
-        */
-       public void deleteWidgetDefaultByIdAndServiceType(int widgetKey, String 
serviceType){
+       private void deleteWidgetDefaultByIdAndServiceType(int widgetKey, 
String serviceType){
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("widgetId", widgetKey);
                map.put("widgetContext", serviceType);
@@ -211,10 +52,7 @@
                WidgetDefault.delete(widgetDefaults);
        }
        
-       /* (non-Javadoc)
-        * @see 
org.apache.wookie.manager.IWidgetAdminManager#doesServiceExistForWidget(int, 
java.lang.String)
-        */
-       public boolean doesServiceExistForWidget(int dbkey, String serviceType){
+       private boolean doesServiceExistForWidget(int dbkey, String 
serviceType){
                Widget widget = Widget.findById(Integer.valueOf(dbkey));
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("widget", widget);
@@ -260,49 +98,6 @@
        }
        
        /* (non-Javadoc)
-        * @see 
org.apache.wookie.manager.IWidgetAdminManager#removeWidgetAndReferences(int)
-        */
-       public boolean removeWidgetAndReferences(int widgetId){
-               // get the widget
-               Widget widget = Widget.findById(Integer.valueOf(widgetId));
-               // remove any defaults for this widget
-               deleteWidgetDefaultById(widgetId);
-               
-               if(widget==null) return false;
-               // find any widget instances for this widget
-               WidgetInstance[] instances = 
WidgetInstance.findByValue("widget", widget);              
-               // try to remove prefs, shareddata and then the instances
-               for(WidgetInstance inst : instances){
-                       
SharedData.delete(SharedData.findByValue("widgetInstance", inst));
-                       
Preference.delete(Preference.findByValue("widgetInstance", inst));
-                       
Participant.delete(Participant.findByValue("widgetInstance", inst));
-                       inst.delete();
-               }
-               // remove any widget types for this widget
-               Set<?> types = widget.getWidgetTypes();
-        WidgetType[] widgetTypes = types.toArray(new 
WidgetType[types.size()]);                        
-        for(int j=0;j<widgetTypes.length;++j){ 
-               widgetTypes[j].delete();
-               }
-        
-        //Delete any PreferenceDefaults
-        PreferenceDefault.delete(PreferenceDefault.findByValue("widget", 
widget));
-        
-        // next do the features & children params
-        for(Feature feature :Feature.findByValue("widget", widget)){
-               Param.delete(Param.findByValue("parentFeature", feature));
-               feature.delete();
-        }
-        
-               // remove the widget itself
-        widget.delete();
-               return true;
-       } 
-       
-       
-       
-       
-       /* (non-Javadoc)
         * @see 
org.apache.wookie.manager.IWidgetAdminManager#setDefaultWidget(int, 
java.lang.String)
         */
        public void setDefaultWidget(int key, String widgetType){

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
Tue Feb 23 23:06:10 2010
@@ -28,7 +28,7 @@
 import org.apache.wookie.exceptions.BadManifestException;
 import org.apache.wookie.exceptions.BadWidgetZipFileException;
 import org.apache.wookie.feature.FeatureLoader;
-import org.apache.wookie.manager.impl.WidgetAdminManager;
+import org.apache.wookie.helpers.WidgetFactory;
 import org.apache.wookie.manifestmodel.IManifestModel;
 import org.apache.wookie.util.WgtWatcher;
 import org.apache.wookie.util.WidgetPackageUtils;
@@ -161,9 +161,8 @@
                                                        
dbManager.beginTransaction();
                                                        File upload = 
WidgetPackageUtils.dealWithDroppedFile(UPLOADFOLDER, f);
                                                        IManifestModel model = 
WidgetPackageUtils.processWidgetPackage(upload, localWidgetFolderPath, 
WIDGETFOLDER, UPLOADFOLDER, locales);
-                                                       WidgetAdminManager 
manager = new WidgetAdminManager(null);
                                                        
if(!Widget.exists(model.getIdentifier())) {
-                                                               
manager.addNewWidget(model, true);      
+                                                               
WidgetFactory.addNewWidget(model, true);        
                                                                
_logger.info(model.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.19"));
                                                        } else {
                                                                
_logger.info(model.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.20"));


Reply via email to