Skip to content
Snippets Groups Projects
Commit 4a126a60 authored by Barbara B. Frosik's avatar Barbara B. Frosik
Browse files

changes for the user_info additional columns

parent fe83d053
No related branches found
No related tags found
No related merge requests found
...@@ -25,7 +25,7 @@ public class OracleConnection { ...@@ -25,7 +25,7 @@ public class OracleConnection {
logger.log(Level.SEVERE, "Can't establish Oracle Driver", e); logger.log(Level.SEVERE, "Can't establish Oracle Driver", e);
throw e; throw e;
} }
logger.log(Level.INFO, "Oracle JDBC Driver Registered!"); // logger.log(Level.INFO, "Oracle JDBC Driver Registered!");
try { try {
connection = DriverManager.getConnection( connection = DriverManager.getConnection(
......
...@@ -6,8 +6,7 @@ import java.sql.PreparedStatement; ...@@ -6,8 +6,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.sql.Date; import java.sql.Timestamp;
import java.util.Calendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
...@@ -16,11 +15,10 @@ import java.util.logging.Logger; ...@@ -16,11 +15,10 @@ import java.util.logging.Logger;
public class PsqlConnection { public class PsqlConnection {
Connection connection = null; Connection connection = null;
private final Map<String, String> dmUsers = new HashMap<>(); // <username, username> private final Map<String, Timestamp> dmUsers = new HashMap<>(); // <username, lastUpdate>
private PreparedStatement insertQuery; private PreparedStatement insertQuery;
private PreparedStatement updateQuery; private PreparedStatement updateQuery;
private final String userTable = "user_info"; private final String userTable = "user_info";
private Date lastUpdate;
private Logger logger; private Logger logger;
...@@ -35,7 +33,7 @@ public class PsqlConnection { ...@@ -35,7 +33,7 @@ public class PsqlConnection {
logger.log(Level.SEVERE, "Can't establish PosgreSQL Driver", e); logger.log(Level.SEVERE, "Can't establish PosgreSQL Driver", e);
System.exit(0); System.exit(0);
} }
logger.log(Level.INFO, "PostgreSQL JDBC Driver Registered!"); // logger.log(Level.INFO, "PostgreSQL JDBC Driver Registered!");
try { try {
connection = DriverManager.getConnection( connection = DriverManager.getConnection(
...@@ -69,7 +67,8 @@ public class PsqlConnection { ...@@ -69,7 +67,8 @@ public class PsqlConnection {
if (results != null) { if (results != null) {
while (results.next()) { while (results.next()) {
String username = results.getString("username"); String username = results.getString("username");
dmUsers.put(username, username); Timestamp lastUpdate = results.getTimestamp("last_update");
dmUsers.put(username, lastUpdate);
} }
results.close(); results.close();
} }
...@@ -82,83 +81,23 @@ public class PsqlConnection { ...@@ -82,83 +81,23 @@ public class PsqlConnection {
// prepare statements // prepare statements
try { try {
insertQuery = connection.prepareStatement ("INSERT INTO user_info (username, first_name, last_name, middle_name, email, badge) VALUES (?, ?, ?, ?, ?, ?)"); insertQuery = connection.prepareStatement ("INSERT INTO user_info (username, first_name, last_name, middle_name, email, badge, is_local_user, last_update) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
updateQuery = connection.prepareStatement ("UPDATE user_info SET email = ?, last_name = ? WHERE username = ?"); updateQuery = connection.prepareStatement ("UPDATE user_info SET email = ?, last_name = ?, last_update = ? WHERE username = ?");
} catch (SQLException ex) { } catch (SQLException ex) {
logger.log(Level.SEVERE, "Can't get peaparedStatement from connection ", ex); logger.log(Level.SEVERE, "Can't get peaparedStatement from connection ", ex);
throw ex; throw ex;
} }
// get the last update
String lastUpdateTable = "users_last_update";
try {
statement = connection.createStatement();
} catch (SQLException ex) {
logger.log(Level.SEVERE, "can't create statement for postgreSQL connection");
throw ex;
}
results = null;
try {
if (statement != null) {
results = statement.executeQuery("SELECT * FROM " + lastUpdateTable + " WHERE id = 1;");
}
} catch (SQLException ex) {
logger.log(Level.WARNING, "can't execute query from {0} table", lastUpdateTable);
addLastUpdate();
}
try {
if (results != null) {
results.next();
lastUpdate = results.getDate("last_update");
results.close();
}
if (statement != null) {
statement.close();
}
} catch (SQLException ex) {
logger.log(Level.WARNING, "The table {0} is empty", lastUpdateTable);
addLastUpdate();
}
} }
protected Timestamp getUserLastUpdate(String username) {
return dmUsers.get(username);
}
boolean isUser(String username) { boolean isUser(String username) {
return dmUsers.containsKey(username); return dmUsers.containsKey(username);
} }
Date getLastUpdate() { void addUser(DmUser dmuser, Timestamp currentTime) {
return lastUpdate;
}
void addLastUpdate() {
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.set(1990, Calendar.JANUARY, 1);
try {
lastUpdate = new Date(cal.getTimeInMillis());
try (
PreparedStatement setUpdate = connection.prepareStatement("INSERT INTO users_last_update (id, last_update) VALUES (1, ?)")) {
setUpdate.setDate(1, lastUpdate);
setUpdate.executeUpdate();
}
} catch (SQLException ex) {
logger.log(Level.WARNING, "can't update last update table ", ex);
}
}
void setLastUpdate() {
java.util.Calendar cal = java.util.Calendar.getInstance();
try {
lastUpdate = new Date(cal.getTimeInMillis());
try (
PreparedStatement setUpdate = connection.prepareStatement("UPDATE users_last_update SET last_update = ?")) {
setUpdate.setDate(1, lastUpdate);
setUpdate.execute();
}
} catch (SQLException ex) {
logger.log(Level.WARNING, "can't update last update table ", ex);
}
}
void addUser(DmUser dmuser) {
try { try {
insertQuery.setString(1, dmuser.username); insertQuery.setString(1, dmuser.username);
insertQuery.setString(2, dmuser.firstName); insertQuery.setString(2, dmuser.firstName);
...@@ -166,17 +105,20 @@ public class PsqlConnection { ...@@ -166,17 +105,20 @@ public class PsqlConnection {
insertQuery.setString(4, dmuser.middleName); insertQuery.setString(4, dmuser.middleName);
insertQuery.setString(5, dmuser.email); insertQuery.setString(5, dmuser.email);
insertQuery.setString(6, dmuser.badge); insertQuery.setString(6, dmuser.badge);
insertQuery.setBoolean(7, false);
insertQuery.setTimestamp(8, currentTime);
insertQuery.execute(); insertQuery.execute();
} catch (SQLException ex) { } catch (SQLException ex) {
logger.log(Level.SEVERE, "can't execute query to add user ", ex); logger.log(Level.SEVERE, "can't execute query to add user ", ex);
} }
} }
void updateUser(DmUser dmuser) { void updateUser(DmUser dmuser, Timestamp currentTime) {
try { try {
updateQuery.setString(1, dmuser.email); updateQuery.setString(1, dmuser.email);
updateQuery.setString(2, dmuser.lastName); updateQuery.setString(2, dmuser.lastName);
updateQuery.setString(3, dmuser.username); updateQuery.setTimestamp(3, currentTime);
updateQuery.setString(4, dmuser.username);
updateQuery.executeUpdate(); updateQuery.executeUpdate();
} catch (SQLException ex) { } catch (SQLException ex) {
logger.log(Level.SEVERE, "can't execute query to update user", ex); logger.log(Level.SEVERE, "can't execute query to update user", ex);
......
...@@ -5,7 +5,7 @@ import java.io.InputStream; ...@@ -5,7 +5,7 @@ import java.io.InputStream;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Date; import java.sql.Timestamp;
import java.util.Properties; import java.util.Properties;
import java.util.logging.FileHandler; import java.util.logging.FileHandler;
import java.util.logging.Level; import java.util.logging.Level;
...@@ -98,7 +98,6 @@ public class Synchronizer { ...@@ -98,7 +98,6 @@ public class Synchronizer {
} }
private void connectAndInit() { private void connectAndInit() {
// lConnection.connect();
try { try {
pConnection.connect(config); pConnection.connect(config);
} }
...@@ -123,7 +122,8 @@ public class Synchronizer { ...@@ -123,7 +122,8 @@ public class Synchronizer {
} }
private void synchronize() { private void synchronize() {
Date lastUpdate = pConnection.getLastUpdate(); java.util.Calendar cal = java.util.Calendar.getInstance();
Timestamp current = new Timestamp(cal.getTimeInMillis());
DmUser dmuser = new DmUser(); DmUser dmuser = new DmUser();
try { try {
ResultSet results = oConnection.getUsers(config.getProperty("oracle.database.table")); ResultSet results = oConnection.getUsers(config.getProperty("oracle.database.table"));
...@@ -131,12 +131,13 @@ public class Synchronizer { ...@@ -131,12 +131,13 @@ public class Synchronizer {
String badge = results.getString("BADGE_NO"); String badge = results.getString("BADGE_NO");
String username = config.getProperty("user.userid.prefix") + badge; String username = config.getProperty("user.userid.prefix") + badge;
if (pConnection.isUser(username)) { if (pConnection.isUser(username)) {
if ((results.getDate("LAST_CHANGE_DATE") == null) || (results.getDate("LAST_CHANGE_DATE").compareTo(lastUpdate) >= 0)) { Timestamp userLastUpdate = pConnection.getUserLastUpdate(username);
if ((results.getTimestamp("LAST_CHANGE_DATE") == null) || (userLastUpdate == null) || (results.getTimestamp("LAST_CHANGE_DATE").compareTo(userLastUpdate) >= 0)) {
// update user // update user
dmuser.email = results.getString("EMAIL"); dmuser.email = results.getString("EMAIL");
dmuser.username = username; dmuser.username = username;
dmuser.lastName = results.getString("LAST_NAME"); dmuser.lastName = results.getString("LAST_NAME");
pConnection.updateUser(dmuser); pConnection.updateUser(dmuser, current);
dmuser.clear(); dmuser.clear();
} }
} else { } else {
...@@ -147,12 +148,11 @@ public class Synchronizer { ...@@ -147,12 +148,11 @@ public class Synchronizer {
dmuser.lastName = results.getString("LAST_NAME"); dmuser.lastName = results.getString("LAST_NAME");
dmuser.middleName = results.getString("MIDDLE_NAME"); dmuser.middleName = results.getString("MIDDLE_NAME");
dmuser.username = username; dmuser.username = username;
pConnection.addUser(dmuser); pConnection.addUser(dmuser, current);
dmuser.clear(); dmuser.clear();
} }
} }
pConnection.setLastUpdate(); } catch (SQLException ex) {
} catch (SQLException ex) {
logger.log(Level.SEVERE, "table processing error ", ex); logger.log(Level.SEVERE, "table processing error ", ex);
} }
finally { finally {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment