package com.github.windbender;
import java.util.List;
import org.eclipse.jetty.server.session.HashedSession;
import com.github.windbender.dao.ProjectDAO;
import com.github.windbender.dao.UserDAO;
import com.github.windbender.dao.UserProjectDAO;
import com.github.windbender.domain.Project;
import com.github.windbender.domain.User;
import com.github.windbender.domain.UserProject;
public class SessionReloaderOperator implements SessionOperator {
private IterableHashSessionManager ihsm;
private UserDAO ud;
private ProjectDAO projectDAO;
private UserProjectDAO upDAO;
public SessionReloaderOperator(IterableHashSessionManager ihsm, UserDAO ud,ProjectDAO projectDAO,UserProjectDAO upDAO ) {
this.ihsm = ihsm;
this.ud = ud;
this.projectDAO = projectDAO;
this.upDAO = upDAO;
}
public void reloadSessionForUser(User findUser) {
ihsm.operateOn(this, findUser);
}
@Override
public void operate(HashedSession session, User findUser) {
User u = (User) session.getAttribute("user");
if(u == null) return;
if(u.getId() == findUser.getId()) {
reloadSessionOnFoundSession(session, findUser);
}
}
private void reloadSessionOnFoundSession(HashedSession sess, User p) {
User u = this.ud.findById(p.getId());
sess.setAttribute("user", u);
List<Project> primaryAdminProjects = this.projectDAO.findByPrimaryAdmin(u);
sess.setAttribute("primary_admins", primaryAdminProjects);
List<UserProject> upl = this.upDAO.findAllByUser(u);
sess.setAttribute("user_projects", upl);
}
}