📄 findservice.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 + -