package org.hyperic.hq.ui.action.portlet.recentlyApproved;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
import org.apache.tiles.Attribute;
import org.apache.tiles.AttributeContext;
import org.apache.tiles.context.TilesRequestContext;
import org.apache.tiles.preparer.ViewPreparer;
import org.hyperic.hq.appdef.shared.PlatformValue;
import org.hyperic.hq.bizapp.shared.AppdefBoss;
import org.hyperic.hq.bizapp.shared.AuthzBoss;
import org.hyperic.hq.measurement.MeasurementConstants;
import org.hyperic.hq.ui.Constants;
import org.hyperic.hq.ui.WebUser;
import org.hyperic.hq.ui.action.BaseActionNG;
import org.hyperic.hq.ui.server.session.DashboardConfig;
import org.hyperic.hq.ui.shared.DashboardManager;
import org.hyperic.hq.ui.util.SessionUtils;
import org.hyperic.util.config.ConfigResponse;
import org.springframework.stereotype.Component;
@Component("recentlyApprovedViewActionNG")
public class ViewActionNG extends BaseActionNG implements ViewPreparer {
private final Log log = LogFactory.getLog(ViewActionNG.class);
@Resource
private AppdefBoss appdefBoss;
@Resource
private AuthzBoss authzBoss;
@Resource
private DashboardManager dashboardManager;
public void execute(TilesRequestContext reqContext, AttributeContext attrContext) {
// TODO Auto-generated method stub
try {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
WebUser user = SessionUtils.getWebUser(session);
DashboardConfig dashConfig = dashboardManager.findDashboard((Integer) session
.getAttribute(Constants.SELECTED_DASHBOARD_ID), user, authzBoss);
ConfigResponse dashPrefs = dashConfig.getConfig();
int sessionId = user.getSessionId().intValue();
Integer range = new Integer(dashPrefs.getValue(PropertiesFormNG.RANGE));
try {
// Hard code to look for platforms created in the last two days
List<PlatformValue> platforms = appdefBoss.findRecentPlatforms(sessionId, 2 * MeasurementConstants.DAY,
range.intValue());
reqContext.getRequestScope().put("recentlyAdded", platforms );
} catch (Exception e) {
List<PlatformValue> emptyList = new ArrayList<PlatformValue>();
attrContext.putAttribute("recentlyApproved", new Attribute( emptyList ) );
log.debug("Error getting recent platforms: " + e.getMessage(), e);
}
// Store the current time in request
request.setAttribute("current", new Long(System.currentTimeMillis()));
} catch (Exception ex) {
log.error(ex);
}
}
}