view 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 source

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;
	}
}