Mercurial Hosting > nabble
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; + } +}