/**
* Copyright (c) Istituto Nazionale di Fisica Nucleare (INFN). 2006-2016
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.glite.security.voms.admin.view.actions.user;
import java.util.List;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import org.glite.security.voms.admin.persistence.dao.generic.DAOFactory;
import org.glite.security.voms.admin.persistence.dao.generic.RequestDAO;
import org.glite.security.voms.admin.persistence.model.AUP;
import org.glite.security.voms.admin.persistence.model.VOMSUser;
import org.glite.security.voms.admin.persistence.model.request.CertificateRequest;
import org.glite.security.voms.admin.persistence.model.request.GroupMembershipRequest;
import org.glite.security.voms.admin.persistence.model.request.MembershipRemovalRequest;
import org.glite.security.voms.admin.persistence.model.request.Request;
import org.glite.security.voms.admin.persistence.model.request.RoleMembershipRequest;
import org.glite.security.voms.admin.view.actions.BaseAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
public class UserActionSupport extends BaseAction implements
ModelDriven<VOMSUser>, Preparable, SessionAware {
public static final Logger log = LoggerFactory
.getLogger(UserActionSupport.class);
/**
*
*/
private static final long serialVersionUID = 1L;
public static String LOAD_THIS_USER_KEY = "loadUserId";
Long userId = -1L;
VOMSUser model;
protected List<Request> requests;;
protected List<GroupMembershipRequest> pendingGroupMembershipRequests;
protected List<RoleMembershipRequest> pendingRoleMembershipRequests;
protected List<CertificateRequest> pendingCertificateRequests;
protected List<MembershipRemovalRequest> pendingMembershipRemovalRequests;
protected Map<String, Object> theSession;
public VOMSUser getModel() {
return model;
}
public void prepare() throws Exception {
if (getModel() == null) {
if (getUserId() != -1){
model = userById(getUserId());
} else {
Long loadThisUserKey = (Long) theSession.get(LOAD_THIS_USER_KEY);
if (loadThisUserKey != null) {
model = userById(loadThisUserKey);
theSession.remove(LOAD_THIS_USER_KEY);
}
}
}
if (getModel() != null){
refreshPendingRequests();
}
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public List<GroupMembershipRequest> getPendingGroupMembershipRequests() {
return pendingGroupMembershipRequests;
}
public List<RoleMembershipRequest> getPendingRoleMembershipRequests() {
return pendingRoleMembershipRequests;
}
public List<CertificateRequest> getPendingCertificateRequests() {
return pendingCertificateRequests;
}
public List<MembershipRemovalRequest> getPendingMembershipRemovalRequests() {
return pendingMembershipRemovalRequests;
}
protected void refreshPendingRequests() {
RequestDAO rDAO = DAOFactory.instance().getRequestDAO();
requests = rDAO.findRequestsFromUser(model);
pendingGroupMembershipRequests = rDAO
.findPendingUserGroupMembershipRequests(model);
pendingRoleMembershipRequests = rDAO
.findPendingUserRoleMembershipRequests(model);
pendingCertificateRequests = rDAO.findPendingUserCertificateRequests(model);
pendingMembershipRemovalRequests = rDAO
.findPendingUserMembershipRemovalRequests(model);
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public List<Request> getRequests() {
return requests;
}
public void setSession(Map<String, Object> session) {
log.debug("Setting session: " + session);
this.theSession = session;
}
public boolean hasValidAUPAcceptanceRecord() {
AUP aup = DAOFactory.instance().getAUPDAO().getVOAUP();
return (getModel().getAUPAccceptanceRecord(aup.getActiveVersion())
.getValid() == true);
}
}