/*
* Creato il 4-giu-04
*
* Per modificare il modello associato a questo file generato, aprire
* Finestra>Preferenze>Java>Generazione codice>Codice e commenti
*/
package org.xdams.xw;
import java.sql.SQLException;
import java.util.Properties;
import java.util.StringTokenizer;
import org.xdams.xw.exception.XWException;
/**
* @author sandro
*
* Per modificare il modello associato al commento di questo tipo generato, aprire
* Finestra>Preferenze>Java>Generazione codice>Codice e commenti
*/
public class XWDriver{
private Properties prop = null ;
private String theHost = "" ;
private String theDb = "" ;
private String theUserDB = "" ;
private String thePasswordDB = "" ;
private int thePort = -1 ;
private String thePne = "" ;
private String thePnce = "" ;
public XWDriver(String providerUrl) throws XWException,SQLException {
prop=new Properties();
parseURL(providerUrl);
prop.setProperty(XWConstant.XW_HOST,theHost);
prop.setProperty(XWConstant.XW_PORT,Integer.toString(thePort));
prop.setProperty(XWConstant.XW_DB,theDb);
prop.setProperty(XWConstant.XW_USER,theUserDB);
prop.setProperty(XWConstant.XW_PASSWORD,thePasswordDB);
prop.setProperty(XWConstant.XW_PNE,thePne);
prop.setProperty(XWConstant.XW_PNCE,thePnce);
}
public XWConnection getXWConnection()throws XWException{
XWConnection result = null;
result = new XWConnection(prop);
return result;
}
public XWConnection getXWConnection(String user,String password)throws XWException{
XWConnection result = null;
prop.setProperty(XWConstant.XW_USER,user);
prop.setProperty(XWConstant.XW_PASSWORD,password);
result = new XWConnection(prop);
return result;
}
private void parseURL(String providerUrl) throws XWException{
String pURL=providerUrl.trim();
if(!providerUrl.startsWith("regesta"))
throw new XWException("Invaild URL String");
try {
theHost = pURL.substring(pURL.indexOf("//")+2,pURL.lastIndexOf(":"));
pURL = pURL.substring(pURL.lastIndexOf(":")+1,pURL.length());
thePort = Integer.parseInt( pURL.substring(0,pURL.indexOf("/")) );
pURL = pURL.substring(pURL.indexOf("/")+1,pURL.length());
theDb = pURL.substring(0,pURL.indexOf("/"));
pURL = pURL.substring(pURL.indexOf("/")+1,pURL.length());
StringTokenizer strtok= new StringTokenizer(pURL,";");
while(strtok.hasMoreTokens()){
String token=strtok.nextToken();
if(token.indexOf("user=")!=-1)
theUserDB = token.substring(token.indexOf("user=")+"user=".length(),token.length());
if(token.indexOf("password=")!=-1)
thePasswordDB = token.substring(token.indexOf("password=")+"password=".length(),token.length());
if(token.indexOf("pne=")!=-1)
thePne = token.substring(token.indexOf("pne=")+"pne=".length(),token.length());
if(token.indexOf("pnce=")!=-1)
thePnce = token.substring(token.indexOf("pnce=")+"pnce=".length(),token.length());
}
if(thePne.equals(""))
throw new XWException("Invaild URL String XW_PNE is required");
}
catch (NumberFormatException e) {
throw new XWException("Invaild port");
}
catch (ArrayIndexOutOfBoundsException e) {
throw new XWException("Invaild URL String");
}
catch (NullPointerException e) {
throw new XWException("Invaild URL String");
}
}
}