java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml | 13 ++ java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemOverviewAction.java | 45 ++++------ java/code/src/com/redhat/rhn/manager/system/SystemManager.java | 14 +++ java/code/webapp/WEB-INF/pages/systems/sdc/overview.jsp | 16 ++- 4 files changed, 62 insertions(+), 26 deletions(-)
New commits: commit 11e533362887710a2ab410e7b0a7393ac73fbe4c Author: Milan Zazrivec mzazrivec@redhat.com Date: Thu Apr 28 17:18:58 2011 +0200
683539 - system overview: display flex entitlement usage
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml index 88972e3..3ab72a2 100644 --- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml +++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml @@ -1816,6 +1816,19 @@ SELECT 1 </query> </mode>
+<mode name="system_channel_subscriptions"> + <query params="sid"> + select c.id, + c.name, + sc.is_fve + from rhnChannel c, + rhnServerChannel sc + where sc.server_id = :sid and + sc.channel_id = c.id + order by c.name + </query> +</mode> + <write-mode name="delete_note"> <query params="id,server_id"> delete from rhnServerNotes where id = :id and server_id = :server_id diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemOverviewAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemOverviewAction.java index 9478e0a..4fa9595 100644 --- a/java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemOverviewAction.java +++ b/java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemOverviewAction.java @@ -39,10 +39,11 @@ import org.apache.struts.action.ActionMapping;
import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.Date; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set;
import javax.servlet.http.HttpServletRequest; @@ -76,11 +77,24 @@ public class SystemOverviewAction extends RhnAction { description = new String(s.getDescription()).replaceAll("\n", "<br/>"); }
- // Secondary Channels - List secondaryChannelList = secondaryChannelList(s.getChannels(), - s.getBaseChannel()); - Collections.sort(secondaryChannelList, - new DynamicComparator("name", RequestContext.SORT_ASC)); + // System Channels + Map baseChannel = new HashMap(); + List childChannels = new ArrayList(); + DataResult channelList = SystemManager.systemChannelSubscriptions(sid); + + for (Iterator i = channelList.iterator(); i.hasNext();) { + Map ch = (HashMap) i.next(); + + if (s.getBaseChannel() != null && + ch.get("id").equals(s.getBaseChannel().getId())) { + baseChannel.put("id", ch.get("id")); + baseChannel.put("name", ch.get("name")); + baseChannel.put("is_fve", ch.get("is_fve")); + } + else { + childChannels.add(ch); + } + }
// Errata Counts int criticalErrataCount = SystemManager.countCriticalErrataForSystem(user, sid); @@ -112,7 +126,8 @@ public class SystemOverviewAction extends RhnAction { request.setAttribute("nonCriticalErrataCount", nonCriticalErrataCount); request.setAttribute("upgradablePackagesCount", upgradablePackagesCount); request.setAttribute("hasUpdates", hasUpdates); - request.setAttribute("secondaryChannels", secondaryChannelList); + request.setAttribute("baseChannel", baseChannel); + request.setAttribute("childChannels", childChannels); request.setAttribute("description", description); request.setAttribute("prefs", findUserServerPreferences(user, s)); request.setAttribute("system", s); @@ -121,22 +136,6 @@ public class SystemOverviewAction extends RhnAction { return mapping.findForward("default"); }
- protected List secondaryChannelList(Set channels, Channel baseChannel) { - List list = new ArrayList(); - - Iterator i = channels.iterator(); - - while (i.hasNext()) { - Channel c = (Channel) i.next(); - - if (!c.equals(baseChannel)) { - list.add(c); - } - } - - return list; - } - protected List findUserServerPreferences(User user, Server s) { List serverPreferenceList = new ArrayList();
diff --git a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java index 247004d..0513f61 100644 --- a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java +++ b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java @@ -192,6 +192,20 @@ public class SystemManager extends BaseManager { }
/** + * Gets the list of channels that this server is subscribed to + * @param sid The id of the server in question + * @return Returns a list of subscribed channels for this server. + */ + public static DataResult systemChannelSubscriptions(Long sid) { + SelectMode m = ModeFactory.getMode("System_queries", + "system_channel_subscriptions"); + Map params = new HashMap(); + params.put("sid", sid); + return m.execute(params); + } + + + /** * Gets the latest upgradable packages for a system * @param sid The id for the system we want packages for * @return Returns a list of the latest upgradable packages for a system diff --git a/java/code/webapp/WEB-INF/pages/systems/sdc/overview.jsp b/java/code/webapp/WEB-INF/pages/systems/sdc/overview.jsp index 1bf2471..a5e2293 100644 --- a/java/code/webapp/WEB-INF/pages/systems/sdc/overview.jsp +++ b/java/code/webapp/WEB-INF/pages/systems/sdc/overview.jsp @@ -323,10 +323,20 @@
<c:if test="${system.baseChannel != null}"> <ul class="channel-list"> - <li><a href="/rhn/channels/ChannelDetail.do?cid=${system.baseChannel.id}">${system.baseChannel.name}</a></li> + <li> + <a href="/rhn/channels/ChannelDetail.do?cid=${baseChannel['id']}">${baseChannel['name']}</a> + <c:if test="${baseChannel['is_fve'] == 'Y'}"> + (Flex) + </c:if> + </li>
- <c:forEach items="${secondaryChannels}" var="secondaryChannel"> - <li class="child-channel"><a href="/rhn/channels/ChannelDetail.do?cid=${secondaryChannel.id}">${secondaryChannel.name}</a></li> + <c:forEach items="${childChannels}" var="childChannel"> + <li class="child-channel"> + <a href="/rhn/channels/ChannelDetail.do?cid=${childChannel['id']}">${childChannel['name']}</a> + <c:if test="${childChannel['is_fve'] == 'Y'}"> + (Flex) + </c:if> + </li> </c:forEach>
</ul>