diff --git a/webservice/DataSID.java b/webservice/DataSID.java index 1d52db72befa5b3b4fa88f4aa7cc8a05de9b6981..e82b7ec9ea86ef032de816b1e2179c9680676c5a 100644 --- a/webservice/DataSID.java +++ b/webservice/DataSID.java @@ -24,6 +24,8 @@ package br.ufpr.c3sl.datasid; import java.io.*; import java.util.*; import java.util.regex.*; +import java.text.SimpleDateFormat; +import java.text.ParseException; import java.math.BigInteger; import java.sql.Timestamp; @@ -47,8 +49,8 @@ public class DataSID { private static final int WINDOWS = 1; private static final String SA_INVENTORY = "telecenter_inventory"; - private static final String SA_NET_USAGE = "telecenter_net_usage"; - private static final String SA_USER_HISTORY = "telecenter_user_history"; + private static final String SA_NET_USAGE = "net_usage"; + private static final String SA_USER_HISTORY = "telecenter_user"; private static final File XML_INVENTORY_SCHEMA = new File("/home/datasid/conf/collected-data.xsd"); private static final File XML_NET_USAGE_SCHEMA = new File("/home/datasid/conf/net-collected-data.xsd"); @@ -208,20 +210,23 @@ public class DataSID { PreparedStatement st = createInventoryStatement(con, collected, contactDate); st.executeUpdate(); - /*List<User> users = collected.getUserHistory().getUser(); - String superid = collected.getTelecentroInfo().getSuperid();*/ + List<User> users = collected.getUserHistory().getUser(); + int idpoint = collected.getPointInfo().getIdpoint().intValue(); List<Interface> interfaces = collected.getInterfaces().getInterface(); org.postgresql.util.PGobject macaddr = new org.postgresql.util.PGobject(); macaddr.setType("macaddr"); macaddr.setValue(interfaces.get(0).getMacAddress()); for(User user: users) { - st = createUserHistoryStatement(con, contactDate, superid, macaddr, user.getName(), user.getLogin(), user.getLogout()); + st = createUserHistoryStatement(con, contactDate, idpoint, + macaddr, user.getName(), user.getLogin(), user.getLogout()); st.executeUpdate(); } con.close(); - log(INFO, "setInventory(superid=" + collected.getTelecentroInfo().getSuperid() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); + log(INFO, "setInventory(idpoint=" + collected.getPointInfo().getIdpoint() + + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); + return "Success"; } catch (Exception e) { log(ERROR, e.getMessage() + " " + xmlData); @@ -230,21 +235,21 @@ public class DataSID { } } - private static PreparedStatement createInventoryStatement(Connection con, CollectedData collectedData, java.sql.Date contactDate) throws SQLException { + private static PreparedStatement createInventoryStatement(Connection con, CollectedData collectedData, java.sql.Date contactDate) throws SQLException, ParseException { final String query = "INSERT INTO " + SA_INVENTORY + " " + "(contact_date, machine_type, id_point, macaddr, agent_version, " + " os_type, os_distro, os_kernel, " + " processor, memory, " + " disk1_model, disk1_size, disk1_used, " + " disk2_model, disk2_size, disk2_used, " + - " extra_hds " + + " extra_hds, mirror_timestamp, amount_users " + ") VALUES " + "(?, ?, ?, ?, ?, " + " ?, ?, ?, " + " ?, ?, " + " ?, ?, ?, " + " ?, ?, ?, " + - " ? " + + " ?, ?, ? " + " );"; PreparedStatement st = con.prepareStatement(query); @@ -253,7 +258,7 @@ public class DataSID { Inventory inventory = collectedData.getInventory(); List<Disk> disks = inventory.getDisks().getDisk(); - TeleCentroInfo teleCentroInfo = collectedData.getTelecentroInfo(); + PointInfo pointInfo = collectedData.getPointInfo(); // contact_date st.setDate(1, contactDate); @@ -264,8 +269,8 @@ public class DataSID { else st.setInt(2, 1); - // superid - st.setInt(3, teleCentroInfo.getSuperid().intValue()); + // idpoint + st.setInt(3, pointInfo.getIdpoint().intValue()); // macaddr org.postgresql.util.PGobject macaddr = new org.postgresql.util.PGobject(); @@ -323,39 +328,46 @@ public class DataSID { // extra_hds st.setInt(17, (disks.size() > 2) ? (disks.size() - 2) : 0); + // mirrors_timestamp - //st.setString(18, collectedData.getMirrorsTimestamp()); - + if(collectedData.getMirrorsTimestamp().compareTo(" ") == 0) + st.setTimestamp(18, null); + else { + SimpleDateFormat dt = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy", Locale.US); + Date ts = dt.parse(collectedData.getMirrorsTimestamp()); + st.setTimestamp(18, new java.sql.Timestamp(ts.getTime())); + } + // user_count - //st.setInt(???, teleCentroInfo.getUserCount().intValue()); - - // mirrors_timestamp - //st.setString(???, collectedData.getMirrorsTimestamp()); + st.setInt(19, pointInfo.getUserCount().intValue()); return st; } private static PreparedStatement createUserHistoryStatement(Connection con, java.sql.Date contactDate, - int superid, Object macaddr, String name, String login, String logout) throws SQLException { + int id_point, Object macaddr, String name, String login, String logout) throws SQLException { final String query = "INSERT INTO " + SA_USER_HISTORY + " " + - "(contact_date, m_superid, macaddr, name, login, logout) VALUES " + + "(contact_date, id_point, macaddr, name, login, logout) VALUES " + "(?, ?, ?, ?, ?, ?);"; PreparedStatement st = con.prepareStatement(query); st.setDate(1, contactDate); - st.setInt(2, superid); + st.setInt(2, id_point); st.setObject(3, macaddr); st.setString(4, name); - st.setString(5, login); + st.setTime(5, java.sql.Time.valueOf(login)); - st.setString(6, logout); - + try { + st.setTime(6, java.sql.Time.valueOf(logout)); + } catch (Exception e) { + st.setTime(6, null); + } return st; } @@ -410,12 +422,17 @@ public class DataSID { List<NetUse> netUses = netCollectedData.getBandwidthUsage().getNetuse(); for(NetUse netUse : netUses) { - PreparedStatement st = createNetUsageStatement(con, contactDate, netCollectedData.getSuperid(), (Object)macaddr, netUse.getDate(), netUse.getTime(), netUse.getRx().getBytes(), netUse.getRx().getPackets(), netUse.getTx().getBytes(), netUse.getTx().getPackets()); + PreparedStatement st = createNetUsageStatement(con, contactDate, + netCollectedData.getIdPoint(), (Object)macaddr, + netUse.getDate(), netUse.getTime(), netUse.getRx().getRxBytes(), + netUse.getRx().getRxPackets(), netUse.getTx().getTxBytes(), + netUse.getTx().getTxPackets()); st.executeUpdate(); } con.close(); - log(DEBUG, "setNetUsage(superid=" + netCollectedData.getSuperid() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); + log(DEBUG, "setNetUsage(idpoint=" + netCollectedData.getIdPoint() + + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); return "Success"; } catch (Exception e) { log(ERROR, e.getMessage() + " " + xmlData); @@ -425,24 +442,24 @@ public class DataSID { } private static PreparedStatement createNetUsageStatement(Connection con, java.sql.Date contactDate, - BigInteger superid, Object macaddr, String collect_date, String collect_time, BigInteger down_kbits, + BigInteger idpoint, Object macaddr, String collect_date, String collect_time, BigInteger down_kbits, BigInteger down_packages, BigInteger up_kbits, BigInteger up_packages) throws SQLException { final String query = "INSERT INTO " + SA_NET_USAGE + " " + "(contact_date, id_point, macaddr, collect_date, collect_time, " + "down_kbits, down_packages, up_kbits, up_packages) VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?);"; - + PreparedStatement st = con.prepareStatement(query); st.setDate(1, contactDate); - st.setInt(2, superid.intValue()); + st.setInt(2, idpoint.intValue()); st.setObject(3, macaddr); - st.setString(4, collect_date); + st.setDate(4, java.sql.Date.valueOf(collect_date)); - st.setString(5, collect_time); + st.setTime(5, java.sql.Time.valueOf(collect_time)); st.setInt(6, down_kbits.intValue() ); diff --git a/webservice/collected-data.xsd b/webservice/collected-data.xsd index 95c07b7882eeb100b879620c8e1cbd15a001b396..e7ac49d0d6a101430de9c37c9f84cdeedb7299dd 100644 --- a/webservice/collected-data.xsd +++ b/webservice/collected-data.xsd @@ -5,7 +5,7 @@ <xsd:complexType name="CollectedData"> <xsd:all> <xsd:element name="agent-version" type="xsd:string" minOccurs="1" /> - <xsd:element name="telecentro-info" type="TeleCentroInfo" minOccurs="1" /> + <xsd:element name="point-info" type="PointInfo" minOccurs="1" /> <xsd:element name="interfaces" type="Interfaces" minOccurs="1" /> <xsd:element name="machine-type" minOccurs="1"> <xsd:simpleType> @@ -72,9 +72,9 @@ </xsd:all> </xsd:complexType> - <xsd:complexType name="TeleCentroInfo"> + <xsd:complexType name="PointInfo"> <xsd:all> - <xsd:element name="superid" type="xsd:integer" /> + <xsd:element name="idpoint" type="xsd:integer" /> <xsd:element name="user_count" type="xsd:integer" /> </xsd:all> </xsd:complexType> diff --git a/webservice/net-collected-data.xsd b/webservice/net-collected-data.xsd index ceb30f302fad5c0dd5dd4d12ee845545ee698550..c181556851f24594850bf5ff3d0492ee8e056839 100644 --- a/webservice/net-collected-data.xsd +++ b/webservice/net-collected-data.xsd @@ -5,7 +5,7 @@ <xsd:complexType name="NetCollectedData"> <xsd:all> <xsd:element name="agent-version" type="xsd:string" minOccurs="1" /> - <xsd:element name="telecentro-id" type="xsd:integer" minOccurs="1" /> + <xsd:element name="id-point" type="xsd:integer" minOccurs="1" /> <xsd:element name="interfaces" type="Interfaces" minOccurs="1" /> <xsd:element name="bandwidth-usage" type="BandwidthUsage" minOccurs="1" /> </xsd:all> @@ -17,7 +17,7 @@ </xsd:sequence> </xsd:complexType> - <xsd:complexType name="Interface"> + <xsd:complexType name="Interface"> <xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="mac-address" type="xsd:string" use="required" /> </xsd:complexType> @@ -28,23 +28,28 @@ </xsd:sequence> </xsd:complexType> - <xsd:complexType name="NetUse"> - <xsd:all> - <xsd:element name="rx" type="Rx" /> - <xsd:element name="tx" type="Tx" /> + <xsd:complexType name="NetUse"> + <xsd:all> + <xsd:element name="id" type="xsd:integer" minOccurs="1"/> + <xsd:element name="rx" type="Rx" minOccurs="1" /> + <xsd:element name="tx" type="Tx" minOccurs="1" /> + <xsd:element name="date" type="xsd:string" minOccurs="1" /> + <xsd:element name="time" type="xsd:string" minOccurs="1" /> </xsd:all> - <xsd:attribute name="date" type="xsd:string" /> - <xsd:attribute name="time" type="xsd:string" /> </xsd:complexType> - <xsd:complexType name="Rx"> - <xsd:attribute name="packets" type="xsd:integer" use="required" /> - <xsd:attribute name="bytes" type="xsd:integer" use="required" /> + <xsd:complexType name="Rx"> + <xsd:all> + <xsd:element name="rx-packets" type="xsd:integer" minOccurs="1" /> + <xsd:element name="rx-bytes" type="xsd:integer" minOccurs="1" /> + </xsd:all> </xsd:complexType> <xsd:complexType name="Tx"> - <xsd:attribute name="packets" type="xsd:integer" use="required" /> - <xsd:attribute name="bytes" type="xsd:integer" use="required" /> + <xsd:all> + <xsd:element name="tx-packets" type="xsd:integer" minOccurs="1" /> + <xsd:element name="tx-bytes" type="xsd:integer" minOccurs="1" /> + </xsd:all> </xsd:complexType> </xsd:schema>