package org.hyperic.hq.ui.action.portlet.savedqueries; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; import javax.annotation.Resource; import javax.servlet.ServletException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.ServletActionContext; import org.apache.tiles.AttributeContext; import org.apache.tiles.context.TilesRequestContext; import org.apache.tiles.preparer.ViewPreparer; import org.hyperic.hq.appdef.shared.ServerValue; import org.hyperic.hq.bizapp.shared.AuthzBoss; import org.hyperic.hq.ui.Constants; import org.hyperic.hq.ui.StringConstants; 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.RequestUtils; import org.hyperic.util.StringUtil; import org.hyperic.util.config.ConfigResponse; import org.hyperic.util.pager.PageControl; import org.hyperic.util.pager.PageList; import org.hyperic.util.pager.Pager; import org.springframework.stereotype.Component; @Component("savedQueriesPrepareActionNG") public class PrepareActionNG extends BaseActionNG implements ViewPreparer { private final Log log = LogFactory.getLog(PrepareActionNG.class.getName()); @Resource private AuthzBoss authzBoss; @Resource private DashboardManager dashboardManager; private Pager valuePager; private static final String VALUE_PROCESSOR = "org.hyperic.hq.appdef.server.session.PagerProcessor_server"; public void execute(TilesRequestContext tilesContext, AttributeContext attributeContext) { // TODO Auto-generated method stub log.trace("getting saved charts associated with user "); WebUser user = null; try { request = ServletActionContext.getRequest(); user = RequestUtils.getWebUser(request); } catch (ServletException e) { // TODO Auto-generated catch block log.error(e,e); } if (valuePager == null) { try { valuePager = Pager.getPager(VALUE_PROCESSOR); } catch (Exception e) { // TODO Auto-generated catch block log.error(e,e); } } PageControl pc = RequestUtils.getPageControl(getServletRequest(), "ps", "pn", "so", "sc"); DashboardConfig dashConfig = dashboardManager.findDashboard((Integer) request.getSession().getAttribute( Constants.SELECTED_DASHBOARD_ID), user, authzBoss); ConfigResponse dashPrefs = dashConfig.getConfig(); List<String> chartList = StringUtil.explode(dashPrefs.getValue(Constants.USER_DASHBOARD_CHARTS), StringConstants.DASHBOARD_DELIMITER); ArrayList<KeyValuePair> charts = new ArrayList<KeyValuePair>(); PageList<KeyValuePair> newCharts = new PageList<KeyValuePair>(); for (Iterator<String> i = chartList.iterator(); i.hasNext();) { StringTokenizer st = new StringTokenizer(i.next(), ","); if (st.countTokens() >= 2) { String temp1 = st.nextToken(); String temp2 = st.nextToken(); charts.add(new KeyValuePair(temp1, temp2)); // newCharts.add(new KeyValuePair(temp1, temp1)); } } newCharts = valuePager.seek(charts, pc); // If sort descending, then reverse the list if(pc != null && pc.isDescending()) { Collections.reverse(newCharts); } request.setAttribute("charts", newCharts); request.setAttribute("chartsize", String.valueOf(charts.size())); request.setAttribute("paggingList", getPaggingList(charts.size())); } }