diff src/nabble/modules/hacks/UserHack.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/modules/hacks/UserHack.java	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,48 @@
+package nabble.modules.hacks;
+
+import nabble.model.Db;
+import nabble.model.ExtensionFactory;
+import nabble.model.ModelHome;
+import nabble.model.User;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class UserHack {
+
+	private static final ExtensionFactory<User,UserHack> FACTORY = ModelHome.standardExtensionFactory(HacksModule.INSTANCE.getName(),User.class,UserHack.class);
+
+	public static UserHack of(User user) {
+		return user.getExtension(FACTORY);
+	}
+
+	private final User user;
+
+	public UserHack(User user) {
+		this.user = user;
+	}
+
+	private int registrationSequence = -1;
+
+	public int getRegistrationSequence() {
+		if (user.isRegistered() && registrationSequence == -1) {
+			try {
+				Connection con = user.getSite().getDb().getConnection();
+				PreparedStatement stmt = con.prepareStatement(
+					"select count(1) as n from user_ where user_id <= ?"
+				);
+				stmt.setLong(1,user.getId());
+				ResultSet rs = stmt.executeQuery();
+				rs.next();
+				registrationSequence = rs.getInt("n");
+				stmt.close();
+				con.close();
+			} catch(SQLException e) {
+				throw new RuntimeException(e);
+			}
+		}
+		return registrationSequence;
+	}
+}