diff options
Diffstat (limited to 'core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/ShowPublisherAssertionsAction.java')
-rw-r--r-- | core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/ShowPublisherAssertionsAction.java | 425 |
1 files changed, 425 insertions, 0 deletions
diff --git a/core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/ShowPublisherAssertionsAction.java b/core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/ShowPublisherAssertionsAction.java new file mode 100644 index 000000000..aab8643c5 --- /dev/null +++ b/core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/ShowPublisherAssertionsAction.java @@ -0,0 +1,425 @@ +/******************************************************************************* + * Copyright (c) 2001, 2005 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.util.Vector; +import org.eclipse.wst.ws.internal.explorer.platform.datamodel.ListElement; +import org.eclipse.wst.ws.internal.explorer.platform.datamodel.ListManager; +import org.eclipse.wst.ws.internal.explorer.platform.datamodel.TreeElement; +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.FormToolPropertiesInterface; +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.uddi.constants.UDDIActionInputs; +import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.BusinessElement; +import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.PublisherAssertionElement; +import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.RegistryElement; +import org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.MultipleFormToolPropertiesInterface; +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.business.BusinessEntity; +import org.uddi4j.response.AssertionStatusItem; +import org.uddi4j.response.AssertionStatusReport; +import org.uddi4j.response.CompletionStatus; +import org.uddi4j.response.DispositionReport; +import org.uddi4j.response.RelatedBusinessInfo; +import org.uddi4j.response.RelatedBusinessesList; +import org.uddi4j.response.Result; +import org.uddi4j.response.SharedRelationships; +import org.uddi4j.transport.TransportException; +import org.uddi4j.util.FindQualifiers; +import org.uddi4j.util.KeyedReference; + +public class ShowPublisherAssertionsAction extends CommonPublisherAssertionsAction +{ + + protected String subQueryKey_; + protected boolean isSubQueryGet_; + protected boolean subQueryInitiated_; + protected String newSubQuery_; + protected String newSubQueryItem_; + + public ShowPublisherAssertionsAction(Controller controller) + { + super(controller); + + subQueryKey_ = null; + isSubQueryGet_ = false; + subQueryInitiated_ = false; + } + + protected final boolean processParsedResults(MultipartFormDataParser parser) throws MultipartFormDataException + { + if (registryNode_ == null) + return false; + + // ids from uddiObjects_table + String[] selectedBusIds = parser.getParameterValues(UDDIActionInputs.PUBLISHER_ASSERTIONS_SELECTED_BUS_ID); + if (selectedBusIds != null && selectedBusIds.length > 0) + propertyTable_.put(UDDIActionInputs.PUBLISHER_ASSERTIONS_SELECTED_BUS_ID, selectedBusIds); + + newSubQuery_ = parser.getParameter(UDDIActionInputs.NEW_SUBQUERY_INITIATED); + String isSubQueryGetString = parser.getParameter(UDDIActionInputs.SUBQUERY_GET); + newSubQueryItem_ = parser.getParameter(UDDIActionInputs.NEW_SUBQUERY_QUERY_ITEM); + subQueryKey_ = parser.getParameter(UDDIActionInputs.SUBQUERY_KEY); + + // Validate the data. + controller_.getUDDIPerspective(); + FormTool formTool = getSelectedFormTool(); + FormToolPropertiesInterface formToolPI = ((MultipleFormToolPropertiesInterface)formTool).getFormToolProperties(subQueryKey_); + formToolPI.clearErrors(); + + if (newSubQuery_ != null && newSubQuery_.length() > 0) + subQueryInitiated_ = true; + else + subQueryInitiated_ = false; + + if (isSubQueryGetString != null) + isSubQueryGet_ = Boolean.valueOf(isSubQueryGetString).booleanValue(); + + // if not yet logged in, validate the parameters needed to log in + // NOTE: This action does NOT require the user to be logged in. + if (!isLoggedIn_) { + String publishURL = parser.getParameter(UDDIActionInputs.QUERY_INPUT_ADVANCED_PUBLISH_URL); + String userID = parser.getParameter(UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID); + String password = parser.getParameter(UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD); + + if (publishURL != null) + { + propertyTable_.put(UDDIActionInputs.QUERY_INPUT_ADVANCED_PUBLISH_URL,publishURL); + formTool.setProperty(UDDIActionInputs.QUERY_INPUT_ADVANCED_PUBLISH_URL,publishURL); + } + + if (userID != null) + { + propertyTable_.put(UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID,userID); + formTool.setProperty(UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID,userID); + } + + if (password != null) + { + propertyTable_.put(UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD,password); + formTool.setProperty(UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD,password); + } + } + + return true; + } + + public final boolean isSubQueryInitiated() + { + return subQueryInitiated_; + } + + public final boolean isSubQueryGet() + { + return isSubQueryGet_; + } + + public final String getSubQueryKey() + { + return subQueryKey_; + } + + public final String getNewSubQuery() + { + return newSubQuery_; + } + + public final String getNewSubQueryItem() + { + return newSubQueryItem_; + } + + public boolean run() + { + // Synchronize client view and server model (uddiObject_table.jsp) + synchronizeUDDIObjectTable(); + + if (registryNode_ == null) + return false; + + RegistryElement registryElement = (RegistryElement)registryNode_.getTreeElement(); + UDDIPerspective uddiPerspective = controller_.getUDDIPerspective(); + MessageQueue messageQueue = uddiPerspective.getMessageQueue(); + NodeManager navigatorManager = uddiPerspective.getNavigatorManager(); + Node selectedNode = navigatorManager.getSelectedNode(); + TreeElement selectedElement = selectedNode.getTreeElement(); + + if (!(selectedElement instanceof BusinessElement)) + return false; + + // if not yet logged in, log in first + if (!isLoggedIn_) { + String publishURL = (String)propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_PUBLISH_URL); + String userID = (String)propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID); + String password = (String)propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD); + + try { + if (Validator.validateURL(publishURL) && + Validator.validateString(userID) && + password != null) { + registryElement.performLogin(publishURL, userID, password); + isLoggedIn_ = registryElement.isLoggedIn(); + } + } + catch (TransportException te) { + messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED")); + messageQueue.addMessage("TransportException"); + messageQueue.addMessage(te.getMessage()); + return false; + } + catch (UDDIException uddie) { + messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED")); + messageQueue.addMessage("UDDIException"); + messageQueue.addMessage(uddie.toString()); + return false; + } + catch (MalformedURLException me) { + messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED")); + messageQueue.addMessage("MalformedURLException"); + messageQueue.addMessage(me.getMessage()); + return false; + } + } + + // show all assertion iff is logged in and business is owned + // else show only completed ones + BusinessElement busElement = (BusinessElement)selectedElement; + if (isLoggedIn_ && isBusinessOwned(busElement)) + return showPublisherAssertionsForOwnedBus(busElement); + else + return showPublisherAssertionsForNonOwnedBus(busElement); + } + + private boolean showPublisherAssertionsForOwnedBus(BusinessElement busElement) { + UDDIPerspective uddiPerspective = controller_.getUDDIPerspective(); + MessageQueue messageQueue = uddiPerspective.getMessageQueue(); + + // try to get a list of all publisher assertion based on the current registry's authToken + ListManager listManager = new ListManager(); + FormTool formTool = getSelectedFormTool(); + FormToolPropertiesInterface formToolPI = ((MultipleFormToolPropertiesInterface)formTool).getFormToolProperties(subQueryKey_); + formToolPI.removeProperty(UDDIActionInputs.QUERY_INPUT_EXISTING_PUBLISHER_ASSERTIONS); + Vector queryInputVector = new Vector(); + RegistryElement registryElement = (RegistryElement)registryNode_.getTreeElement(); + registryElement.getUserId(); + registryElement.getCred(); + + // show all publisher assertions + UDDIProxy proxy = ((RegistryElement)registryNode_.getTreeElement()).getProxy(); + AssertionStatusReport assertionReport; + try { + assertionReport = proxy.get_assertionStatusReport(registryElement.getAuthInfoString(), (CompletionStatus)null); + } + catch (UDDIException uddie) { + messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED")); + messageQueue.addMessage("UDDIException"); + DispositionReport report = uddie.getDispositionReport(); + Vector reportErrInfo = report.getResultVector(); + for (int i = 0; i < reportErrInfo.size(); i++) { + messageQueue.addMessage(((Result) reportErrInfo.get(i)).getErrInfo().getText()); + } + return false; + } + catch (Exception e) { + messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED")); + messageQueue.addMessage("Exception"); + messageQueue.addMessage(e.getMessage()); + return false; + } + Vector assertionVector = assertionReport.getAssertionStatusItemVector(); + Vector otherBusinessKeys = new Vector(); + Vector pubAssertionElements = new Vector(); + + for (int i = 0; i < assertionVector.size(); i++) { + AssertionStatusItem assertionItem = (AssertionStatusItem)assertionVector.elementAt(i); + // determine the from/to business keys + String fromKey = assertionItem.getFromKey().getText(); + String toKey = assertionItem.getToKey().getText(); + String owningBusinessKey = busElement.getBusinessEntity().getBusinessKey(); + // ignore this assertion if neither the from key nor the to key equals to this business's key + if (!owningBusinessKey.equals(fromKey) && !owningBusinessKey.equals(toKey)) + continue; + String otherBusinessKey = ((owningBusinessKey.equals(fromKey)) ? toKey : fromKey); + // retrieve the information of the "other business" + otherBusinessKeys.add(otherBusinessKey); + + // retrieve the status of the publisher assertion + String status = assertionItem.getCompletionStatus().getText(); + KeyedReference keyedRef = assertionItem.getKeyedReference(); + PublisherAssertionElement pubAssertionElement = new PublisherAssertionElement( + fromKey, + toKey, + owningBusinessKey, + null, + -1, + status, + keyedRef); + pubAssertionElements.add(pubAssertionElement); + } + if (otherBusinessKeys.size() > 0) { + Vector busEntities; + try { + busEntities = proxy.get_businessDetail(otherBusinessKeys).getBusinessEntityVector(); + } + catch (Exception ex) { + busEntities = new Vector(); + if (otherBusinessKeys.size() > 1) { + for (int j = 0; j < otherBusinessKeys.size(); j++) { + try { + busEntities.add(proxy.get_businessDetail((String)otherBusinessKeys.get(j)).getBusinessEntityVector().get(0)); + } + catch (Exception exception) { + pubAssertionElements.remove(j); + } + } + } + else + pubAssertionElements.remove(0); + } + for (int j = 0; j < busEntities.size(); j++) { + BusinessEntity be = (BusinessEntity)busEntities.get(j); + PublisherAssertionElement pubAssertionElement = (PublisherAssertionElement)pubAssertionElements.get(j); + ListElement le = new ListElement(be); + queryInputVector.add(le); + int subQueryItemId = queryInputVector.indexOf(le); + pubAssertionElement.setServiceProvider(le); + pubAssertionElement.setSubQueryItemId(subQueryItemId); + listManager.add(new ListElement(pubAssertionElement)); + } + } + busElement.setPublisherAssertions(listManager); + formToolPI.setProperty(UDDIActionInputs.QUERY_INPUT_EXISTING_PUBLISHER_ASSERTIONS, queryInputVector); + messageQueue.addMessage(uddiPerspective.getMessage("MSG_INFO_PUBLISHER_ASSERTIONS_REFRESHED")); + return true; + } + + private boolean showPublisherAssertionsForNonOwnedBus(BusinessElement busElement) { + UDDIPerspective uddiPerspective = controller_.getUDDIPerspective(); + MessageQueue messageQueue = uddiPerspective.getMessageQueue(); + + // try to get a list of publisher assertions based on the business key + ListManager listManager = new ListManager(); + FormTool formTool = getSelectedFormTool(); + FormToolPropertiesInterface formToolPI = ((MultipleFormToolPropertiesInterface)formTool).getFormToolProperties(subQueryKey_); + formToolPI.removeProperty(UDDIActionInputs.QUERY_INPUT_EXISTING_PUBLISHER_ASSERTIONS); + Vector queryInputVector = new Vector(); + UDDIProxy proxy = ((RegistryElement)registryNode_.getTreeElement()).getProxy(); + RelatedBusinessesList relatedBusList; + try { + relatedBusList = proxy.find_relatedBusinesses(busElement.getBusinessEntity().getBusinessKey(), + (KeyedReference)null, + (FindQualifiers)null); + } + catch (UDDIException uddie) { + messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED")); + messageQueue.addMessage("UDDIException"); + DispositionReport report = uddie.getDispositionReport(); + Vector reportErrInfo = report.getResultVector(); + for (int i = 0; i < reportErrInfo.size(); i++) { + messageQueue.addMessage(((Result) reportErrInfo.get(i)).getErrInfo().getText()); + } + return false; + } + catch (Exception e) { + messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED")); + messageQueue.addMessage("Exception"); + messageQueue.addMessage(e.getMessage()); + return false; + } + Vector relatedBusVector = relatedBusList.getRelatedBusinessInfos().getRelatedBusinessInfoVector(); + Vector otherBusinessKeys = new Vector(); + Vector pubAssertionElements = new Vector(); + for (int i = 0; i < relatedBusVector.size(); i++) { + RelatedBusinessInfo relatedBusInfo = (RelatedBusinessInfo)relatedBusVector.elementAt(i); + // determine the from/to business keys + String fromKey; + String toKey; + String owningBusinessKey; + if (relatedBusInfo.getDefaultSharedRelationships().getDirection().equals(SharedRelationships.DIRECTION_FROMKEY)) { + fromKey = busElement.getBusinessEntity().getBusinessKey(); + toKey = relatedBusInfo.getBusinessKey(); + owningBusinessKey = fromKey; + otherBusinessKeys.add(toKey); + } + else { + fromKey = relatedBusInfo.getBusinessKey(); + toKey = busElement.getBusinessEntity().getBusinessKey(); + owningBusinessKey = toKey; + otherBusinessKeys.add(fromKey); + } + + Vector keyedRefVector = relatedBusInfo.getDefaultSharedRelationships().getKeyedReferenceVector(); + PublisherAssertionElement[] pubAssertionElementArray = new PublisherAssertionElement[keyedRefVector.size()]; + for (int k = 0; k < keyedRefVector.size(); k++) { + // retrieve the status of the publisher assertion + String status = CompletionStatus.COMPLETE; + KeyedReference keyedRef = (KeyedReference)keyedRefVector.elementAt(k); + PublisherAssertionElement pubAssertionElement = new PublisherAssertionElement( + fromKey, + toKey, + owningBusinessKey, + null, + -1, + status, + keyedRef); + pubAssertionElementArray[k] = pubAssertionElement; + } + pubAssertionElements.add(pubAssertionElementArray); + } + if (otherBusinessKeys.size() > 0) { + Vector busEntities; + try { + busEntities = proxy.get_businessDetail(otherBusinessKeys).getBusinessEntityVector(); + } + catch (Exception ex) { + busEntities = new Vector(); + if (otherBusinessKeys.size() > 1) { + for (int j = 0; j < otherBusinessKeys.size(); j++) { + try { + busEntities.add(proxy.get_businessDetail((String)otherBusinessKeys.get(j)).getBusinessEntityVector().get(0)); + } + catch (Exception exception) { + pubAssertionElements.remove(j); + } + } + } + else + pubAssertionElements.remove(0); + } + for (int j = 0; j < busEntities.size(); j++) { + BusinessEntity be = (BusinessEntity)busEntities.get(j); + ListElement le = new ListElement(be); + queryInputVector.add(le); + int subQueryItemId = queryInputVector.indexOf(le); + PublisherAssertionElement[] pubAssertionElementArray = (PublisherAssertionElement[])pubAssertionElements.get(j); + for (int k = 0; k < pubAssertionElementArray.length; k++) { + pubAssertionElementArray[k].setServiceProvider(le); + pubAssertionElementArray[k].setSubQueryItemId(subQueryItemId); + listManager.add(new ListElement(pubAssertionElementArray[k])); + } + } + } + busElement.setPublisherAssertions(listManager); + formToolPI.setProperty(UDDIActionInputs.QUERY_INPUT_EXISTING_PUBLISHER_ASSERTIONS, queryInputVector); + messageQueue.addMessage(uddiPerspective.getMessage("MSG_INFO_PUBLISHER_ASSERTIONS_REFRESHED")); + return true; + } +} |