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

📄 serverchild.java

📁 数据挖掘的工具代码(包含fp-tree,appriory
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*ARMiner - Association Rules MinerCopyright (C) 2000  UMass/Boston - Computer Science DepartmentThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or (atyour option) any later version.This program is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307USAThe ARMiner Server was written by Dana Cristofor and LaurentiuCristofor.The ARMiner Client was written by Abdelmajid Karatihy, Xiaoyong Kuang,and Lung-Tsung Li.The ARMiner package is currently maintained by Laurentiu Cristofor(laur@cs.umb.edu).*//*     This file is a part of the ARMiner project.      (P)1999-2000 by ARMiner Server Team:   Dana Cristofor   Laurentiu Cristofor*/import java.util.*;import java.io.*;import java.net.*;/*  Maintenance log started on April 5th, 2001 by Laurentiu Cristofor  Apr. 5th, 2001    - I have replaced the quicksort used for sorting                      the mining results with a heapsort implementation,                      which runs faster and uses less memory. This also                      eliminates the StackOutOfMemory problem that                       would appear when sorting large results                    - I have increased the number of results sent to                      the client, the BATCH_SIZE, to 5000*/ /**   ServerChild.java<P>   ServerChild will be responsible for the communication    with a particular client.<P>*/public class ServerChild extends Thread{  private Socket clientSocket;      // socket for communication with the client  private ObjectInputStream in;     // for reading  private ObjectOutputStream out;   // for writing  private static long connection_sequence; // used to assign id's to                                           // connections  private long connectionID;        // the connection identifier  private String user = null;       // user, owner of the session  private DBConfig dbconf = null;   // configuration object  private static final int BATCH_SIZE = 5000; // max number                                              // of association rules                                               // to be returned  private Vector results = null;    // mining results are kept here  private int index = 0;            // next position to be returned                                     // from results  public static final int ASC  = 1; // for sorting in ascending order  public static final int DESC = 2; // for sorting in descending order  /**   * Initialize a ServerChild to communicate    * through <code>clientSocket</code>.   *   */  public ServerChild(Socket clientSocket)  {    try      {	this.clientSocket = clientSocket; 	// open socket I/O streams	in = new ObjectInputStream(clientSocket.getInputStream());	out = new ObjectOutputStream(clientSocket.getOutputStream());	// assign this connection an identifier	connection_sequence++;	if (connection_sequence < 0)	  connection_sequence = 0;	connectionID = connection_sequence;      }    catch (Exception e)      {	log("ServerChild error: " + e);      }  }  /**   * Return this connection's identifier   *   */  public long getID()  {    return connectionID;  }  /**   * Start the execution of the ServerChild.   *   */  public void run()   {    try       {	serviceClient();	Server.remove(this);	clientSocket.close();      }     catch (Exception e)       {	log("ServerChild error: " + e);      }  }  /*   * Loops over the client requests;   */  private void serviceClient()  {    String cmmd;    boolean loggedOn = false;    while(true)      {	try	  {	    cmmd = (String)in.readObject();	    log(cmmd);	    if (loggedOn)	      {		if (cmmd.equals("EXIT"))		  {		    try		      {			dbconf.unmarkLogged(user);		      }		    catch (DBConfigException e)		      {			log(e);		      }		    		    break;		  }		else if ((cmmd.equals("GETCOLS")))		  {		    Vector dbs = (Vector)in.readObject();		    log(dbs);		    getColumns(dbs);		  }		else if ((cmmd.equals("GETDBCONFIG")))		  getDBConfig();		else if ((cmmd.equals("BENCHMARK")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    benchmark((Vector)info.get(0), (Vector)info.get(1),			      (Vector)info.get(2));		  }	    		else if ((cmmd.equals("CHGPERM")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    chgPerm((String)info.get(0), ((Long)info.get(1)).longValue());		  }		else if ((cmmd.equals("CHGPASSW")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    chgPassw((String)info.get(0), (String)info.get(1));		  }		else if ((cmmd.equals("CHGNAMEUSR")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    chgNameUsr((String)info.get(0), (String)info.get(1));		  }		else if ((cmmd.equals("DELUSR")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    delUsr((String)info.get(0));		  }		else if ((cmmd.equals("ADDUSR")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    addUsr((String)info.get(0), (String)info.get(1),			   ((Long)info.get(2)).longValue(), (Vector)info.get(3));		  }		else if ((cmmd.equals("DELUSRFROMGRPS")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    delUsrFromGrps((String)info.get(0), (Vector)info.get(1));		  }		else if ((cmmd.equals("ADDUSRTOGRPS")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    addUsrToGrps((String)info.get(0), (Vector)info.get(1));		  }		else if ((cmmd.equals("SETUSRSFORGRP")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    setUsrsForGrp((String)info.get(0), (Vector)info.get(1));		  }		else if ((cmmd.equals("SETGRPSFORUSR")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    setGrpsForUsr((String)info.get(0), (Vector)info.get(1));		  }		else if ((cmmd.equals("DELGRPFROMUSRS")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    delGrpFromUsrs((String)info.get(0), (Vector)info.get(1));		  }		else if ((cmmd.equals("ADDGRPTOUSRS")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    addGrpToUsrs((String)info.get(0), (Vector)info.get(1));		  }		else if ((cmmd.equals("CHGNAMEGRP")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    chgNameGrp((String)info.get(0), (String)info.get(1));		  }		else if ((cmmd.equals("DELGRP")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    delGrp((String)info.get(0));		  }		else if ((cmmd.equals("ADDGRP")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    addGrp((String)info.get(0), (Vector)info.get(1));		  }		else if ((cmmd.equals("CHGALGGRP")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    chgAlgGrp((String)info.get(0), (String)info.get(1));		  }		else if ((cmmd.equals("DELALG")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    delAlg((String)info.get(0));		  }		else if ((cmmd.equals("CHGDBGRP")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    chgDbGrp((String)info.get(0), (String)info.get(1));		  }		else if ((cmmd.equals("DELDB")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    delDb((String)info.get(0));		  }		else if ((cmmd.equals("ADDDB")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    addDb(info);		  }		else if ((cmmd.equals("ADDALG")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    addAlg(info);		  }		else if ((cmmd.equals("MINE")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    mine((String)info.get(0),			 (String)info.get(1),			 ((Float)info.get(2)).floatValue(),			 ((Float)info.get(3)).floatValue());		  }		else if ((cmmd.equals("MINEADV")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    mineAdv((String)info.get(0),			    (String)info.get(1),			    ((Float)info.get(2)).floatValue(),			    ((Float)info.get(3)).floatValue(),			    (Vector)info.get(4),			    (Vector)info.get(5),			    (Vector)info.get(6),			    ((Integer)info.get(7)).intValue(),			    ((Integer)info.get(8)).intValue());		  }		else if ((cmmd.equals("GENDB")))		  {		    Vector info = (Vector)in.readObject();		    log(info);		    genDB((String)info.get(0),			  (String)info.get(1),			  ((Long)info.get(2)).longValue(),			  ((Integer)info.get(3)).intValue(),			  ((Integer)info.get(4)).intValue(),			  ((Integer)info.get(5)).intValue(),			  ((Integer)info.get(6)).intValue(),			  ((Double)info.get(7)).doubleValue(),			  ((Double)info.get(8)).doubleValue());		  }		else if ((cmmd.equals("GETNEXT")))		  getNext();		else if ((cmmd.equals("SORT")))		  {		    cmmd = (String)in.readObject();		    log(cmmd);		    if (cmmd.equals("ANTECEDENT"))		      {			cmmd = (String)in.readObject();			log(cmmd);			if (cmmd.equals("ASC"))			  {			    sort(AssociationRule.ANTECEDENT_SIZE, ASC);			  }			else if (cmmd.equals("DESC"))			  {			    sort(AssociationRule.ANTECEDENT_SIZE, DESC);			  }			else			  {			    sendWarning("unknown command");			  }		      }		    else if (cmmd.equals("CONSEQUENT"))		      {			cmmd = (String)in.readObject();			log(cmmd);			if (cmmd.equals("ASC"))			  {			    sort(AssociationRule.CONSEQUENT_SIZE, ASC);			  }			else if (cmmd.equals("DESC"))			  {			    sort(AssociationRule.CONSEQUENT_SIZE, DESC);			  }			else			  {			    sendWarning("unknown command");			  }		      }		    else if (cmmd.equals("SUPPORT"))		      {			cmmd = (String)in.readObject();			log(cmmd);			if (cmmd.equals("ASC"))			  {			    sort(AssociationRule.SUPPORT, ASC);			  }			else if (cmmd.equals("DESC"))			  {			    sort(AssociationRule.SUPPORT, DESC);			  }			else			  {			    sendWarning("unknown command");			  }		      }  		    else if (cmmd.equals("CONFIDENCE"))		      {			cmmd = (String)in.readObject();			log(cmmd);			if (cmmd.equals("ASC"))			  {			    sort(AssociationRule.CONFIDENCE, ASC);			  }			else if (cmmd.equals("DESC"))			  {			    sort(AssociationRule.CONFIDENCE, DESC);			  }			else			  {			    sendWarning("unknown command");			  }		      } 		    else		      {			sendWarning("unknown command");		      }		  }		else		  {		    sendWarning("unknown command");		  }	      }	    else if (cmmd.equals("LOGIN"))	      {		loggedOn = true;		Vector info = (Vector)in.readObject();		log(info);		login((String)info.get(0), (String)info.get(1));	      }	    else // exit if first command is not LOGIN	      break;	  }	catch (Throwable e)	  {	    log(e);	    break;	  }      }  }  /*   * Creates the configuration object for this connection   * verifies if the user is valid   * sets true the boolean loggedOn   * in case of errors throws an exception   * that will break the loop and close the connection   */  private void login(String user, String password)    throws ServerChildException, IOException  {    try      {	// create a configuration object for this connection	dbconf = DBConfig.getDBConfig();      }    catch (DBConfigException e)      {

⌨️ 快捷键说明

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