Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUDDIRegistryFolderElement.java')
-rw-r--r--bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUDDIRegistryFolderElement.java193
1 files changed, 193 insertions, 0 deletions
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUDDIRegistryFolderElement.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUDDIRegistryFolderElement.java
new file mode 100644
index 000000000..bae3db071
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUDDIRegistryFolderElement.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.ws.internal.explorer.platform.favorites.datamodel;
+
+import java.io.File;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+import org.apache.wsil.Link;
+import org.eclipse.wst.ws.internal.datamodel.Model;
+import org.eclipse.wst.ws.internal.explorer.platform.constants.ModelConstants;
+import org.eclipse.wst.ws.internal.explorer.platform.datamodel.TreeElement;
+import org.eclipse.wst.ws.internal.explorer.platform.favorites.constants.FavoritesModelConstants;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.Node;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.NodeManager;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.CategoryModel;
+import org.eclipse.wst.ws.internal.explorer.platform.util.URLUtils;
+
+/**
+* The data model element that represents
+* a WSIL document
+*/
+public class FavoritesUDDIRegistryFolderElement extends FavoritesFolderElement
+{
+ public FavoritesUDDIRegistryFolderElement(String name, Model model, NodeManager nodeManager) {
+ super(name, model, nodeManager);
+ }
+
+ public void init(FavoritesMainElement favMainElement) {
+ Link[] links = favMainElement.loadUDDIRegistries();
+ for (int i = 0; i < links.length; i++) {
+ Link link = links[i];
+ FavoritesUDDIRegistryElement favUDDIRegsitryElement = new FavoritesUDDIRegistryElement((link.getAbstracts())[0].getText(), getModel(), link);
+ connect(favUDDIRegsitryElement, FavoritesModelConstants.REL_UDDI_REGISTRY_NODE, ModelConstants.REL_OWNER);
+ }
+ }
+
+ public boolean addFavorite(Hashtable table) {
+ String registryName = (String)table.get(FavoritesModelConstants.PROP_UDDI_REGISTRY_NAME);
+ String inquiryAPI = (String)table.get(FavoritesModelConstants.PROP_UDDI_REGISTRY_INQUIRY_API);
+ String publishAPI = (String)table.get(FavoritesModelConstants.PROP_UDDI_REGISTRY_PUBLISH_API);
+ String registrationURL = (String)table.get(FavoritesModelConstants.PROP_UDDI_REGISTRY_REGISTRATION_URL);
+ Enumeration userDefinedCategories = (Enumeration)table.get(FavoritesModelConstants.PROP_UDDI_REGISTRY_CATEGORIES_ENUM);
+ // Save the category data first and undo if necessary.
+ if (userDefinedCategories != null)
+ {
+ String pluginMetadataDirectory = (String)table.get(FavoritesModelConstants.PROP_PLUGIN_METADATA_DIRECTORY);
+ StringBuffer directoryBuffer = new StringBuffer();
+ formCategoriesDirectory(directoryBuffer,pluginMetadataDirectory,registryName);
+ File categoriesDirectoryFile = new File(directoryBuffer.toString());
+ categoriesDirectoryFile.mkdirs();
+ StringBuffer categoryFileName = new StringBuffer();
+ while (userDefinedCategories.hasMoreElements())
+ {
+ CategoryModel categoryModel = (CategoryModel)userDefinedCategories.nextElement();
+ categoryFileName.setLength(0);
+ String encodedCategoryKey = URLUtils.encode(categoryModel.getCategoryKey());
+ categoryFileName.append(categoriesDirectoryFile.getAbsolutePath()).append(File.separatorChar).append(encodedCategoryKey).append(".txt");
+ byte rc = categoryModel.saveData(categoryFileName.toString());
+ if (rc != CategoryModel.OPERATION_SUCCESSFUL)
+ {
+ // Delete the category file if it exists.
+ File categoryFile = new File(categoryFileName.toString());
+ if (categoryFile.exists())
+ categoryFile.delete();
+ }
+ }
+ cleanupCategoryDirectories(categoriesDirectoryFile);
+ }
+ if (registryName == null || inquiryAPI == null || publishAPI == null)
+ return false;
+ FavoritesUDDIRegistryElement e = getFavorite(registryName);
+ if (e != null)
+ removeFavorite(e);
+ FavoritesMainElement favMainElement = getFavoritesMainElement();
+ Link link = favMainElement.addUDDIRegistry(registryName, inquiryAPI, publishAPI, registrationURL);
+ boolean saved = favMainElement.saveFavorites();
+ if (saved) {
+ FavoritesUDDIRegistryElement favUDDIRegsitryElement = new FavoritesUDDIRegistryElement(registryName, getModel(), link);
+ connect(favUDDIRegsitryElement, FavoritesModelConstants.REL_UDDI_REGISTRY_NODE, ModelConstants.REL_OWNER);
+ }
+ return saved;
+ }
+
+ public static final void formCategoriesDirectory(StringBuffer categoriesDirectory,String pluginMetadataDirectory,String registryName)
+ {
+ // <metadata>/uddi/<registryId>/categories
+ String encodedRegistryName = URLUtils.encode(registryName);
+ categoriesDirectory.append(pluginMetadataDirectory).append("uddi").append(File.separatorChar).append(encodedRegistryName).append(File.separatorChar).append("categories");
+ }
+
+ private final void clearRegistryMetadata(String pluginMetadataDirectory,String registryName)
+ {
+ StringBuffer categoriesDirectory = new StringBuffer();
+ formCategoriesDirectory(categoriesDirectory,pluginMetadataDirectory,registryName);
+ File categoriesDirectoryFile = new File(categoriesDirectory.toString());
+ File[] categoryFiles = categoriesDirectoryFile.listFiles();
+ if (categoryFiles != null)
+ {
+ for (int i=0;i<categoryFiles.length;i++)
+ categoryFiles[i].delete();
+ }
+ cleanupCategoryDirectories(categoriesDirectoryFile);
+ }
+
+ private final void cleanupCategoryDirectories(File categoriesDirectoryFile)
+ {
+ // Delete the categories subdirectory if it is empty.
+ String[] fileList;
+ fileList = categoriesDirectoryFile.list();
+ if (fileList == null || fileList.length == 0)
+ categoriesDirectoryFile.delete();
+ // Delete the <registryId> subdirectory if it is empty.
+ File registryIdDirectoryFile = categoriesDirectoryFile.getParentFile();
+ fileList = registryIdDirectoryFile.list();
+ if (fileList == null || fileList.length == 0)
+ registryIdDirectoryFile.delete();
+ // Delete the uddi subdirectory if it is empty.
+ File uddiDirectoryFile = registryIdDirectoryFile.getParentFile();
+ fileList = uddiDirectoryFile.list();
+ if (fileList == null || fileList.length == 0)
+ uddiDirectoryFile.delete();
+ }
+
+ public boolean favoriteExists(Hashtable table) {
+ String registryName = (String)table.get(FavoritesModelConstants.PROP_UDDI_REGISTRY_NAME);
+ if (registryName == null)
+ return false;
+ return (getFavorite(registryName) != null);
+ }
+
+ public boolean removeFavoriteByNodeID(int nodeID,String pluginMetadataDirectory) {
+ Node selectedNode = nodeManager_.getNode(nodeID);
+ TreeElement selectedElement = selectedNode.getTreeElement();
+ FavoritesMainElement favMainElement = getFavoritesMainElement();
+ if (selectedElement instanceof FavoritesUDDIRegistryElement)
+ {
+ clearRegistryMetadata(pluginMetadataDirectory,selectedElement.getName());
+ boolean rc = removeFavorite((FavoritesUDDIRegistryElement)selectedElement);
+ rc = rc && favMainElement.saveFavorites();
+ return rc;
+ }
+ else
+ return false;
+ }
+
+ private boolean removeFavorite(FavoritesUDDIRegistryElement element) {
+ Link link = ((FavoritesUDDIRegistryElement)element).getLink();
+ FavoritesMainElement favMainElement = getFavoritesMainElement();
+ if (favMainElement.removeLink(link)) {
+ element.disconnectAll();
+ return true;
+ }
+ else
+ return false;
+ }
+
+ public boolean removeAllFavorites(String pluginMetadataDirectory) {
+ FavoritesMainElement favMainElement = getFavoritesMainElement();
+ Enumeration e = getAllFavorites();
+ while(e.hasMoreElements()) {
+ FavoritesUDDIRegistryElement favUDDIRegistryElement = (FavoritesUDDIRegistryElement)e.nextElement();
+ clearRegistryMetadata(pluginMetadataDirectory,favUDDIRegistryElement.getName());
+ Link link = favUDDIRegistryElement.getLink();
+ favMainElement.removeLink(link);
+ }
+ disconnectRel(FavoritesModelConstants.REL_UDDI_REGISTRY_NODE);
+ return favMainElement.saveFavorites();
+ }
+
+ public Enumeration getAllFavorites() {
+ return getElements(FavoritesModelConstants.REL_UDDI_REGISTRY_NODE);
+ }
+
+ private FavoritesUDDIRegistryElement getFavorite(String registryName) {
+ Enumeration e = getAllFavorites();
+ while (e.hasMoreElements()) {
+ FavoritesUDDIRegistryElement regElement = (FavoritesUDDIRegistryElement)e.nextElement();
+ if (registryName.equals(regElement.getName()))
+ return regElement;
+ }
+ return null;
+ }
+}

Back to the top