⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findservice.java

📁 OpenWeb-UDDI是UDDI V2标准的实现
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   FindService.java

package org.huihoo.openweb.uddiserver.inquiry;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Enumeration;
import java.util.Vector;
import org.huihoo.openweb.uddi.*;

public class FindService
{

    Connection con;
    Find_Service findServiceDoc;

    public FindService(Find_Service findServiceDoc, Connection c)
    {
        this.findServiceDoc = findServiceDoc;
        con = c;
    }

    public UddiObject getData()
        throws SQLException, IOException, UDDIXmlException, ClassNotFoundException
    {
        String str = "";
        Enumeration servicenames = findServiceDoc.getServiceName();
        int count;
        for(count = 0; servicenames.hasMoreElements(); count++)
        {
            String name = ((UddiObject)servicenames.nextElement()).getValue();
            if(name.length() > 46)
            {
                Result result = Result.getResult(10020, "partial name value passed exceeds the maximum name length of the name field as specified in the UDDI data structure reference.");
                return errorOccured(result);
            }
        }

        if(count > 5)
        {
            Result result = Result.getResult(10030, " The limit of 5 name arguments was exceeded ");
            return errorOccured(result);
        }
        FindQualifiers qualifiers = findServiceDoc.getQualifiers();
        if(qualifiers != null)
        {
            Enumeration qualifier = qualifiers.getQualifier();
            boolean value = CheckQualifiers.check(qualifier);
            if(!value)
            {
                Result result = Result.getResult(10050, "The findQualifier value " + CheckQualifiers.qualifiervalue + " was invalid ");
                return errorOccured(result);
            }
        }
        String busKey = findServiceDoc.getBusinessKey();
        Enumeration enum = findServiceDoc.getServiceName();
        CategoryBag categorybag = findServiceDoc.getCategoryBag();
        TModelBag tmodelbag = findServiceDoc.getTModelBag();
        if(busKey == null && enum == null && categorybag == null && tmodelbag == null)
        {
            Result result = Result.getResult(10050, "E_unsupported (10050) Feature or API not supported. No search criteria was specified in the message");
            return errorOccured(result);
        }
        String Names = "";
        String serv_names = "";
        Vector names = new Vector();
        while(enum.hasMoreElements()) 
        {
            Object object = enum.nextElement();
            Statement stmt10 = con.createStatement();
            for(ResultSet rs10 = stmt10.executeQuery("select * from BusinessService where servicename like '" + ((UddiObject)object).getValue() + "%' and businesskey='" + busKey + "'"); rs10.next();)
                if(serv_names.length() > 0)
                    serv_names = serv_names + "," + "'" + rs10.getString("servicekey") + "'";
                else
                    serv_names = "'" + rs10.getString("servicekey") + "'";

            names.addElement(object);
            if(Names.length() > 0)
                Names = Names + "," + "'" + ((UddiObject)object).getValue() + "'";
            else
                Names = "'" + ((UddiObject)object).getValue() + "'";
        }
        if(Names.length() == 0)
        {
            String query5 = "select servicekey from BusinessService where businesskey ='" + busKey + "'";
            Statement stmt5 = con.createStatement();
            for(ResultSet rs5 = stmt5.executeQuery(query5); rs5.next();)
                if(serv_names.length() > 0)
                    serv_names = serv_names + "," + "'" + rs5.getString("servicekey") + "'";
                else
                    serv_names = "'" + rs5.getString("servicekey") + "'";

        }
        String servkey_catbag = "";
        if(categorybag != null)
        {
            for(Enumeration keyedref = categorybag.getKeyedReference(); keyedref.hasMoreElements();)
            {
                int check = 0;
                KeyedReference kr = (KeyedReference)keyedref.nextElement();
                String keyname = kr.getKeyName();
                String keyvalue = kr.getKeyValue();
                org.huihoo.openweb.uddi.TModelKey key = kr.getTModelKey();
                String tmodelkey = key.getValue();
                String query  ="";
                	//"select keys from CategoryBag where keyname='" + keyname + "' and  keyvalue='" + keyvalue + "' and tmodelkey='" + tmodelkey + "'";
                System.out.println("keyname: "+keyname+" keyvalue: "+keyvalue);
                if(keyname==null && keyvalue==null){
                	query = "select keys from CategoryBag where tmodelkey='" + tmodelkey + "'";
                	System.out.println(query);
                }else{//2005.11.29 sky 修改,只根据tmodelkey查找
                	query = "select keys from CategoryBag where keyname='" + keyname + "' and  keyvalue='" + keyvalue + "' and tmodelkey='" + tmodelkey + "'";
                	System.out.println(query);
                }
                Statement stmt = con.createStatement();
                for(ResultSet rs = stmt.executeQuery(query); rs.next();)
                {
                    if(servkey_catbag.length() > 0)
                        servkey_catbag = servkey_catbag + "," + "'" + rs.getString("keys") + "'";
                    else
                        servkey_catbag = "'" + rs.getString("keys") + "'";
                    check++;
                }

                if(check == 0)
                {
                    servkey_catbag = "";
                    break;
                }
            }

        }
        String servkeys_modelbag = "";
        if(tmodelbag != null)
        {
            for(Enumeration enumer = tmodelbag.getTModelKey(); enumer.hasMoreElements();)
            {
                String tmodelkey = ((UddiObject)enumer.nextElement()).getValue();
                String query1 = "select * from InstanceDetails where tmodelkey='" + tmodelkey + "'";
                Statement stmt1 = con.createStatement();
                for(ResultSet rs1 = stmt1.executeQuery(query1); rs1.next();)
                {
                    String bindingkey = rs1.getString("bindingkey");
                    String query2 = " select servicekey from BindingTemplate where bindingkey='" + bindingkey + "'";
                    Statement stmt2 = con.createStatement();
                    for(ResultSet rs2 = stmt2.executeQuery(query2); rs2.next();)
                    {
                        String servicekey = rs2.getString("servicekey");
                        if(servkeys_modelbag.length() > 0)
                            servkeys_modelbag = servkeys_modelbag + "," + "'" + servicekey + "'";
                        else
                            servkeys_modelbag = "'" + servicekey + "'";
                    }

                }

            }

        }
        String keys_from_categorybag_tmodelbag = "";
        if(servkey_catbag.length() > 0)
            keys_from_categorybag_tmodelbag = keys_from_categorybag_tmodelbag + servkey_catbag;
        if(servkeys_modelbag.length() > 0 && keys_from_categorybag_tmodelbag.length() > 0)
            keys_from_categorybag_tmodelbag = keys_from_categorybag_tmodelbag + "," + servkeys_modelbag;
        else
            keys_from_categorybag_tmodelbag = keys_from_categorybag_tmodelbag + servkeys_modelbag;
        String maxrowsstr = findServiceDoc.getMaxRows();
        int maxrowsallowed = 0;
        if(maxrowsstr != null)
            maxrowsallowed = Integer.parseInt(maxrowsstr);
        String list = "<serviceList generic=\"1.0\" xmlns=\"urn:uddi-org:api\" operator=\"www.huihoo.com\" ></serviceList>";
        ByteArrayInputStream bas = new ByteArrayInputStream(list.getBytes());
        ServiceList servicelist = new ServiceList(bas);
        servicelist.setTruncated("false");
        ServiceInfos serviceinfos = new ServiceInfos();
        String query = "";
        if(serv_names.length() > 0 && keys_from_categorybag_tmodelbag.length() > 0)
            query = "select * from BusinessService where servicekey in (" + serv_names + ")  or servicekey in (" + keys_from_categorybag_tmodelbag + ")";
        if(serv_names.length() > 0 && keys_from_categorybag_tmodelbag.length() == 0)
            query = "select * from BusinessService where servicekey in (" + serv_names + ")";
        if(serv_names.length() == 0 && keys_from_categorybag_tmodelbag.length() > 0){
            query = "select * from BusinessService where servicekey in (" + keys_from_categorybag_tmodelbag + ")";
            System.out.println("findservice by category");
        }
        if(serv_names.length() == 0 && keys_from_categorybag_tmodelbag.length() == 0){
        	System.out.println("no service and category");
        	return servicelist;
        }
        Statement stm = con.createStatement();
        ResultSet rs = stm.executeQuery(query);
        int resultsetcount = 0;
        while(rs.next()) 
        {
            String servicekey = rs.getString("servicekey");
            String businesskey = rs.getString("businesskey");
            ServiceInfo serviceinfo = new ServiceInfo(businesskey, servicekey);
            String servname = rs.getString("servicename");
            UddiObject obj = new UddiObject("name");
            obj.setValue(servname);
            serviceinfo.addElement(obj);
            serviceinfos.addElement(serviceinfo);
            resultsetcount++;
            if(maxrowsallowed != 0 && resultsetcount > maxrowsallowed)
            {
                servicelist.setTruncated("true");
                break;
            }
        }
        servicelist.addElement(serviceinfos);
        return servicelist;
    }

    public UddiObject errorOccured(Result result)
    {
        DispositionReport pr = new DispositionReport();
        pr.setResult(result);
        return pr;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -