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 {
logger.log(Level.SEVERE, "Can't establish Oracle Driver", e);
throw e;
}
logger.log(Level.INFO, "Oracle JDBC Driver Registered!");
// logger.log(Level.INFO, "Oracle JDBC Driver Registered!");
try {
connection = DriverManager.getConnection(
......
......@@ -6,8 +6,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Date;
import java.util.Calendar;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
......@@ -16,11 +15,10 @@ import java.util.logging.Logger;
public class PsqlConnection {
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 updateQuery;
private final String userTable = "user_info";
private Date lastUpdate;
private Logger logger;
......@@ -35,7 +33,7 @@ public class PsqlConnection {
logger.log(Level.SEVERE, "Can't establish PosgreSQL Driver", e);
System.exit(0);
}
logger.log(Level.INFO, "PostgreSQL JDBC Driver Registered!");
// logger.log(Level.INFO, "PostgreSQL JDBC Driver Registered!");
try {
connection = DriverManager.getConnection(
......@@ -69,7 +67,8 @@ public class PsqlConnection {
if (results != null) {
while (results.next()) {
String username = results.getString("username");
dmUsers.put(username, username);
Timestamp lastUpdate = results.getTimestamp("last_update");
dmUsers.put(username, lastUpdate);
}
results.close();
}
......@@ -82,83 +81,23 @@ public class PsqlConnection {
// prepare statements
try {
insertQuery = connection.prepareStatement ("INSERT INTO user_info (username, first_name, last_name, middle_name, email, badge) VALUES (?, ?, ?, ?, ?, ?)");
updateQuery = connection.prepareStatement ("UPDATE user_info SET email = ?, last_name = ? WHERE username = ?");
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 = ?, last_update = ? WHERE username = ?");
} catch (SQLException ex) {
logger.log(Level.SEVERE, "Can't get peaparedStatement from connection ", 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) {
return dmUsers.containsKey(username);
}
Date getLastUpdate() {
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) {
void addUser(DmUser dmuser, Timestamp currentTime) {
try {
insertQuery.setString(1, dmuser.username);
insertQuery.setString(2, dmuser.firstName);
......@@ -166,17 +105,20 @@ public class PsqlConnection {
insertQuery.setString(4, dmuser.middleName);
insertQuery.setString(5, dmuser.email);
insertQuery.setString(6, dmuser.badge);
insertQuery.setBoolean(7, false);
insertQuery.setTimestamp(8, currentTime);
insertQuery.execute();
} catch (SQLException ex) {
logger.log(Level.SEVERE, "can't execute query to add user ", ex);
}
}
void updateUser(DmUser dmuser) {
void updateUser(DmUser dmuser, Timestamp currentTime) {
try {
updateQuery.setString(1, dmuser.email);
updateQuery.setString(2, dmuser.lastName);
updateQuery.setString(3, dmuser.username);
updateQuery.setTimestamp(3, currentTime);
updateQuery.setString(4, dmuser.username);
updateQuery.executeUpdate();
} catch (SQLException ex) {
logger.log(Level.SEVERE, "can't execute query to update user", ex);
......
......@@ -5,7 +5,7 @@ import java.io.InputStream;
import java.io.FileInputStream;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Properties;
import java.util.logging.FileHandler;
import java.util.logging.Level;
......@@ -98,7 +98,6 @@ public class Synchronizer {
}
private void connectAndInit() {
// lConnection.connect();
try {
pConnection.connect(config);
}
......@@ -123,7 +122,8 @@ public class Synchronizer {
}
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();
try {
ResultSet results = oConnection.getUsers(config.getProperty("oracle.database.table"));
......@@ -131,12 +131,13 @@ public class Synchronizer {
String badge = results.getString("BADGE_NO");
String username = config.getProperty("user.userid.prefix") + badge;
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
dmuser.email = results.getString("EMAIL");
dmuser.username = username;
dmuser.lastName = results.getString("LAST_NAME");
pConnection.updateUser(dmuser);
pConnection.updateUser(dmuser, current);
dmuser.clear();
}
} else {
......@@ -147,12 +148,11 @@ public class Synchronizer {
dmuser.lastName = results.getString("LAST_NAME");
dmuser.middleName = results.getString("MIDDLE_NAME");
dmuser.username = username;
pConnection.addUser(dmuser);
pConnection.addUser(dmuser, current);
dmuser.clear();
}
}
pConnection.setLastUpdate();
} catch (SQLException ex) {
} catch (SQLException ex) {
logger.log(Level.SEVERE, "table processing error ", ex);
}
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