diff --git a/webservice/DataSID.java b/webservice/DataSID.java index 4364b55a9f261a8de3f8b7d496aa7977b3456383..3c60d23b3630659d1bbaa30175d0bd4fd31a4135 100644 --- a/webservice/DataSID.java +++ b/webservice/DataSID.java @@ -44,23 +44,23 @@ import javax.xml.validation.SchemaFactory; import javax.xml.transform.stream.StreamSource; public class DataSID { - + private static final int LINUX = 0; private static final int WINDOWS = 1; private static final String SA_INVENTORY = "telecenter_inventory"; 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"); - + private static final String AGENT_VERSION = "1.0.1"; private static final String AGENT_UPDATE_LINK = "http://bisimmcdev.c3sl.ufpr.br/download/datasid-1.0.1-update.run"; - + private static final String WINDOWS_AGENT_VERSION = "1.0.0"; private static final String WINDOWS_UPDATE_LINK = "http://bisimmcdev.c3sl.ufpr.br/download/datasid-1.0.0-update.exe"; - + // enum does not work as expected inside an axis web service // using simple constants instead private static final int ERROR = 0; @@ -137,15 +137,15 @@ public class DataSID { */ public static String getAgentVersion(int OS) { switch(OS){ - case LINUX: + case LINUX: return AGENT_VERSION; - case WINDOWS: + case WINDOWS: return WINDOWS_AGENT_VERSION; default: - return "ERROR: invalid OS"; + return "ERROR: invalid OS"; } - - } + + } /** * Return a string that contains a link to download the newest version of @@ -158,14 +158,14 @@ public class DataSID { public static String getUpdateLink(int OS) { switch(OS){ - case LINUX: + case LINUX: return AGENT_UPDATE_LINK; - case WINDOWS: + case WINDOWS: return WINDOWS_UPDATE_LINK; default: - return "ERROR: invalid OS"; + return "ERROR: invalid OS"; } - } + } /** * Receive an XML string which has the inventory data to be parsed and @@ -206,7 +206,7 @@ public class DataSID { // contact_date = current date Calendar cal = Calendar.getInstance(); java.sql.Date contactDate = new java.sql.Date(cal.getTimeInMillis()); - + PreparedStatement st = createInventoryStatement(con, collected, contactDate); st.executeUpdate(); @@ -216,17 +216,17 @@ public class DataSID { 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, idpoint, + st = createUserHistoryStatement(con, contactDate, idpoint, macaddr, user.getName(), user.getLogin(), user.getLogout()); st.executeUpdate(); } con.close(); - log(INFO, "setInventory(idpoint=" + collected.getPointInfo().getIdpoint() + + log(INFO, "setInventory(idpoint=" + collected.getPointInfo().getIdpoint() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); - + return "Success"; } catch (Exception e) { log(ERROR, e.getMessage() + " " + xmlData); @@ -234,7 +234,7 @@ public class DataSID { return "ERROR: " + e.getMessage(); } } - + 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, " + @@ -262,7 +262,7 @@ public class DataSID { // contact_date st.setDate(1, contactDate); - + // machine_type if(collectedData.getMachineType().compareTo("client") == 0) st.setInt(2, 0); @@ -277,7 +277,7 @@ public class DataSID { macaddr.setType("macaddr"); macaddr.setValue(interfaces.get(0).getMacAddress()); st.setObject(4, macaddr); - + // versao st.setString(5, collectedData.getAgentVersion()); @@ -298,7 +298,7 @@ public class DataSID { // disk1_model st.setString(11, disks.get(0).getModel()); - + // disk1_size st.setInt(12, disks.get(0).getSize().intValue()); @@ -328,17 +328,17 @@ public class DataSID { // extra_hds st.setInt(17, (disks.size() > 2) ? (disks.size() - 2) : 0); - + // mirrors_timestamp if(collectedData.getMirrorsTimestamp().compareTo(" ") == 0) - st.setTimestamp(18, null); + 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(19, pointInfo.getUserCount().intValue()); @@ -352,13 +352,13 @@ public class DataSID { "(?, ?, ?, ?, ?, ?);"; PreparedStatement st = con.prepareStatement(query); - + st.setDate(1, contactDate); st.setInt(2, id_point); st.setObject(3, macaddr); - + st.setString(4, name); try { @@ -366,16 +366,16 @@ public class DataSID { } catch (Exception e) { st.setTime(5, null); } - + try { st.setTime(6, java.sql.Time.valueOf(logout)); } catch (Exception e) { st.setTime(6, null); } - + return st; } - + /** * Receive an XML string which has the inventory data to be parsed and * inserted into database. Return "Success" string if insertion operation @@ -413,9 +413,9 @@ public class DataSID { // Decode the XML into a Java Object JAXBElement<NetCollectedData> element = (JAXBElement<NetCollectedData>) unmarshaller.unmarshal(new StreamSource(is), NetCollectedData.class); NetCollectedData netCollectedData = element.getValue(); - + List<Interface> interfaces = netCollectedData.getInterfaces().getInterface(); - + // contact_date = current date Calendar cal = Calendar.getInstance(); java.sql.Date contactDate = new java.sql.Date(cal.getTimeInMillis()); @@ -423,20 +423,20 @@ public class DataSID { org.postgresql.util.PGobject macaddr = new org.postgresql.util.PGobject(); macaddr.setType("macaddr"); macaddr.setValue(interfaces.get(0).getMacAddress()); - + List<NetUse> netUses = netCollectedData.getBandwidthUsage().getNetuse(); - + for(NetUse netUse : netUses) { PreparedStatement st = createNetUsageStatement(con, contactDate, - netCollectedData.getIdPoint(), (Object)macaddr, - netUse.getDate(), netUse.getTime(), netUse.getRx().getRxBytes(), + 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(idpoint=" + netCollectedData.getIdPoint() + + log(DEBUG, "setNetUsage(idpoint=" + netCollectedData.getIdPoint() + ", macaddr=" + interfaces.get(0).getMacAddress() + ")"); return "Success"; } catch (Exception e) { @@ -453,7 +453,7 @@ public class DataSID { "(contact_date, id_point, macaddr, collect_date, collect_time, " + "down_kbits, down_packages, up_kbits, up_packages, ip, city_code) VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; - + PreparedStatement st = con.prepareStatement(query); st.setDate(1, contactDate); @@ -461,23 +461,23 @@ public class DataSID { st.setInt(2, idpoint.intValue()); st.setObject(3, macaddr); - + st.setDate(4, java.sql.Date.valueOf(collect_date)); - + st.setTime(5, java.sql.Time.valueOf(collect_time)); - - st.setInt(6, down_kbits.intValue() ); - + + st.setLong(6, down_kbits.LongValue() ); + st.setInt(7, down_packages.intValue()); - - st.setInt(8, up_kbits.intValue()); - + + st.setLong(8, up_kbits.LongValue()); + st.setInt(9, up_packages.intValue()); st.setObject(10, null); st.setString(11, null); - - return st; + + return st; } } diff --git a/webservice/net-collected-data.xsd b/webservice/net-collected-data.xsd index a3f4bc60932a24c4d9dd3c88bdea6ac84316bd90..afefe000fd153bf17f9186669b759d1a496d284a 100644 --- a/webservice/net-collected-data.xsd +++ b/webservice/net-collected-data.xsd @@ -22,25 +22,25 @@ <xsd:element name="interface" type="Interface" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> - + <xsd:complexType name="Interface"> <xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="mac-address" type="MacAddress" use="required" /> </xsd:complexType> - + <xsd:simpleType name="MacAddress"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}" /> </xsd:restriction> </xsd:simpleType> - + <xsd:complexType name="BandwidthUsage"> <xsd:sequence> <xsd:element name="netuse" type="NetUse" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> - <xsd:complexType name="NetUse"> + <xsd:complexType name="NetUse"> <xsd:all> <xsd:element name="id" type="xsd:integer" minOccurs="1"/> <xsd:element name="rx" type="Rx" minOccurs="1" /> @@ -49,19 +49,19 @@ <xsd:element name="time" type="xsd:string" minOccurs="1" /> </xsd:all> </xsd:complexType> - + <xsd:complexType name="Rx"> - <xsd:all> + <xsd:all> <xsd:element name="rx-packets" type="xsd:integer" minOccurs="1" /> - <xsd:element name="rx-bytes" type="xsd:integer" minOccurs="1" /> + <xsd:element name="rx-bytes" type="xsd:long" minOccurs="1" /> </xsd:all> </xsd:complexType> - + <xsd:complexType name="Tx"> <xsd:all> <xsd:element name="tx-packets" type="xsd:integer" minOccurs="1" /> - <xsd:element name="tx-bytes" type="xsd:integer" minOccurs="1" /> + <xsd:element name="tx-bytes" type="xsd:long" minOccurs="1" /> </xsd:all> </xsd:complexType> - + </xsd:schema>