blob: 891ff4f4844b1b213ae10120fd704f8b1f661c41 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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.uddi.actions;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Hashtable;
import java.util.Properties;
import java.util.Vector;
import org.eclipse.wst.ws.internal.explorer.platform.constants.ActionInputs;
import org.eclipse.wst.ws.internal.explorer.platform.constants.ModelConstants;
import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller;
import org.eclipse.wst.ws.internal.explorer.platform.perspective.FormTool;
import org.eclipse.wst.ws.internal.explorer.platform.perspective.MessageQueue;
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.perspective.ToolManager;
import org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.UDDIActionInputs;
import org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.UDDIModelConstants;
import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.CategoryModel;
import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.RegistryElement;
import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.UDDIMainElement;
import org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.UDDIMainNode;
import org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.UDDIPerspective;
import org.eclipse.wst.ws.internal.explorer.platform.util.MultipartFormDataException;
import org.eclipse.wst.ws.internal.explorer.platform.util.MultipartFormDataParser;
import org.eclipse.wst.ws.internal.explorer.platform.util.Validator;
import org.uddi4j.UDDIException;
import org.uddi4j.client.UDDIProxy;
import org.uddi4j.datatype.tmodel.TModel;
import org.uddi4j.response.TModelDetail;
import org.uddi4j.response.TModelInfo;
import org.uddi4j.response.TModelInfos;
import org.uddi4j.response.TModelList;
import org.uddi4j.transport.TransportException;
import org.uddi4j.util.CategoryBag;
import org.uddi4j.util.KeyedReference;
public class OpenRegistryAction extends UDDIPropertiesFormAction
{
public OpenRegistryAction(Controller controller)
{
super(controller);
// Select UDDI Main.
}
protected final boolean processParsedResults(MultipartFormDataParser parser) throws MultipartFormDataException
{
String registryName = parser.getParameter(UDDIActionInputs.REGISTRY_NAME);
String inquiryURL = parser.getParameter(UDDIActionInputs.INQUIRY_URL);
String publishURL = parser.getParameter(UDDIActionInputs.PUBLISH_URL);
String username = parser.getParameter(UDDIActionInputs.UDDI_USERNAME);
String password = parser.getParameter(UDDIActionInputs.UDDI_PASSWORD);
String checkUserDefinedCategoriesChecked = parser.getParameter(UDDIActionInputs.CHECK_USER_DEFINED_CATEGORIES);
String categoriesDirectory = parser.getParameter(UDDIActionInputs.CATEGORIES_DIRECTORY);
// Validate the data.
boolean inputsValid = true;
UDDIPerspective uddiPerspective = controller_.getUDDIPerspective();
MessageQueue messageQueue = uddiPerspective.getMessageQueue();
FormTool formTool = getSelectedFormTool();
if (registryName != null)
propertyTable_.put(UDDIActionInputs.REGISTRY_NAME,registryName);
if (!Validator.validateString(registryName))
{
inputsValid = false;
formTool.flagError(UDDIActionInputs.REGISTRY_NAME);
messageQueue.addMessage(uddiPerspective.getMessage("MSG_ERROR_INVALID_REGISTRY_NAME"));
}
if (inquiryURL != null)
propertyTable_.put(UDDIActionInputs.INQUIRY_URL,inquiryURL);
if (!Validator.validateURL(inquiryURL))
{
inputsValid = false;
formTool.flagError(UDDIActionInputs.INQUIRY_URL);
messageQueue.addMessage(uddiPerspective.getMessage("MSG_ERROR_INVALID_INQUIRY_URL"));
}
if (publishURL != null)
propertyTable_.put(UDDIActionInputs.PUBLISH_URL, publishURL);
if (username != null)
propertyTable_.put(UDDIActionInputs.UDDI_USERNAME, username);
if (password != null)
propertyTable_.put(UDDIActionInputs.UDDI_PASSWORD, password);
if (checkUserDefinedCategoriesChecked != null)
propertyTable_.put(UDDIActionInputs.CHECK_USER_DEFINED_CATEGORIES,checkUserDefinedCategoriesChecked);
else
removeProperty(UDDIActionInputs.CHECK_USER_DEFINED_CATEGORIES);
if (categoriesDirectory != null)
propertyTable_.put(UDDIActionInputs.CATEGORIES_DIRECTORY,categoriesDirectory);
else
removeProperty(UDDIActionInputs.CATEGORIES_DIRECTORY);
formTool.updatePropertyTable(propertyTable_);
return inputsValid;
}
public final void gatherWSUserDefinedCategories(UDDIProxy proxy,Hashtable categoryModels)
{
try
{
CategoryBag categoryBag = new CategoryBag();
categoryBag.add(new KeyedReference("","categorization",TModel.TYPES_TMODEL_KEY));
TModelList tModelList = proxy.find_tModel("%",categoryBag,null,null,100);
TModelInfos tModelInfos = tModelList.getTModelInfos();
Vector tModelKeyVector = new Vector();
for (int i=0;i<tModelInfos.size();i++)
{
TModelInfo tModelInfo = tModelInfos.get(i);
tModelKeyVector.addElement(tModelInfo.getTModelKey());
}
TModelDetail tModelDetail = proxy.get_tModelDetail(tModelKeyVector);
Vector tModelVector = tModelDetail.getTModelVector();
for (int i=0;i<tModelVector.size();i++)
{
TModel tModel = (TModel)tModelVector.elementAt(i);
boolean checked = false;
String displayName = null;
String categoryKey = null;
categoryBag = tModel.getCategoryBag();
for (int j=0;j<categoryBag.size();j++)
{
KeyedReference kr = categoryBag.get(j);
String krTModelKey = kr.getTModelKey();
if (krTModelKey.equalsIgnoreCase(TModel.GENERAL_KEYWORDS_TMODEL_KEY))
{
String krKeyName = kr.getKeyName();
if (krKeyName.equals("urn:x-ibm:uddi:customTaxonomy:key"))
categoryKey = kr.getKeyValue();
else if (krKeyName.equals("urn:x-ibm:uddi:customTaxonomy:displayName"))
displayName = kr.getKeyValue();
}
else if (krTModelKey.equalsIgnoreCase(TModel.TYPES_TMODEL_KEY))
checked = kr.getKeyValue().equals("checked");
}
if (categoryKey != null)
{
if (displayName == null)
displayName = tModel.getNameString();
CategoryModel categoryModel = new CategoryModel();
categoryModel.setCategoryKey(categoryKey);
categoryModel.enableChecked(checked);
categoryModel.setDisplayName(displayName);
String tModelKey = tModel.getTModelKey();
categoryModel.setTModelKey(tModelKey);
categoryModels.put(tModelKey,categoryModel);
}
}
}
catch (UDDIException e)
{
}
catch (TransportException e)
{
}
}
public final boolean run()
{
UDDIPerspective uddiPerspective = controller_.getUDDIPerspective();
MessageQueue messageQueue = uddiPerspective.getMessageQueue();
try
{
String registryName = (String)propertyTable_.get(UDDIActionInputs.REGISTRY_NAME);
String inquiryURL = (String)propertyTable_.get(UDDIActionInputs.INQUIRY_URL);
String publishURL = (String)propertyTable_.get(UDDIActionInputs.PUBLISH_URL);
String registrationURL = (String)propertyTable_.get(UDDIActionInputs.REGISTRATION_URL);
String username = (String)propertyTable_.get(UDDIActionInputs.UDDI_USERNAME);
String password = (String)propertyTable_.get(UDDIActionInputs.UDDI_PASSWORD);
boolean checkForUserDefinedCategoriesChecked = (propertyTable_.get(UDDIActionInputs.CHECK_USER_DEFINED_CATEGORIES) != null);
String categoriesDirectory = (String)propertyTable_.get(UDDIActionInputs.CATEGORIES_DIRECTORY);
String recognizedPublishURL = uddiPerspective.getKnownRegistryPublishURL(inquiryURL);
String recognizedRegistrationURL = uddiPerspective.getKnownRegistryRegistrationURL(inquiryURL);
if (publishURL == null)
publishURL = recognizedPublishURL;
if (registrationURL == null)
registrationURL = recognizedRegistrationURL;
UDDIMainNode uddiMainNode = (UDDIMainNode)(controller_.getUDDIPerspective().getNavigatorManager().getRootNode());
UDDIMainElement uddiMainElement = (UDDIMainElement)uddiMainNode.getTreeElement();
Properties props = new Properties();
props.put(ActionInputs.TRANSPORT_CLASS_NAME, ActionInputs.TRASPORT_CLASS);
UDDIProxy proxy = new UDDIProxy(props);
proxy.setInquiryURL(new URL(inquiryURL));
RegistryElement registryElement = new RegistryElement(proxy,inquiryURL,registryName,uddiMainElement.getModel());
// Set registry element's publish URL and registration URL provided by external callers (e.g. favorites).
if (publishURL != null)
registryElement.setCachedPublishURL(publishURL);
if (registrationURL != null)
registryElement.setRegistrationURL(registrationURL);
if (username != null)
registryElement.setUserId(username);
if (password != null)
registryElement.setCred(password);
registryElement.setCheckForUserDefinedCategories(checkForUserDefinedCategoriesChecked);
if (checkForUserDefinedCategoriesChecked)
{
Hashtable categoryModels = new Hashtable();
gatherWSUserDefinedCategories(proxy,categoryModels);
if (categoryModels.size() > 0)
registryElement.setUserDefinedCategories(categoryModels);
else
messageQueue.addMessage(uddiPerspective.getMessage("MSG_INFO_NO_USER_DEFINED_CATEGORIES_FOUND"));
}
registryElement.setCategoriesDirectory(categoriesDirectory);
uddiMainElement.connect(registryElement,UDDIModelConstants.REL_REGISTRIES,ModelConstants.REL_OWNER);
NodeManager nodeManager = uddiMainNode.getNodeManager();
int newRegistryNodeId = uddiMainNode.getChildNode(registryElement).getNodeId();
// Select the new registry node and add the select action to the history.
nodeManager.setSelectedNodeId(newRegistryNodeId);
Node registryNode = nodeManager.getSelectedNode();
ToolManager toolManager = registryNode.getCurrentToolManager();
addToHistory(ActionInputs.PERSPECTIVE_UDDI,toolManager.getSelectedTool().getSelectToolActionHref(true));
messageQueue.addMessage(uddiPerspective.getMessage("MSG_INFO_REGISTRY_OPENED",new String[]{registryName,inquiryURL}));
return true;
}
catch (MalformedURLException e)
{
messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED"));
messageQueue.addMessage("MalformedURLException");
messageQueue.addMessage(e.getMessage());
FormTool formTool = getSelectedFormTool();
formTool.flagError(UDDIActionInputs.INQUIRY_URL);
}
/*
catch (FormInputException e)
{
messageQueue.addMessage(e.getMessage());
}
*/
return false;
}
}