KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > networkplaces > NetworkPlacePlugin


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sslexplorer.networkplaces;
21
22 import javax.servlet.http.HttpServletRequest JavaDoc;
23
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26 import org.apache.commons.vfs.FileSystemException;
27 import org.apache.commons.vfs.VFS;
28 import org.apache.commons.vfs.impl.StandardFileSystemManager;
29 import org.apache.commons.vfs.provider.bzip2.Bzip2FileProvider;
30 import org.apache.commons.vfs.provider.gzip.GzipFileProvider;
31 import org.apache.commons.vfs.provider.jar.JarFileProvider;
32 import org.apache.commons.vfs.provider.tar.TarFileProvider;
33 import org.apache.commons.vfs.provider.tar.Tbz2FileProvider;
34 import org.apache.commons.vfs.provider.tar.TgzFileProvider;
35 import org.apache.commons.vfs.provider.temp.TemporaryFileProvider;
36 import org.apache.commons.vfs.provider.zip.ZipFileProvider;
37
38 import com.sslexplorer.agent.DefaultAgentManager;
39 import com.sslexplorer.boot.ContextHolder;
40 import com.sslexplorer.boot.Util;
41 import com.sslexplorer.core.CoreMenuTree;
42 import com.sslexplorer.core.CoreServlet;
43 import com.sslexplorer.core.CoreUtil;
44 import com.sslexplorer.core.MenuItem;
45 import com.sslexplorer.core.PageTaskMenuTree;
46 import com.sslexplorer.extensions.ExtensionException;
47 import com.sslexplorer.extensions.types.DefaultPlugin;
48 import com.sslexplorer.navigation.MenuTree;
49 import com.sslexplorer.navigation.NavigationManager;
50 import com.sslexplorer.networkplaces.forms.FileSystemForm;
51 import com.sslexplorer.networkplaces.itemactions.FavoriteOpenWebFolderAction;
52 import com.sslexplorer.networkplaces.itemactions.OpenWebFolderAction;
53 import com.sslexplorer.networkplaces.store.cifs.CIFSProvider;
54 import com.sslexplorer.networkplaces.store.cifs.CIFSStore;
55 import com.sslexplorer.networkplaces.store.file.FileProvider;
56 import com.sslexplorer.networkplaces.store.file.FileStore;
57 import com.sslexplorer.networkplaces.store.ftp.FTPProvider;
58 import com.sslexplorer.networkplaces.store.ftp.FTPStore;
59 import com.sslexplorer.networkplaces.store.jar.JarProvider;
60 import com.sslexplorer.networkplaces.store.jar.JarStore;
61 import com.sslexplorer.networkplaces.store.tar.TarProvider;
62 import com.sslexplorer.networkplaces.store.tar.TarStore;
63 import com.sslexplorer.networkplaces.store.webdav.WebDAVStore;
64 import com.sslexplorer.networkplaces.store.zip.ZipProvider;
65 import com.sslexplorer.networkplaces.store.zip.ZipStore;
66 import com.sslexplorer.policyframework.Permission;
67 import com.sslexplorer.policyframework.PolicyConstants;
68 import com.sslexplorer.policyframework.PolicyDatabase;
69 import com.sslexplorer.policyframework.PolicyDatabaseFactory;
70 import com.sslexplorer.policyframework.PolicyUtil;
71 import com.sslexplorer.policyframework.ResourceType;
72 import com.sslexplorer.policyframework.itemactions.AddToFavoritesAction;
73 import com.sslexplorer.policyframework.itemactions.CloneResourceAction;
74 import com.sslexplorer.policyframework.itemactions.EditResourceAction;
75 import com.sslexplorer.policyframework.itemactions.RemoveFromFavoritesAction;
76 import com.sslexplorer.policyframework.itemactions.RemoveResourceAction;
77 import com.sslexplorer.security.SessionInfo;
78 import com.sslexplorer.table.TableItemActionMenuTree;
79 import com.sslexplorer.vfs.VFSProviderManager;
80 import com.sslexplorer.vfs.utils.UploadHandlerFactory;
81
82 /**
83  * Plugin implementation thats the <i>Network Places</i> feature.
84  *
85  * @author Brett Smith <a HREF="mailto: brett@3sp.com">&lt;brett@3sp.com&gt;</a>
86  */

87 public class NetworkPlacePlugin extends DefaultPlugin {
88
89     /**
90      * Network place resource type ID
91      */

92     public final static int NETWORK_PLACE_RESOURCE_TYPE_ID = 2;
93
94     /**
95      * Network place resource type
96      */

97     public final static ResourceType NETWORK_PLACE_RESOURCE_TYPE = new NetworkPlaceResourceType();
98
99     /**
100      * Extension bundle ID
101      */

102     public static final String JavaDoc BUNDLE_ID = "sslexplorer-community-network-places";
103
104     final static Log log = LogFactory.getLog(NetworkPlacePlugin.class);
105
106     /**
107      * Message resources key (resource bundle id)
108      */

109     public static final String JavaDoc MESSAGE_RESOURCES_KEY = "networkPlaces";
110
111     /**
112      * Constructor.
113      */

114     public NetworkPlacePlugin() {
115         super("/WEB-INF/sslexplorer-community-network-places-tiles-defs.xml", true);
116     }
117
118     /*
119      * (non-Javadoc)
120      *
121      * @see com.sslexplorer.plugin.DefaultPlugin#startPlugin()
122      */

123     public void activatePlugin() throws ExtensionException {
124         super.activatePlugin();
125         try {
126             initDatabase();
127             initPolicyFramework();
128             initTableItemActions();
129             initMainMenu();
130             initPageTasks();
131             initFileSystems();
132             initUploadHandler();
133             initTagLib();
134             initService();
135             CoreUtil.updateEventsTable(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY, NetworkPlacesEventConstants.class);
136         } catch (Exception JavaDoc e) {
137             throw new ExtensionException(ExtensionException.INTERNAL_ERROR, e, "Failed to start.");
138         }
139     }
140
141     void initDatabase() throws Exception JavaDoc {
142         NetworkPlaceDatabaseFactory.getInstance().open(CoreServlet.getServlet(), this.getPluginDefinition());
143     }
144
145     void initPolicyFramework() throws Exception JavaDoc {
146
147         PolicyDatabase pdb = PolicyDatabaseFactory.getInstance();
148
149         // Network Place
150
pdb.registerResourceType(NETWORK_PLACE_RESOURCE_TYPE);
151         NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN);
152         NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_EDIT_AND_ASSIGN);
153         NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_DELETE);
154         NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_ASSIGN);
155     }
156
157     void initService() throws InstantiationException JavaDoc, IllegalAccessException JavaDoc {
158         DefaultAgentManager.getInstance().registerService(NetworkPlaceService.class);
159     }
160
161     void initTableItemActions() throws Exception JavaDoc {
162         MenuTree tree = NavigationManager.getMenuTree(TableItemActionMenuTree.MENU_TABLE_ITEM_ACTION_MENU_TREE);
163         tree.addMenuItem("favorites", new FavoriteOpenWebFolderAction());
164
165         // Network Places
166
tree.addMenuItem(null, new MenuItem("networkPlace",
167                         NetworkPlacePlugin.MESSAGE_RESOURCES_KEY,
168                         null,
169                         100,
170                         false,
171                         SessionInfo.ALL_CONTEXTS));
172         tree.addMenuItem("networkPlace", new AddToFavoritesAction(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY));
173         tree.addMenuItem("networkPlace", new RemoveFromFavoritesAction(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY));
174         tree.addMenuItem("networkPlace", new RemoveResourceAction(SessionInfo.MANAGEMENT_CONSOLE_CONTEXT,
175                         NetworkPlacePlugin.MESSAGE_RESOURCES_KEY));
176         tree.addMenuItem("networkPlace", new EditResourceAction(SessionInfo.MANAGEMENT_CONSOLE_CONTEXT,
177                         NetworkPlacePlugin.MESSAGE_RESOURCES_KEY));
178         tree.addMenuItem("networkPlace", new CloneResourceAction(SessionInfo.MANAGEMENT_CONSOLE_CONTEXT,
179             NetworkPlacePlugin.MESSAGE_RESOURCES_KEY));
180         tree.addMenuItem("networkPlace", new OpenWebFolderAction(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY));
181     }
182
183     void initMainMenu() throws Exception JavaDoc {
184         MenuTree tree = NavigationManager.getMenuTree(CoreMenuTree.MENU_ITEM_MENU_TREE);
185
186         tree.addMenuItem("resources", new MenuItem("userNetworkPlaces",
187                 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY,
188                         "/showUserNetworkPlaces.do",
189                         500,
190                         true,
191                         null,
192                         SessionInfo.USER_CONSOLE_CONTEXT,
193                         null,
194                         null,
195                         NETWORK_PLACE_RESOURCE_TYPE));
196         tree.addMenuItem("globalResources", new MenuItem("networkPlaces",
197                 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY,
198                         "/showNetworkPlaces.do",
199                         200,
200                         true,
201                         null,
202                         SessionInfo.MANAGEMENT_CONSOLE_CONTEXT,
203                         NETWORK_PLACE_RESOURCE_TYPE,
204                         new Permission[] { PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN,
205                             PolicyConstants.PERM_EDIT_AND_ASSIGN,
206                             PolicyConstants.PERM_DELETE,
207                             PolicyConstants.PERM_ASSIGN },
208                         null) {
209             public boolean isAvailable(int checkNavigationContext, SessionInfo info, HttpServletRequest JavaDoc request) {
210                 boolean available = super.isAvailable(checkNavigationContext, info, request);
211                 if (available) {
212                     try {
213                         PolicyUtil.checkPermissions(NETWORK_PLACE_RESOURCE_TYPE,
214                             new Permission[] { PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN,
215                                 PolicyConstants.PERM_EDIT_AND_ASSIGN,
216                                 PolicyConstants.PERM_DELETE,
217                                 PolicyConstants.PERM_ASSIGN },
218                             request);
219                         available = true;
220                     } catch (Exception JavaDoc e1) {
221                         available = false;
222                     }
223                 }
224                 return available;
225             }
226         });
227     }
228
229     void initPageTasks() throws Exception JavaDoc {
230         MenuTree tree = NavigationManager.getMenuTree(PageTaskMenuTree.PAGE_TASK_MENU_TREE);
231
232         // Networking showNetworkPlaces
233
tree.addMenuItem(null, new MenuItem("showNetworkPlaces", null, null, 100, false, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT));
234         tree.addMenuItem("showNetworkPlaces", new MenuItem("createNetworkPlace",
235                         NetworkPlacePlugin.MESSAGE_RESOURCES_KEY,
236                         "/defaultNetworkPlaceDetails.do",
237                         100,
238                         true,
239                         "_self",
240                         SessionInfo.MANAGEMENT_CONSOLE_CONTEXT,
241                         NETWORK_PLACE_RESOURCE_TYPE,
242                         new Permission[] { PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN }));
243
244