/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.sql.*;
import java.io.*;
import java.lang.*;
import java.io.File;
import java.rmi.*;
import java.rmi.server.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.util.Map;
import javax.swing.JEditorPane;
import org.w3c.dom.*;
public class nav_dbImpl extends UnicastRemoteObject implements nav_dbInterface
{
static PrintStream p=null;
static PreparedStatement psmnt=null;
static Connection con=null;
static JEditorPane editorPane =null;
public nav_dbImpl() throws RemoteException{
getConnection();
}
public nav_dbImpl(PrintStream p,JEditorPane editorPane) throws RemoteException{
this.p=p;
this.editorPane=editorPane;
getConnection();
}
public boolean sendLog(byte[] log) throws RemoteException
{
try
{
File logFile = new File("D://cpe207//nav//logFile.xml");
FileOutputStream fos = new FileOutputStream(logFile); //write to file
fos.write(log);
fos.close();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(logFile);
document.getDocumentElement().normalize();
System.out.println("Root element "+document.getDocumentElement().getNodeName());
NodeList node = document.getElementsByTagName("NavigatorLog");
System.out.println("Information of the NaviLog");
psmnt=con.prepareStatement("insert into navi(timeStamp, methodName, callBy) values(?,?,?)");
for (int i = 0; i < node.getLength(); i++) {
Node firstNode = node.item(i);
if (firstNode.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) firstNode;
NodeList timestampElementList = element.getElementsByTagName("timestamp");
Element timestampElement = (Element) timestampElementList.item(0);
NodeList timestamp = timestampElement.getChildNodes();
System.out.println("Timestamp:"+ timestamp.item(0).getNodeValue());
java.util.Date date=new java.util.Date();
java.sql.Timestamp t=new java.sql.Timestamp(date.getTime());
psmnt.setString(1, t+"");
NodeList methodnameElementList = element.getElementsByTagName("methodname");
Element methodnameElement = (Element)methodnameElementList.item(0);
NodeList methodname = methodnameElement.getChildNodes();
System.out.println("Method invoked :"+ methodname.item(0).getNodeValue());
psmnt.setString(2, methodname.item(0).getNodeValue());
NodeList calledbyList = element.getElementsByTagName("calledby");
Element calledbyElement = (Element) calledbyList.item(0);
NodeList calledby =calledbyElement.getChildNodes();
System.out.println("Called By : " + calledby.item(0).getNodeValue());
psmnt.setString(3, calledby.item(0).getNodeValue());
p.println(timestamp.item(0).getNodeValue()+" Method invoked :"+ methodname.item(0).getNodeValue()+" Called By : " + calledby.item(0).getNodeValue());
p.println();
editorPane.setText(editorPane.getText()+"/n"+(new java.sql.Timestamp(((new java.util.Date()).getTime())))+" "+"Method invoked :"+ methodname.item(0).getNodeValue()+" Called By : " + calledby.item(0).getNodeValue()+"/n");
}
}
int s=psmnt.executeUpdate();
if(s>0){
System.out.println("Method sendLog done successsfully!");
}
else{
System.out.println("Method sendLog failed!");
}
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}
public boolean sendPassgTravelledOnRoute(byte[] log) throws RemoteException
{
try
{
File logFile = new File("D://cpe207//nav//PassgTravelledOnRoute.xml");
FileOutputStream fos = new FileOutputStream(logFile); //write to file
fos.write(log);
fos.close();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(logFile);
document.getDocumentElement().normalize();
System.out.println("Root element "+document.getDocumentElement().getNodeName());
NodeList node = document.getElementsByTagName("row");
System.out.println("Information of the Passengers Travelled On Route");
psmnt=con.prepareStatement("insert into PassgTravelledOnRoute(route_id, passengers) values(?,?)");
for (int i = 0; i < node.getLength(); i++) {
Node firstNode = node.item(i);
if (firstNode.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) firstNode;
NodeList RouteIDElementList = element.getElementsByTagName("RouteID");
Element RouteIDElement = (Element) RouteIDElementList.item(0);
NodeList RouteID = RouteIDElement.getChildNodes();
System.out.println("Route ID:"+ RouteID.item(0).getNodeValue());
psmnt.setInt(1, Integer.parseInt(RouteID.item(0).getNodeValue()));
NodeList passengersTravelledElementList = element.getElementsByTagName("passengersTravelled");
Element passengersTravelledElement = (Element)passengersTravelledElementList.item(0);
NodeList passengersTravelled = passengersTravelledElement.getChildNodes();
System.out.println("No of Passengers :"+ passengersTravelled.item(0).getNodeValue());
psmnt.setInt(2, Integer.parseInt(passengersTravelled.item(0).getNodeValue()));
}
int s=psmnt.executeUpdate();
if(s>0){
System.out.println("Method sendPassgTravelledOnRoute done successsfully!");
}
else{
System.out.println("Method sendPassgTravelledOnRoute failed!");
}
}
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}
public boolean storeBSPassg(byte[] data) throws RemoteException
{
try
{
File passgFile = new File("D://cpe207//nav//BSPassg.xml");
FileOutputStream fos = new FileOutputStream(passgFile); //write to file
fos.write(data);
fos.close();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(passgFile);
document.getDocumentElement().normalize();
System.out.println("Root element "+document.getDocumentElement().getNodeName());
NodeList node = document.getElementsByTagName("row");
System.out.println("Information of the Navigator");
psmnt=con.prepareStatement("insert into BusStop(busstop_id, passengers) values(?,?)");
for (int i = 0; i < node.getLength(); i++)
{
Node firstNode = node.item(i);
if (firstNode.getNodeType() == Node.ELEMENT_NODE)
{
Element element = (Element) firstNode;
NodeList busstopNoList = element.getElementsByTagName("BusstopID");
Element BusstopElement = (Element) busstopNoList.item(0);
NodeList BusstopNo = BusstopElement.getChildNodes();
System.out.print("Busstop ID: "+ BusstopNo.item(0).getNodeValue() + "; ");
psmnt.setString(1, BusstopNo.item(0).getNodeValue());
NodeList PassengersList = element.getElementsByTagName("noOfPassengers");
Element PassengersElement = (Element)PassengersList.item(0);
NodeList Passengers = PassengersElement.getChildNodes();
System.out.println("No of Passengers: "+ Passengers.item(0).getNodeValue());
psmnt.setInt(2, Integer.parseInt(Passengers.item(0).getNodeValue()));
}
int s=psmnt.executeUpdate();
if(s>0){
System.out.println("Method storeBSPassg done successsfully!");
}
else{
System.out.println("Method storeBSPassg failed!");
}
}
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}
public byte[] getTotalPassg() throws RemoteException, SQLException, TransformerConfigurationException, TransformerException, ParserConfigurationException
{
psmnt=con.prepareStatement("select passenger from setup");
ResultSet rs=psmnt.executeQuery();
rs.next();
int totalNumPassengers=rs.getInt("passenger");
String row, data, element1, element2;
Element rw, em1, em2;
String root = "NaviInit";
DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder =
documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement(root);
document.appendChild(rootElement);
row = "row";
rw = document.createElement(row);
element1 = "tableName";
em1 = document.createElement(element1);
data = "InitialPassengers";
em1.appendChild(document.createTextNode(data));
rw.appendChild(em1);
element2 = "totalNumPassengers";
em2 = document.createElement(element2);
data = Integer.toString(totalNumPassengers);
em2.appendChild(document.createTextNode(data));
rw.appendChild(em2);
rootElement.appendChild(rw);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
File totalPassg = new File("D://cpe207//nav//DBtoNavi.xml");
StreamResult result = new StreamResult(totalPassg);
transformer.transform(source, result);
System.out.println("Method getTotalPassg() successful");
try
{
FileInputStream fin = new FileInputStream(totalPassg);
byte[] sendData = new byte[(int)totalPassg.length()];
fin.read(sendData); //write file to a byte[] to send
fin.close();
totalPassg.delete();
return sendData;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public byte[] getRoute() throws SQLException, FileNotFoundException, IOException,RemoteException
{
ResultSet rs = null;
PreparedStatement psmnt=null;
psmnt=con.prepareStatement("select xml from xml where type=(select map_selecting from setup) and name='cme.xml'");
rs=psmnt.executeQuery();
rs.next();
if(rs.isLast()){
Blob blob=rs.getBlob("xml");
InputStream inStream=blob.getBinaryStream();
int length=-1;
int size=(int)blob.length();
byte [] bytefile=new byte[size];
inStream.read(bytefile);
System.out.println("Method getRoute() successfully!");
psmnt.close();
return bytefile;
}
psmnt.close();
return null;
}
public static void getConnection()
{
String connectionURL="jdbc:mysql://127.0.0.1:3306/PBSS";
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection(connectionURL, "root","instance");
System.out.println("NAV Connected successfully!/n");
}
catch(Exception ex){
System.out.println("Found some error: "+ex);
}
}
}