You are on page 1of 15

APPENDIX B

Source Code

Java Code:
File name: Trust_book.java
Function Performed:
 Discovery of services corresponding to the functional requirement using UDDI4J
API’S
 Evaluation of Trust level for each discovered service according to Fuzzy
Cognitive Approach.
 Calculation of number of time of usage for each service by logged in user and
other user
Code:
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Properties;
import java.util.Vector;
import org.uddi4j.datatype.tmodel.TModel;
import org.uddi4j.UDDIException;
import org.uddi4j.client.UDDIProxy;
import org.uddi4j.datatype.Name;
import org.uddi4j.response.BusinessInfo;
import org.uddi4j.response.ServiceInfo;
import org.uddi4j.response.BusinessInfos;
import org.uddi4j.response.BusinessList;
import org.uddi4j.response.ServiceList;
import org.uddi4j.response.DispositionReport;
import org.uddi4j.response.Result;
import org.uddi4j.util.FindQualifier;
import org.uddi4j.util.FindQualifiers;
import org.uddi4j.response.TModelDetail;
import org.uddi4j.response.TModelInfo;
import org.uddi4j.response.TModelList;
import org.uddi4j.util.TModelBag;
import java.util.Properties;
import org.uddi4j.transport.TransportFactory;
import org.uddi4j.datatype.binding.TModelInstanceDetails;
import org.uddi4j.datatype.binding.TModelInstanceInfo;
import org.uddi4j.datatype.binding.AccessPoint;
import org.uddi4j.datatype.binding.BindingTemplate;
import org.uddi4j.response.BindingDetail;
import java.util.ArrayList;
public class Trust_book extends HttpServlet
{ static Connection con=null;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{ String DRIVER = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/trust";
String user ="root";
String pwd ="root";
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String n=(String)session.getAttribute("name");
String uuid=(String)session.getAttribute("uuid");
ArrayList TrustList = new ArrayList();
try {
Class.forName(DRIVER); //driver is loaded
con = DriverManager.getConnection(URL,user,pwd);
Properties config =null;
config = Configurator.load();
UDDIProxy proxy = new UDDIProxy();
proxy.setInquiryURL(config.getProperty("inquiryURL"));
proxy.setPublishURL(config.getProperty("publishURL"));
Vector names = new Vector();
names.add(new Name("b"));
FindQualifiers findQualifiers = new FindQualifiers();
Vector qualifier = new Vector();
qualifier.add(new FindQualifier("caseSensitiveMatch"));
findQualifiers.setFindQualifierVector(qualifier);
String stream=request.getParameter("category");
TModelList tModelList = proxy.find_tModel(stream, null, null,null,5);
Vector tModelInfoVector = tModelList.getTModelInfos().getTModelInfoVector();
TModelInfo tModelInfo = (TModelInfo)tModelInfoVector.elementAt(0);
System.out.println("The TModel Name: " + tModelInfo.getNameString());
String tmodelKey = tModelInfo.getTModelKey();
System.out.println("The TModel Key : " + tmodelKey);
TModelBag tModelBag = new TModelBag();
Vector tModelKeyVector = new Vector();
tModelKeyVector.add(tmodelKey);
tModelBag.setTModelKeyStrings(tModelKeyVector);
BusinessList businessList = proxy.find_business(null, null, null, null, tModelBag,
findQualifiers, 5);
Vector businessInfoVector =
businessList.getBusinessInfos().getBusinessInfoVector();
for( int i = 0; i < businessInfoVector.size(); i++ )
BusinessInfo businessInfo = (BusinessInfo)businessInfoVector.elementAt(i);
ServiceList serv_list=proxy.find_service(null, tModelBag, findQualifiers, 10);
Vector serviceinfoVector=serv_list.getServiceInfos().getServiceInfoVector();
ArrayList Serv_name=new ArrayList();
ArrayList ap=new ArrayList();
for( int i = 0; i < serviceinfoVector.size(); i++ )
{ ServiceInfo serviceInfo = (ServiceInfo)serviceinfoVector.elementAt(i);
String sn=(String)serviceInfo.getDefaultNameString();
String sk=serviceInfo.getServiceKey();
System.out.print(serviceInfo.getDefaultNameString()+" \t");
BindingDetail bindingDetailReturned = proxy.find_binding(null, sk, null, 10);
Vector bindingTemplatesFound =
bindingDetailReturned.getBindingTemplateVector();
BindingTemplate bindingTemplateFound = (BindingTemplate)
(bindingTemplatesFound.elementAt(0));
String bk=(String)bindingTemplateFound.getBindingKey();
String a_pnt=bindingTemplateFound.getAccessPoint().getText();
Serv_name.add(sn);
ap.add(a_pnt);
}

//Calculate count
System.out.println(1);
String sname[]=new String[Serv_name.size()];
String uTimes[]=new String[sname.length];
String oTimes[]=new String[sname.length];
System.out.println(2);
for (int i=0;i<sname.length;i++)
{
System.out.println(3);
sname[i]=(String)Serv_name.get(i);
String qry="select count from UserServiceLog where uuid='"+uuid+"'
and ServiceName='"+sname[i]+"'" ;
PreparedStatement pst=con.prepareStatement(qry);
ResultSet rs=pst.executeQuery();
if(rs.next())
uTimes[i]=rs.getString("count");
//System.out.println(rs.getString("count"));
rs.close();
pst.close();
System.out.println(4);
String qry1="select sum(count) from UserServiceLog where uuid != '
"+uuid+"' and ServiceName= '"+sname[i]+"'" ;
PreparedStatement pst1=con.prepareStatement(qry1);
System.out.println(5);
ResultSet rs1=pst1.executeQuery();
System.out.println(6);
if(rs1.next())
{System.out.println(7);
oTimes[i]=rs1.getString("sum(count)");
System.out.println(8);
//System.out.println(rs.getString("sum(count)"));
}
rs1.close();
pst1.close();
System.out.println(5);
}

ArrayList UT=new ArrayList();


ArrayList OT=new ArrayList();
for(int i=0;i<uTimes.length;i++)
{
UT.add(uTimes[i]);
OT.add(oTimes[i]);
}
for (int i=0;i<Serv_name.size();i++)
{
String serviceName = (String)Serv_name.get(i);
double trustLevel= fuzzyTrust(uuid,serviceName);
TrustList.add(trustLevel);
System.out.println(serviceName+":"+trustLevel);
}
request.setAttribute("name",n);
request.setAttribute("Serv_name",Serv_name);
request.setAttribute("ap",ap);
request.setAttribute("category",stream);
request.setAttribute("userTimes",UT);
request.setAttribute("otherTimes",OT);
request.setAttribute("TrustList",TrustList);

request.getRequestDispatcher("/project/ShowTrust.jsp").forward(request,response);
}
// Handle possible errors
catch( UDDIException E )
{
DispositionReport dr = E.getDispositionReport();
if( dr!=null )
{
System.out.println("UDDIException faultCode:" + E.getFaultCode() +

"\n operator:" + dr.getOperator() +

"\n generic:" + dr.getGeneric() );


Vector results = dr.getResultVector();
for( int i=0; i<results.size(); i++ )
{
Result r = (Result)results.elementAt(i);
System.out.println("\n errno:" + r.getErrno() );
if( r.getErrInfo()!=null )
{
System.out.println("\n errCode:" +
r.getErrInfo().getErrCode() + "\n errInfoText:" +
r.getErrInfo().getText());
}
}
}
E.printStackTrace();
}
catch (ClassNotFoundException z)
{
out.println("driver not found");
}
catch (SQLException z)
{
z.printStackTrace();
}

catch( Exception E )
{
E.printStackTrace();
}
finally{
try{
if (con!=null && con.isClosed())
con.close();
}
catch (SQLException z)
{
z.printStackTrace();
}
}
}
public static double fuzzyTrust(String uuid,String service)
{
/* these influence values are taken from user's influence repository*/
double QoC_influence=0,
QoE_influence=0,
availability_Influence=0,
competence_Influence=0,
promptness_Influence=0,
cost_Influence=0;

/* these are the trust parameter feedbacks taken from feedback repository*/
double QoE_availability=0,
QoE_competence=0,
QoE_promptness=0,
QoE_cost=0;

/*these are the averages of the feedback*/


double QoC_availability=0,
QoC_competence=0,
QoC_promptness=0,
QoC_cost=0;

/* intialize all trust parameter's levels to 0 */


double trust_level=0;
double availability_level=0;
double competence_level=0;
double promptness_level=0;
double cost_level=0;

//con=getConnection();
//Statement statement=null;
try
{
PreparedStatement pst=con.prepareStatement("select
cost,availablity,competance,promptness,qoe,qoc from influence where
uuid=?");
pst.setString(1,uuid);
ResultSet rs=pst.executeQuery();
if(rs.next())
{
promptness_Influence=rs.getDouble("promptness");
cost_Influence=rs.getDouble("cost");
availability_Influence=rs.getDouble("availablity");
competence_Influence=rs.getDouble("competance");
QoC_influence=rs.getDouble("qoc");
QoE_influence=rs.getDouble("qoe");
}
PreparedStatement pst2=con.prepareStatement("select
cost,availablity,promtness,competance from feedback where uuid=?
and SeriveName=?");
pst2.setString(1,uuid);
pst2.setString(2,service);
ResultSet rs2=pst2.executeQuery();
if(rs2.next())
{
QoE_promptness=rs2.getDouble("promtness");
QoE_cost=rs2.getDouble("cost");
QoE_availability=rs2.getDouble("availablity");
QoE_competence=rs2.getDouble("competance");
}
PreparedStatement pst3=con.prepareStatement("select
avg(availablity)\"avga\",avg(competance)\"avgcom\",avg(promtness)\"
avgp\",avg(cost)\"avgc\" from feedback where not uuid=? and
SeriveName=?");
pst3.setString(1,uuid);
pst3.setString(2,service);
ResultSet rs3=pst3.executeQuery();
if(rs3.next())
{
QoC_promptness=rs3.getDouble("avgp");
QoC_cost=rs3.getDouble("avgc");
QoC_availability=rs3.getDouble("avga");
QoC_competence=rs3.getDouble("avgcom");
}
System.out.println("QoE_availability:"+QoE_availability+"
QoE_competence:"+QoE_competence+"
QoE_promptness:"+QoE_promptness+"
+QoE_cost:"+QoE_cost+"\n");
System.out.println("QoC_availability:"+QoC_availability+"
QoC_competence:"+QoC_competence+"
QoC_promptness:"+QoC_promptness+"
+QoC_cost:"+QoC_cost+"\n\n");
availability_level=evaluateInfluence(QoC_availability,QoE_availabilit
y,QoC_influence,QoE_influence,availability_level);

System.out.println("availability_level:"+availability_level+"\n.................................................
.......\n");

competence_level=evaluateInfluence(QoC_competence,QoE_competence,QoC_influence,Q
oE_influence,competence_level);

System.out.println("competence_level:"+competence_level+"\n...............................................
.........\n");

promptness_level=evaluateInfluence(QoC_promptness,QoE_promptness,QoC_influence,Qo
E_influence,promptness_level);

System.out.println("promptness_level:"+promptness_level+"\n................................................
........\n");

cost_level=evaluateInfluence(QoC_cost,QoE_cost,QoC_influence,QoE_influence,cost_level
);

System.out.println("cost_level:"+cost_level+"\n........................................................\n");

trust_level=evaluateTrustLevel(availability_level,competence_level,promptness_level,cost_l
evel,availability_Influence,competence_Influence,promptness_Influence,cost_Influence);

System.out.println(trust_level+"\n........................................................\n");
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if (con!=null && con.isClosed())
con.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return trust_level;
}
public static double evaluateInfluence(double QoC_param,double
QoE_param, double QoC_influence, double QoE_influence, double old_level)
{
int counter=0;
int max_loop=100;
double new_level=old_level;
do
{
old_level=new_level;
new_level=(
(
(old_level+(QoE_param-old_level)*(QoE_influence/100))
+ (old_level+(QoC_param-old_level)*(QoC_influence/100))
)/2
);
if(new_level<0)
{
new_level=0;
}
counter++;
System.out.println(counter+" new_level:"+new_level+"
old_level:"+old_level);
}while(counter < max_loop && new_level!=old_level);
return new_level;
}
public static double evaluateTrustLevel(double availability_level,double
competence_level,double promptness_level,double cost_level,double
availability_Influence,double competence_Influence,double
promptness_Influence,double cost_Influence)
{
int counter=0;
int max_loop=100;
double new_level=0,old_level=0;
do
{
old_level=new_level;
new_level=(
(
(old_level+(availability_level-old_level)*(availability_Influence/100))
+(old_level+(competence_level-old_level)*(competence_Influence/100))
+(old_level+(promptness_level-old_level)*(promptness_Influence/100))
+(old_level+(cost_level-old_level)*(cost_Influence/100)))/4);
if(new_level<0)
{
//System.out.println("\n***********new_level="+new_level+"
****************\n");
new_level=0;
}
counter++;
System.out.println(counter+" new_level:"+new_level+"
old_level:"+old_level);
}while(counter < max_loop && new_level!=old_level);
return new_level;
}
}
class Configurator {
public static Properties load() {
Properties config = new Properties();
try {
config.load(new java.io.FileInputStream("samples.prop"));
} catch (Exception e) {
System.out.println("Error loading samples property file\n" + e);
}
// Configure UDDI4J system properties. Normally set on commandline or elsewhere
// SOAP transport being used
if (System.getProperty(TransportFactory.PROPERTY_NAME)==null) {
System.setProperty(TransportFactory.PROPERTY_NAME,
config.getProperty("TransportClassName"));

}
// Logging
if (System.getProperty("org.uddi4j.logEnabled")==null) {

System.setProperty("org.uddi4j.logEnabled", config.getProperty("logEnabled"));
}
// Configure JSSE support
try {
System.setProperty("java.protocol.handler.pkgs",
config.getProperty("handlerPackageName"));
// Dynamically loads security provider based on properties. Typically configured in
JRE
java.security.Security.addProvider((java.security.Provider)
Class.forName(config.getProperty("securityClassName")).newInstance());
} catch (Exception e) {
System.out.println("Error configuring JSSE provider. Make sure JSSE is in
classpath.\n" + e);
}
return config;
}
}

File name: BookClient.java


Function Performed:
 Obtain the name of book store to be used and call the corresponding book store
service.
 Obtain the result from the book store
Code:
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import java.util.*;
public class BookClient extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
HttpSession session = request.getSession();
PrintWriter out = response.getWriter();
ArrayList BookId = new ArrayList();
ArrayList BookName = new ArrayList();
ArrayList BookAuthor = new ArrayList();
ArrayList BookPrice = new ArrayList();
ArrayList BookQuantity = new ArrayList();
ArrayList BookCategory = new ArrayList();
String category = request.getParameter("category");
String BookStoreName = (String)request.getParameter("BookStoreName");
String name=(String)session.getAttribute("name");
String uuid=(String)session.getAttribute("uuid");
String operation="books";
try
{
String endpoint = request.getParameter("ServiceUrl");
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(operation);
call.addParameter("category", XMLType.XSD_STRING,
ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
String rs = (String) call.invoke(new Object[] {category});
UpdateCount(uuid,BookStoreName,response );
System.out.println("rs: "+rs);
String[] colonSplit = rs.split (":");
int rows=Integer.parseInt(colonSplit[0]);
String[] bookrows = colonSplit[1].split (";");
System.out.println("bookrows: "+bookrows.length);
for (int i=0; i <rows; i++)
{
String[] data = bookrows[i].split (",");
BookId.add(data[0]);
BookName.add(data[1]);
BookAuthor.add(data[2]);
BookPrice.add(data[3]);
BookQuantity.add(data[4]);
BookCategory.add(data[5]);
}
System.out.println("before request.setAttribute");
request.setAttribute("name",name);
request.setAttribute("BookId",BookId);
request.setAttribute("BookName",BookName);
request.setAttribute("BookAuthor",BookAuthor);
request.setAttribute("BookPrice",BookPrice);
request.setAttribute("BookQuantity",BookQuantity);
request.setAttribute("BookCategory",BookCategory);
request.setAttribute("BookStoreName",BookStoreName);
request.setAttribute("endpoint",endpoint);
System.out.println("after request.setAttribute :"+BookStoreName);
out.println(5);
request.getRequestDispatcher("/project/searchResult.jsp").forward(request,response);
}
catch(Exception e){
out.println("Sorry, requested service is currently not available");
out.println("<br><br><br><a
href=\"http://localhost:8085/myapp/orderbook_serv\">Back</a>");
}
}
void UpdateCount(String uuid,String BookStoreName,HttpServletResponse
response ){
PrintWriter out=null;
try{
out = response.getWriter();
Connection con=null;
Class.forName("com.mysql.jdbc.Driver");
con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/trust","root","root
");
String qry="select * from UserServiceLog where uuid='"+uuid+"' AND
ServiceName='"+BookStoreName+"'";
System.out.println(qry);
PreparedStatement pst=con.prepareStatement(qry);
ResultSet rs=pst.executeQuery();
System.out.println("db checked ");

if(rs.next()){
qry="update userservicelog set Count=Count+1 where uuid='"+uuid+"' AND
ServiceName='"+BookStoreName+"'";
System.out.println(qry);
PreparedStatement pst1=con.prepareStatement(qry);
int a=pst1.executeUpdate();
System.out.println("updated count in userservicelog");
pst1.close();
}
else{
qry="insert into UserServiceLog values
('"+uuid+"','"+BookStoreName+"',1)" ;
System.out.println(qry);
PreparedStatement pst2=con.prepareStatement(qry);
int a=pst2.executeUpdate();
System.out.println("new record inserted ");
//rs1.close();
pst2.close();
}
}
catch (ClassNotFoundException z)
{
out.println("driver not found");
}

catch (SQLException z)
{
z.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

File name: BookStore1.java


Function Performed:
 Obtain the category of books from the Book Client, invoke its books function to
search for required books from its own database and then return the relevant .
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import java.util.*;

public class BookStore1


{
public Connection con=null;
public int purchaseOrder(String bookId){
int order=0;
ResultSet rs=null;
try{
con = getConnection();
System.out.println("connected");
String qry = "UPDATE services.BookStore1 set Quantity=Quantity-1
where BookId='"+bookId+"'";
PreparedStatement pst=con.prepareStatement(qry);
order=pst.executeUpdate();
if(order==1)
System.out.println("Book Updated");
else
System.out.println("Update Quary not worked");
}
catch (SQLException e){
e.printStackTrace();
}
finally{
try{
if (con!=null && con.isClosed())
con.close();
}
catch (SQLException e){
e.printStackTrace();
}
}
return order;
}
public String books(String category) {
ResultSet rs=null;
int count=0;
String bookList="",qry="";
String BookStore="BookStore1";
try{
con = getConnection();
System.out.println("connected");
if(category.equals("all"))
qry="SELECT * FROM services.BookStore1 where
Quantity>0";
else
qry = "SELECT * FROM services.BookStore1 where
Quantity>0 AND Category='"+category+"'";
PreparedStatement pst=con.prepareStatement(qry);
System.out.println(qry);
rs=pst.executeQuery();
while(rs.next()){
count++;
System.out.println(" "+rs.getString(1)+" "+rs.getString(2)+"
"+rs.getString(3)+" "+rs.getString(4)+" "+rs.getString(6)+" "+rs.getString(5));

bookList=bookList+rs.getString(1)+","+rs.getString(2)+","+rs.getString(3)+","+rs.getString(
4)+","+rs.getString(6)+","+rs.getString(5)+";";
}
bookList=count+":"+bookList;
System.out.println("************** "+bookList);
}
catch (SQLException e){
e.printStackTrace();
}
finally{
try {
if (con!=null && con.isClosed())
con.close();
}
catch (SQLException e){
e.printStackTrace();
}
}
return bookList;
}

public Connection getConnection(){


try{
Class.forName("com.mysql.jdbc.Driver");
con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/services","root","root");
}
catch (ClassNotFoundException e){
System.out.println("driver not found: "+e);
}
catch (SQLException e){
e.printStackTrace();
}
return con;
}
}

You might also like