Author: taylor
Date: Mon Apr 13 23:20:50 2009
New Revision: 764646

URL: http://svn.apache.org/viewvc?rev=764646&view=rev
Log:
* start on RPAD reimplementation with wicket framework
  contribution from Jody McAlister

* reformat and add license to PortalDataSerialzier

Added:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RPADApplication.java
   (with props)
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.html
   (with props)
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.java
   (with props)
Modified:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.html
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.java

Added: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RPADApplication.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RPADApplication.java?rev=764646&view=auto
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RPADApplication.java
 (added)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RPADApplication.java
 Mon Apr 13 23:20:50 2009
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.portlets.rpad;
+
+import org.apache.jetspeed.portlets.wicket.AbstractAdminWebApplication;
+
+public class RPADApplication extends AbstractAdminWebApplication
+{
+    /**
+     * Constructor.
+     */
+    public RPADApplication()
+    {
+
+    }
+
+    /**
+     * @see org.apache.wicket.Application#getHomePage()
+     */
+    public Class getHomePage()
+    {
+        return RemotePortletAppDeployer.class;
+    }
+}
\ No newline at end of file

Propchange: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RPADApplication.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RPADApplication.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.html
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.html?rev=764646&view=auto
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.html
 (added)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.html
 Mon Apr 13 23:20:50 2009
@@ -0,0 +1,67 @@
+<!-- 
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+  
+ -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml";>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>RPAD</title>
+</head>
+
+<body>
+
+ <form wicket:id="form">
+
+              Repository: <select wicket:id="repositorySelection">
+                <option>repo1</option>
+                <option>repo2</option>
+              </select>
+<input wicket:id="selectButton" type="submit" value="Select" />
+
+</form>
+
+ <table width="95%" border="0" wicket:id="tableGroup">
+       <thead>
+               <tr>
+               <th scope="col" align="left" width="20%">Group ID</th>
+               <th scope="col" align="left">Artifact ID</th>
+               <th scope="col" align="left">Name</th>
+               <th scope="col" align="left">Version</th>
+               <th scope="col" align="left">Type</th>
+               <th scope="col" align="left">Action</th>
+               </tr>
+  </thead>
+  <tbody>
+       <tr wicket:id="repositories">
+       <td align="left"><span wicket:id="groupId">[groupId]</span></td>
+       <td align="left"><span wicket:id="artifactId">[artifactId]</span></td>
+       <td align="left"><span wicket:id="name">[name]</span></td>
+       <td align="left"><span wicket:id="version">[version]</span></td>
+       <td align="left"><span wicket:id="type">[type]</span></td>
+       <td align="left"><span wicket:id="action">[action]</span></td>
+       </tr>
+  </tbody>
+  <tfoot>
+       <tr>
+       <td wicket:id="navigator"></td>
+    </tr>
+  </tfoot>
+</table> 
+
+</body>
+
+</html>
\ No newline at end of file

Propchange: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.html
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.java?rev=764646&view=auto
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.java
 (added)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.java
 Mon Apr 13 23:20:50 2009
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jetspeed.portlets.rpad;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.PageableListView;
+import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.util.time.Duration;
+
+public class RemotePortletAppDeployer extends WebPage 
+{
+       /** available sites for selection. */
+       @SuppressWarnings("unchecked")
+       private static final List SITES = Arrays.asList(new String[] {"Dave's 
Repository", "Jody's Repository", "Whole lotta Repository" });
+       
+       @SuppressWarnings("unchecked")
+       public RemotePortletAppDeployer()
+    {
+         Form form = new Form("form");           
+          form.add(new DropDownChoice("repositorySelection", SITES));
+          
+          Button selectButton = new Button("selectButton") {
+                       private static final long serialVersionUID = 1L;
+                       public void onSubmit() {
+                  info("select.onSubmit executed");
+              }
+          };
+          
+          form.add(selectButton);       
+          add(form);
+          
+          IModel getRepo = new LoadableDetachableModel()
+          {
+                 protected Object load() {
+                         return getRepo();
+                 }
+          };
+
+               PageableListView listview = new 
PageableListView("repositories", getRepo, 6) 
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       // This method is called for each 'entry' in the list.
+                       @Override 
+                       protected void populateItem(final ListItem item) {
+                               final Repository repository = 
(Repository)item.getModelObject();
+                                       item.add(new Label("groupId", 
repository.groupId));
+                                       item.add(new 
Label("artifactId",repository.artifactId));
+                                       item.add(new Label("name", 
repository.name));
+                                       item.add(new Label("version", 
repository.version));
+                                       item.add(new Label("type", 
repository.type));
+                                       item.add(new Label("action", 
repository.action)); 
+
+                       }               
+               };
+               
+        WebMarkupContainer tableGroup = new WebMarkupContainer("tableGroup");
+        tableGroup.setOutputMarkupId(true);
+        tableGroup.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(5)));
+        tableGroup.add(new PagingNavigator("navigator", listview));
+        tableGroup.add(listview);
+        add(tableGroup);
+      
+    }
+   
+       // mock data for testing listview
+       private List<Repository> getRepo() 
+       {
+               List<Repository> repositories = new ArrayList<Repository>();
+               {
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Jody", "Jody", "2.0", "war", "Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.dave", "Dave", "Dave", "2.1", "war", "Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Hippo", "Hippo", "1.7", "war", 
"Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Jehosophat", "Jody", "2.2", "war", 
"Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.dave", "Niels", "Dave", "2.3", "war", "Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Ted", "Hippo", "1.3", "war", "Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Jehosphat", "Jody", "2.4", "war", 
"Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.dave", "Bob", "Dave", "2.5", "war", "Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Al", "Hippo", "6.7", "war", "Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Jocelyn", "Jody", "2.6", "war", 
"Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.dave", "Amy", "Dave", "2.7", "war", "Deploy"));
+                       repositories.add(new 
Repository("org.apache.portals.jody", "Shea", "Hippo", "1.8", "war", "Deploy"));
+               }
+               return repositories;
+       }
+       
+       // some arbitrary class for data.
+       class Repository {
+               String groupId;
+               String artifactId;
+               String name;
+               String version;
+               String type;
+               String action;
+               
+               //field names 
+               Repository(String gId, String aId, String emailAddr, String 
version, String rtype, String raction) {
+                       this.groupId = gId;
+                       this.artifactId = aId;
+                       this.name = emailAddr;
+                       this.version = version;
+                       this.type = rtype;
+                       this.action = raction;
+               }        
+    }
+}
+
+
+
+      

Propchange: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/rpad/RemotePortletAppDeployer.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.html
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.html?rev=764646&r1=764645&r2=764646&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.html
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.html
 Mon Apr 13 23:20:50 2009
@@ -1,3 +1,20 @@
+<!-- 
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+  
+ -->
 <?xml version="1.0" encoding="UTF-8"?>
 <html xmlns="http://www.w3.org/1999/xhtml"; >
 <body>

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.java?rev=764646&r1=764645&r2=764646&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/serializer/PortalDataSerializer.java
 Mon Apr 13 23:20:50 2009
@@ -49,312 +49,365 @@
  * @author
  * @version $Id$
  */
-public class PortalDataSerializer extends AdminPortletWebPage {
-
-       private static final String USERS_GROUPS_ROLES = "usersGroupsRoles";
-       private static final String PERMISSIONS = "permissions";
-       private static final String PROFILING = "profiling";
-       private static final String CAPABILITIES = "capabilities";
-       private static final String USER_PREFS = "userPrefs";
-       private static final String ENTITIES = "entities";
-
-       public PortalDataSerializer() {
-               
-               super();
-               
-               // a first form to export data
-               add(new ExportForm("exportForm"));
-               
-               // a second form to import data
-               add(new ImportForm("importForm"));
-       }
-
-       private class ExportForm extends Form<Object> {
-
-               private static final long serialVersionUID = 0L;
-
-               private final ExportResourceProvider exportResourceProvider;
-
-               private boolean doUserGroupsRoles = true;
-               private boolean doPermissions = true;
-               private boolean doProfiling = true;
-               private boolean doCapabilities = true;
-               private boolean doUserPrefs = true;
-               private boolean doEntities = true;
-
-               /* Constructor */
-               public ExportForm(final String id) {
-
-                       super(id);
-
-                       add(new Label("exportHeader", new 
ResourceModel("export.header")));
-
-                       add(new ExportCheckBox(USERS_GROUPS_ROLES, new 
PropertyModel<Boolean>(this, "doUserGroupsRoles")));
-                       add(new Label("usersGroupsRolesLabel", new 
ResourceModel("export.users_groups_roles")));
-
-                       add(new ExportCheckBox(PERMISSIONS, new 
PropertyModel<Boolean>(this, "doPermissions")));
-                       add(new Label("permissionsLabel", new 
ResourceModel("export.permissions")));
-
-                       add(new ExportCheckBox(PROFILING, new 
PropertyModel<Boolean>(this, "doProfiling")));
-                       add(new Label("profilingLabel", new 
ResourceModel("export.profiling_rules")));
-
-                       add(new ExportCheckBox(CAPABILITIES, new 
PropertyModel<Boolean>(this,"doCapabilities")));
-                       add(new Label("capabilitiesLabel", new 
ResourceModel("export.capabilities")));
-
-                       add(new ExportCheckBox(USER_PREFS, new 
PropertyModel<Boolean>(this, "doUserPrefs")));
-                       add(new Label("userPrefsLabel", new 
ResourceModel("export.user_preferences")));
-
-                       add(new ExportCheckBox(ENTITIES, new 
PropertyModel<Boolean>(this, "doEntities")));
-                       add(new Label("entitiesLabel", new 
ResourceModel("export.portlet_entities")));
-
-                       this.exportResourceProvider = new 
ExportResourceProvider( 
-                                       
getPortletRequest().getUserPrincipal().getName());
-
-                       DynamicResourceLink downloadLink = new 
DynamicResourceLink("exportLink", new 
PropertyModel<ExportResourceProvider>(this, "exportResourceProvider")){
-
-                               private static final long serialVersionUID = 0L;
-
-                               @Override
-                               public void onClick() {
-                                       Map<String, Object> settings = new 
HashMap<String, Object>();
-                                       
settings.put(JetspeedSerializer.KEY_PROCESS_USERS, new 
Boolean(doUserGroupsRoles));
-                                       
settings.put(JetspeedSerializer.KEY_PROCESS_PERMISSIONS, new 
Boolean(doPermissions));
-                                       
settings.put(JetspeedSerializer.KEY_PROCESS_PROFILER, new Boolean(doProfiling));
-                                       
settings.put(JetspeedSerializer.KEY_PROCESS_CAPABILITIES, new 
Boolean(doCapabilities));
-                                       
settings.put(JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES,new 
Boolean(doUserPrefs));
-                                       
settings.put(JetspeedSerializer.KEY_PROCESS_ENTITIES,new Boolean(doEntities));
-                                       
settings.put(JetspeedSerializer.KEY_EXPORT_INDENTATION, "\t");
-                                       
settings.put(JetspeedSerializer.KEY_OVERWRITE_EXISTING, Boolean.TRUE);
-                                       
settings.put(JetspeedSerializer.KEY_BACKUP_BEFORE_PROCESS, Boolean.FALSE);      
                                
-                                       
-                                       
exportResourceProvider.setSettings(settings);
-                               }                               
-                       };
-                       downloadLink.add(new Label("exportAction", new 
ResourceModel("export.action")));
-                       add(downloadLink);
-               };
-
-               private class ExportCheckBox extends AjaxCheckBox 
-               {
-                       private static final long serialVersionUID = 1L;
-
-                       private ExportCheckBox(final String id, final IModel 
model) {
-                               super(id, model);
-                       }
-                       
-                       @Override
-                       protected void onUpdate(AjaxRequestTarget target) {
-                               // nothing
-                       }
-               }
-
-               private class ExportResourceProvider implements 
ResourceProvider, Serializable
-               {
-                       private static final long serialVersionUID = 1L;
-
-                       private final String userName;
-                       
-                       private Map<String, Object> settings = new 
HashMap<String, Object>();
-                       private File exportFile = null; 
-                       private String onOpenError = null;
-                       
-                       public ExportResourceProvider(final String userName) {
-                               super();
-                               
-                               this.userName = userName;
-                       }
-                       
-                       public void close() {
-                               try {
-                                       if (this.exportFile != null) {
-                                               this.exportFile.delete();
-                                               this.exportFile = null;
-                                       }
-                               }
-                               catch (Throwable t) {
-                                       t.printStackTrace();
-                               }
-                       }
-
-                       public String getContentType() {
-                               
-                               // make browser open/save dialog appear 
-                               return "application/octet-stream";
-                       }
-
-                       public long getLastModified() {
-                               return (exportFile != null) ? 
exportFile.lastModified() : 0;
-                       }
-
-                       public long getLength() {
-                               return (exportFile != null) ? 
exportFile.length() : 0;
-                       }
-
-                       public String getName() {
-                               return (exportFile != null) ? 
exportFile.getName() : "";
-                       }
-
-                       public InputStream getResource() {
-                               
-                               if (this.onOpenError != null) {
-                                       return new 
ByteArrayInputStream(this.onOpenError.getBytes());
-                               }
-                               
-                               try {
-                                       return new 
FileInputStream(this.exportFile);
-                               }
-                               catch (Throwable t) {
-                                       // FileNotFoundException by 
FileInputStream or any other unexpected condition 
-                                       return new 
ByteArrayInputStream(createMessage("export.message.exception", 
-                                                       new Object[] { 
t.getClass().getName(), t.getMessage() }).getBytes());
-                               }
-                       }
-
-                       public void open() {
-
-                               try {
-                                       final File tempDir = new 
File(System.getProperty("java.io.tmpdir"));
-                                       final File userTempDir = new 
File(tempDir, userName);
-                                       if (!userTempDir.exists()) {
-                                               userTempDir.mkdirs();
-                                       }
-                                       
-                                       exportFile = new File(userTempDir, 
"export.xml");
-       
-                                       
getJetspeedSerializer().exportData("jetspeedadmin_export", 
-                                                       
exportFile.getCanonicalPath(), this.settings);
-                               }
-                               catch (Throwable t) {
-                                       // SerializerException  and IOException 
by exportData()
-                                       // but also SecurityException by 
mkdir() or any other unexpected condition
-                                       this.onOpenError = 
createMessage("export.message.exception", 
-                                                       new Object[] { 
t.getClass().getName(), t.getMessage() });
-                               }
-                       }
-
-                       public void setSettings(Map<String, Object> settings) {
-                               this.settings = settings;
-                       }
-               }
-       }
-
-       private class ImportForm extends Form<Object> {
-
-               private static final long serialVersionUID = 1L;
-
-               private final Map<String, Boolean> settings = new 
HashMap<String, Boolean>();
-               {
-                       settings.put(JetspeedSerializer.KEY_PROCESS_USERS, 
Boolean.TRUE);
-                       
settings.put(JetspeedSerializer.KEY_PROCESS_CAPABILITIES, Boolean.TRUE);
-                       settings.put(JetspeedSerializer.KEY_PROCESS_PROFILER, 
Boolean.TRUE);
-                       
settings.put(JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES, Boolean.TRUE);
-                       
settings.put(JetspeedSerializer.KEY_PROCESS_PORTAL_PREFERENCES, Boolean.TRUE);
-                       settings.put(JetspeedSerializer.KEY_PROCESS_ENTITIES, 
Boolean.TRUE);
-                       settings.put(JetspeedSerializer.KEY_OVERWRITE_EXISTING, 
Boolean.TRUE);
-                       
settings.put(JetspeedSerializer.KEY_BACKUP_BEFORE_PROCESS, Boolean.FALSE);
-               }
-               
-               private String errorMessage;
-               private String infoMessage;
-               private String fileName;
-
-               /* Constructor */
-               private ImportForm(final String id) {
-
-                       super(id);
-
-                       setMultiPart(true);
-
-                       add(new Label("importHeader", new 
ResourceModel("import.header")));
-
-                       add(new FileUploadField("importFile", new 
PropertyModel(this, "fileName")));
-                       add(new Label("importFileLabel", new 
ResourceModel("import.choose.file")));
-
-                       add(new Label("importText", new 
ResourceModel("import.text")));
-                       add(new Button("importAction", new 
ResourceModel("import.action")));
-
-                       add((new Label("importErrorMessage", new 
PropertyModel(this, "errorMessage")) {
-                               @Override
-                               public boolean isVisible() {
-                                       return (errorMessage != null);
-                               }
-                       }).setVisibilityAllowed(true));
-
-                       add((new Label("importInfoMessage", new 
PropertyModel(this, "infoMessage")) {
-                               @Override
-                               public boolean isVisible() {
-                                       return (infoMessage != null);
-                               }
-                       }).setVisibilityAllowed(true));
-               }
-
-               @Override
-               public void onSubmit() {
-
-                       this.clearMessages();
-
-                       File tempDir = new 
File(System.getProperty("java.io.tmpdir"));
-                       File userTempDir = new File(tempDir, 
getPortletRequest().getUserPrincipal().getName());
-
-                       final FileUpload upload = ((FileUploadField) 
this.get("importFile")).getFileUpload();
-
-                       if (upload == null) {
-                               this.errorMessage = 
createMessage("import.message.nofile", null);
-                               return;
-                       }
-
-                       synchronized (this) {
-                               try {
-                                       if (!userTempDir.isDirectory()) {
-                                               userTempDir.mkdirs();
-                                       }
-
-                                       final File importFile = new 
File(userTempDir, upload.getClientFileName());
-                                       this.fileName = 
importFile.getCanonicalPath();
-
-                                       if (importFile.exists()) {
-                                               importFile.delete();
-                                       }
-
-                                       upload.writeTo(importFile);
-                               } 
-                               catch (IOException ioe) {
-                                       this.errorMessage = 
createMessage("import.message.exception", new Object[] {
-                                                                       
upload.getClientFileName(), ioe.getMessage() });
-                               }
-
-                               try {
-                                       
getJetspeedSerializer().importData(this.fileName, this.settings);
-
-                                       this.infoMessage = 
createMessage("import.message.success",
-                                                       new Object[] { 
this.fileName });
-                               } catch (SerializerException se) {
-                                       this.errorMessage = createMessage( 
"import.message.exception",
-                                                       new Object[] { 
upload.getClientFileName(), se.getMessage() });
-                               }
-                       }
-               }
-
-               private void clearMessages() {
-                       this.errorMessage = null;
-                       this.infoMessage = null;
-               }
-       }
-
-       private String createMessage(String resourceKey, Object[] args) {
-
-               String message = getLocalizer().getString(resourceKey, 
(Component) null);
-
-               if (args != null) {
-                       // apply the arguments
-                       final MessageFormat format = new MessageFormat(message, 
getLocale());
-                       message = format.format(args);
-               }
-
-               return message;
-       }
-
-       private JetspeedSerializer getJetspeedSerializer() {
-               return getServiceLocator().getJetspeedSerializer();
-       }
+public class PortalDataSerializer extends AdminPortletWebPage
+{
+    private static final String USERS_GROUPS_ROLES = "usersGroupsRoles";
+
+    private static final String PERMISSIONS = "permissions";
+
+    private static final String PROFILING = "profiling";
+
+    private static final String CAPABILITIES = "capabilities";
+
+    private static final String USER_PREFS = "userPrefs";
+
+    private static final String ENTITIES = "entities";
+
+    public PortalDataSerializer()
+    {
+        super();
+
+        // a first form to export data
+        add(new ExportForm("exportForm"));
+
+        // a second form to import data
+        add(new ImportForm("importForm"));
+    }
+
+    private class ExportForm extends Form<Object>
+    {
+        private static final long serialVersionUID = 0L;
+
+        private final ExportResourceProvider exportResourceProvider;
+
+        private boolean doUserGroupsRoles = true;
+
+        private boolean doPermissions = true;
+
+        private boolean doProfiling = true;
+
+        private boolean doCapabilities = true;
+
+        private boolean doUserPrefs = true;
+
+        private boolean doEntities = true;
+
+        /* Constructor */
+        public ExportForm(final String id)
+        {
+            super(id);
+
+            add(new Label("exportHeader", new ResourceModel("export.header")));
+
+            add(new ExportCheckBox(USERS_GROUPS_ROLES, new 
PropertyModel<Boolean>(this, "doUserGroupsRoles")));
+            add(new Label("usersGroupsRolesLabel", new 
ResourceModel("export.users_groups_roles")));
+
+            add(new ExportCheckBox(PERMISSIONS, new 
PropertyModel<Boolean>(this, "doPermissions")));
+            add(new Label("permissionsLabel", new 
ResourceModel("export.permissions")));
+
+            add(new ExportCheckBox(PROFILING, new PropertyModel<Boolean>(this, 
"doProfiling")));
+            add(new Label("profilingLabel", new 
ResourceModel("export.profiling_rules")));
+
+            add(new ExportCheckBox(CAPABILITIES, new 
PropertyModel<Boolean>(this, "doCapabilities")));
+            add(new Label("capabilitiesLabel", new 
ResourceModel("export.capabilities")));
+
+            add(new ExportCheckBox(USER_PREFS, new 
PropertyModel<Boolean>(this, "doUserPrefs")));
+            add(new Label("userPrefsLabel", new 
ResourceModel("export.user_preferences")));
+
+            add(new ExportCheckBox(ENTITIES, new PropertyModel<Boolean>(this, 
"doEntities")));
+            add(new Label("entitiesLabel", new 
ResourceModel("export.portlet_entities")));
+
+            this.exportResourceProvider = new 
ExportResourceProvider(getPortletRequest().getUserPrincipal().getName());
+
+            DynamicResourceLink downloadLink = new 
DynamicResourceLink("exportLink", new 
PropertyModel<ExportResourceProvider>(this,
+                    "exportResourceProvider"))
+            {
+
+                private static final long serialVersionUID = 0L;
+
+                @Override
+                public void onClick()
+                {
+                    Map<String, Object> settings = new HashMap<String, 
Object>();
+                    settings.put(JetspeedSerializer.KEY_PROCESS_USERS, new 
Boolean(doUserGroupsRoles));
+                    settings.put(JetspeedSerializer.KEY_PROCESS_PERMISSIONS, 
new Boolean(doPermissions));
+                    settings.put(JetspeedSerializer.KEY_PROCESS_PROFILER, new 
Boolean(doProfiling));
+                    settings.put(JetspeedSerializer.KEY_PROCESS_CAPABILITIES, 
new Boolean(doCapabilities));
+                    
settings.put(JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES, new 
Boolean(doUserPrefs));
+                    settings.put(JetspeedSerializer.KEY_PROCESS_ENTITIES, new 
Boolean(doEntities));
+                    settings.put(JetspeedSerializer.KEY_EXPORT_INDENTATION, 
"\t");
+                    settings.put(JetspeedSerializer.KEY_OVERWRITE_EXISTING, 
Boolean.TRUE);
+                    settings.put(JetspeedSerializer.KEY_BACKUP_BEFORE_PROCESS, 
Boolean.FALSE);
+
+                    exportResourceProvider.setSettings(settings);
+                }
+            };
+            downloadLink.add(new Label("exportAction", new 
ResourceModel("export.action")));
+            add(downloadLink);
+        };
+
+        private class ExportCheckBox extends AjaxCheckBox
+        {
+            private static final long serialVersionUID = 1L;
+
+            private ExportCheckBox(final String id, final IModel model)
+            {
+                super(id, model);
+            }
+
+            @Override
+            protected void onUpdate(AjaxRequestTarget target)
+            {
+                // nothing
+            }
+        }
+
+        private class ExportResourceProvider implements ResourceProvider, 
Serializable
+        {
+            private static final long serialVersionUID = 1L;
+
+            private final String userName;
+
+            private Map<String, Object> settings = new HashMap<String, 
Object>();
+
+            private File exportFile = null;
+
+            private String onOpenError = null;
+
+            public ExportResourceProvider(final String userName)
+            {
+                super();
+
+                this.userName = userName;
+            }
+
+            public void close()
+            {
+                try
+                {
+                    if (this.exportFile != null)
+                    {
+                        this.exportFile.delete();
+                        this.exportFile = null;
+                    }
+                }
+                catch (Throwable t)
+                {
+                    t.printStackTrace();
+                }
+            }
+
+            public String getContentType()
+            {
+
+                // make browser open/save dialog appear
+                return "application/octet-stream";
+            }
+
+            public long getLastModified()
+            {
+                return (exportFile != null) ? exportFile.lastModified() : 0;
+            }
+
+            public long getLength()
+            {
+                return (exportFile != null) ? exportFile.length() : 0;
+            }
+
+            public String getName()
+            {
+                return (exportFile != null) ? exportFile.getName() : "";
+            }
+
+            public InputStream getResource()
+            {
+
+                if (this.onOpenError != null) { return new 
ByteArrayInputStream(this.onOpenError.getBytes()); }
+
+                try
+                {
+                    return new FileInputStream(this.exportFile);
+                }
+                catch (Throwable t)
+                {
+                    // FileNotFoundException by FileInputStream or any other
+                    // unexpected condition
+                    return new 
ByteArrayInputStream(createMessage("export.message.exception", new Object[]
+                    { t.getClass().getName(), t.getMessage()}).getBytes());
+                }
+            }
+
+            public void open()
+            {
+
+                try
+                {
+                    final File tempDir = new 
File(System.getProperty("java.io.tmpdir"));
+                    final File userTempDir = new File(tempDir, userName);
+                    if (!userTempDir.exists())
+                    {
+                        userTempDir.mkdirs();
+                    }
+
+                    exportFile = new File(userTempDir, "export.xml");
+
+                    getJetspeedSerializer().exportData("jetspeedadmin_export", 
exportFile.getCanonicalPath(), this.settings);
+                }
+                catch (Throwable t)
+                {
+                    // SerializerException and IOException by exportData()
+                    // but also SecurityException by mkdir() or any other
+                    // unexpected condition
+                    this.onOpenError = 
createMessage("export.message.exception", new Object[]
+                    { t.getClass().getName(), t.getMessage()});
+                }
+            }
+
+            public void setSettings(Map<String, Object> settings)
+            {
+                this.settings = settings;
+            }
+        }
+    }
+
+    private class ImportForm extends Form<Object>
+    {
+        private static final long serialVersionUID = 1L;
+
+        private final Map<String, Boolean> settings = new HashMap<String, 
Boolean>();
+        {
+            settings.put(JetspeedSerializer.KEY_PROCESS_USERS, Boolean.TRUE);
+            settings.put(JetspeedSerializer.KEY_PROCESS_CAPABILITIES, 
Boolean.TRUE);
+            settings.put(JetspeedSerializer.KEY_PROCESS_PROFILER, 
Boolean.TRUE);
+            settings.put(JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES, 
Boolean.TRUE);
+            settings.put(JetspeedSerializer.KEY_PROCESS_PORTAL_PREFERENCES, 
Boolean.TRUE);
+            settings.put(JetspeedSerializer.KEY_PROCESS_ENTITIES, 
Boolean.TRUE);
+            settings.put(JetspeedSerializer.KEY_OVERWRITE_EXISTING, 
Boolean.TRUE);
+            settings.put(JetspeedSerializer.KEY_BACKUP_BEFORE_PROCESS, 
Boolean.FALSE);
+        }
+
+        private String errorMessage;
+
+        private String infoMessage;
+
+        private String fileName;
+
+        /* Constructor */
+        private ImportForm(final String id)
+        {
+
+            super(id);
+
+            setMultiPart(true);
+
+            add(new Label("importHeader", new ResourceModel("import.header")));
+
+            add(new FileUploadField("importFile", new PropertyModel(this, 
"fileName")));
+            add(new Label("importFileLabel", new 
ResourceModel("import.choose.file")));
+
+            add(new Label("importText", new ResourceModel("import.text")));
+            add(new Button("importAction", new 
ResourceModel("import.action")));
+
+            add((new Label("importErrorMessage", new PropertyModel(this, 
"errorMessage"))
+            {
+
+                @Override
+                public boolean isVisible()
+                {
+                    return (errorMessage != null);
+                }
+            }).setVisibilityAllowed(true));
+
+            add((new Label("importInfoMessage", new PropertyModel(this, 
"infoMessage"))
+            {
+
+                @Override
+                public boolean isVisible()
+                {
+                    return (infoMessage != null);
+                }
+            }).setVisibilityAllowed(true));
+        }
+
+        @Override
+        public void onSubmit()
+        {
+            this.clearMessages();
+
+            File tempDir = new File(System.getProperty("java.io.tmpdir"));
+            File userTempDir = new File(tempDir, 
getPortletRequest().getUserPrincipal().getName());
+
+            final FileUpload upload = ((FileUploadField) 
this.get("importFile")).getFileUpload();
+
+            if (upload == null)
+            {
+                this.errorMessage = createMessage("import.message.nofile", 
null);
+                return;
+            }
+
+            synchronized (this)
+            {
+                try
+                {
+                    if (!userTempDir.isDirectory())
+                    {
+                        userTempDir.mkdirs();
+                    }
+
+                    final File importFile = new File(userTempDir, 
upload.getClientFileName());
+                    this.fileName = importFile.getCanonicalPath();
+
+                    if (importFile.exists())
+                    {
+                        importFile.delete();
+                    }
+
+                    upload.writeTo(importFile);
+                }
+                catch (IOException ioe)
+                {
+                    this.errorMessage = 
createMessage("import.message.exception", new Object[]
+                    { upload.getClientFileName(), ioe.getMessage()});
+                }
+
+                try
+                {
+                    getJetspeedSerializer().importData(this.fileName, 
this.settings);
+
+                    this.infoMessage = createMessage("import.message.success", 
new Object[]
+                    { this.fileName});
+                }
+                catch (SerializerException se)
+                {
+                    this.errorMessage = 
createMessage("import.message.exception", new Object[]
+                    { upload.getClientFileName(), se.getMessage()});
+                }
+            }
+        }
+
+        private void clearMessages()
+        {
+            this.errorMessage = null;
+            this.infoMessage = null;
+        }
+    }
+
+    private String createMessage(String resourceKey, Object[] args)
+    {
+        String message = getLocalizer().getString(resourceKey, (Component) 
null);
+
+        if (args != null)
+        {
+            // apply the arguments
+            final MessageFormat format = new MessageFormat(message, 
getLocale());
+            message = format.format(args);
+        }
+
+        return message;
+    }
+
+    private JetspeedSerializer getJetspeedSerializer()
+    {
+        return getServiceLocator().getJetspeedSerializer();
+    }
 }
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to