From 3448e32142f8add926f42f4d13d13fb7764e991d Mon Sep 17 00:00:00 2001
From: Edileuton Henrique de Oliveira <eho09@c3sl.ufpr.br>
Date: Mon, 24 Jun 2013 14:23:24 -0300
Subject: [PATCH] webservice: Add createUserHistoryStatement() function
 Signed-off-by: Edileuton Henrique de Oliveira <eho09@c3sl.ufpr.br>

---
 webservice/DataSID.java | 112 +++++++++++++++++++++++++++-------------
 1 file changed, 75 insertions(+), 37 deletions(-)

diff --git a/webservice/DataSID.java b/webservice/DataSID.java
index 80fca22..d13ed3c 100644
--- a/webservice/DataSID.java
+++ b/webservice/DataSID.java
@@ -44,6 +44,7 @@ public class DataSID {
 
     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 File XML_INVENTORY_SCHEMA = new File("/home/datasid/apache-tomcat/webapps/axis2/WEB-INF/collected-data.xsd");
 	private static final File XML_NET_USAGE_SCHEMA = new File("/home/datasid/apache-tomcat/webapps/axis2/WEB-INF/net-collected-data.xsd");
@@ -176,10 +177,24 @@ public class DataSID {
             // Decode the XML into a Java Object
             JAXBElement<CollectedData> element = (JAXBElement<CollectedData>) unmarshaller.unmarshal(is);
             CollectedData collected = element.getValue();
-
-            PreparedStatement st = createInventoryStatement(con, collected);
+			// 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();
 
+			List<User> users = collected.getUserHistory().getUser();
+			String superid = collected.getTelecentroInfo().getSuperid();
+			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.executeUpdate();
+			}
             con.close();
 
             return "Success";
@@ -190,11 +205,11 @@ public class DataSID {
         }
     }
 	
-	private static PreparedStatement createInventoryStatement(Connection con, CollectedData collectedData) throws SQLException {
+	private static PreparedStatement createInventoryStatement(Connection con, CollectedData collectedData, java.sql.Date contactDate) throws SQLException {
         final String query = "INSERT INTO " + SA_INVENTORY + " " +
             "(contact_date, telecentro_id, versao, machine, machine_type, " + 
-            "admin_name, admin_phone, tl_name, " +
-            "tl_phone, state, city, " +
+            "admin_name, tl_conection, tl_name, tl_beneficiary, " +
+            "users_count, state, city, " +
             "tl_street, tl_number, zipcode, " +
             "tl_neighborhood, geolocation, mirrors_timestamp, " +
             "hd_model, hd_size, hd_used, " +
@@ -202,7 +217,7 @@ public class DataSID {
             "extra_hds, memory_size, processor, " +
             "os_type, os_distro, kernel) VALUES " +
             "(?, ?, ?, ?, ?, " +
-            "?, ?, ?, " +
+            "?, ?, ?, ?, " +
             "?, ?, ?, " +
             "?, ?, ?, " +
             "?, ?, ?, " +
@@ -219,12 +234,10 @@ public class DataSID {
         List<Disk> disks = inventory.getDisks().getDisk();
 		TeleCentroInfo teleCentroInfo = collectedData.getTelecentroInfo();
 		
-        // contact_date = current date
-        Calendar cal = Calendar.getInstance();
-        st.setDate(1, new java.sql.Date(cal.getTimeInMillis()));
+       	st.setDate(1, contactDate);
 
         // telecentro_id
-        st.setString(2, teleCentroInfo.getDatasid());
+        st.setString(2, teleCentroInfo.getSuperid());
 
         // machine
         org.postgresql.util.PGobject macaddr = new org.postgresql.util.PGobject();
@@ -244,90 +257,115 @@ public class DataSID {
 		// admin_name
 		st.setString(6, teleCentroInfo.getAdminName());
 		
-		// admin_phone
-		st.setString(7, teleCentroInfo.getAdminPhone());
+		// tl_conection
+		st.setString(7, teleCentroInfo.getTlConnection());
 		
 		// tl_name
 		st.setString(8, teleCentroInfo.getTlName());
 		
-		// tl_phone
-		st.setString(9, teleCentroInfo.getTlPhone());
+		// tl_beneficiary
+		st.setString(9, teleCentroInfo.getTlBeneficiary());
+		
+		// user_count
+		st.setInt(10, teleCentroInfo.getUserCount().intValue());
 		
 		// state
-		st.setString(10, teleCentroInfo.getState());
+		st.setString(11, teleCentroInfo.getState());
 		
 		// city
-		st.setString(11, teleCentroInfo.getCity());
+		st.setString(12, teleCentroInfo.getCity());
 		
 		// tl_street
-		st.setString(12, teleCentroInfo.getTlStreet());
+		st.setString(13, teleCentroInfo.getTlStreet());
 		
 		// tl_number
-		st.setString(13, teleCentroInfo.getTlNumber());
+		st.setString(14, teleCentroInfo.getTlNumber());
 		
 		// tl_zipcode
-		st.setString(14, teleCentroInfo.getTlZipcode());
+		st.setString(15, teleCentroInfo.getTlZipcode());
 		
 		// tl_neighborhood
-		st.setString(15, teleCentroInfo.getTlNeighborhood());
+		st.setString(16, teleCentroInfo.getTlNeighborhood());
 		
 		// geolocation
-		st.setString(16, teleCentroInfo.getGeolocation());
+		st.setString(17, teleCentroInfo.getGeolocation());
 		
 		// mirrors_timestamp
-		st.setString(17, collectedData.getMirrorsTimestamp());
+		st.setString(18, collectedData.getMirrorsTimestamp());
 		
         // hd_model
-        st.setString(18, disks.get(0).getModel());
+        st.setString(19, disks.get(0).getModel());
         
         // hd_size
-        st.setInt(19, disks.get(0).getSize().intValue());
+        st.setInt(20, disks.get(0).getSize().intValue());
 
         // hd_used
-        st.setInt(20, disks.get(0).getUsed().intValue());
+        st.setInt(21, disks.get(0).getUsed().intValue());
 
         if (disks.size() > 1) {
             // hd2_model
-            st.setString(18, disks.get(1).getModel());
+            st.setString(19, disks.get(1).getModel());
 
             // hd2_size
-            st.setInt(19, disks.get(1).getSize().intValue());
+            st.setInt(20, disks.get(1).getSize().intValue());
 
             // hd2_used
-            st.setInt(20, disks.get(1).getUsed().intValue());
+            st.setInt(21, disks.get(1).getUsed().intValue());
         }
         else {
             // hd2_model
-            st.setNull(18, Types.VARCHAR);
+            st.setNull(19, Types.VARCHAR);
 
             // hd2_size
-            st.setNull(19, Types.INTEGER);
+            st.setNull(20, Types.INTEGER);
 
             // hd2_used
-            st.setNull(20, Types.INTEGER);
+            st.setNull(21, Types.INTEGER);
         }
 
         // extra_hds
-        st.setInt(21, (disks.size() > 2) ? (disks.size() - 2) : 0);
+        st.setInt(22, (disks.size() > 2) ? (disks.size() - 2) : 0);
 
         // memory_size
-        st.setInt(22, inventory.getMemory().intValue());
+        st.setInt(23, inventory.getMemory().intValue());
 
         // processor
-        st.setString(23, inventory.getProcessor());
+        st.setString(24, inventory.getProcessor());
 
         // os_type
-        st.setString(24, inventory.getOs());
+        st.setString(25, inventory.getOs());
 
         // os_distro
-        st.setString(25, inventory.getDistro());
+        st.setString(26, inventory.getDistro());
 
         // kernel
-        st.setString(26, inventory.getKernel());
+        st.setString(27, inventory.getKernel());
 
         return st;
     }
     
+     private static PreparedStatement createUserHistoryStatement(Connection con, java.sql.Date contactDate, String m_superid, 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 " +
+            "(?, ?, ?, ?, ?, ?);";
+
+        PreparedStatement st = con.prepareStatement(query);
+        
+        st.setDate(1, contactDate);
+		// m_superid = telecentro-id
+   		st.setString(2, m_superid);
+   		
+   		st.setObject(3, macaddr);
+   		
+   		st.setString(4, name);
+   		
+   		st.setString(5, login);
+   		
+   		st.setString(6, logout);
+        
+        return st;
+    }
+    
     /**
      * Receive an XML string which has the inventory data to be parsed and
      * inserted into database. Return "Success" string if insertion operation
-- 
GitLab