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(a)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>
Show replies by date