java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml | 268
++++++++++
java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchAction.java | 32
+
java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchHelper.java | 18
java/code/src/com/redhat/rhn/frontend/action/systems/audit/RuleDetailsAction.java | 2
java/code/src/com/redhat/rhn/frontend/action/systems/audit/ScapSetupAction.java | 3
java/code/src/com/redhat/rhn/frontend/action/systems/audit/XccdfDetailsAction.java | 2
java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml | 9
java/code/src/com/redhat/rhn/manager/audit/ScapManager.java | 17
java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp | 9
java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp | 32
+
java/code/webapp/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf | 9
java/code/webapp/WEB-INF/struts-config.xml | 1
12 files changed, 373 insertions(+), 29 deletions(-)
New commits:
commit cf9d299c2bb529c02cea3096b4f4b648d733919a
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Thu Jun 14 12:04:54 2012 +0200
Setup {inSSM} variable on audit pages.
Do not show 'add to ssm' link for system that is already in.
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/systems/audit/RuleDetailsAction.java
b/java/code/src/com/redhat/rhn/frontend/action/systems/audit/RuleDetailsAction.java
index ff36b53..0f6ee95 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/systems/audit/RuleDetailsAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/audit/RuleDetailsAction.java
@@ -25,6 +25,7 @@ import org.apache.struts.action.ActionMapping;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.action.systems.sdc.SdcHelper;
import com.redhat.rhn.frontend.dto.XccdfRuleResultDto;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
@@ -63,6 +64,7 @@ public class RuleDetailsAction extends RhnAction implements Listable {
request.setAttribute(ListTagHelper.PARENT_URL,
request.getRequestURI() + "?sid=" + sid +
"&rrid=" + ruleResultId);
+ SdcHelper.ssmCheck(request, sid, user);
return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
}
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/systems/audit/ScapSetupAction.java
b/java/code/src/com/redhat/rhn/frontend/action/systems/audit/ScapSetupAction.java
index 31fb82c..263706a 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/systems/audit/ScapSetupAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/audit/ScapSetupAction.java
@@ -16,6 +16,7 @@ package com.redhat.rhn.frontend.action.systems.audit;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.action.systems.sdc.SdcHelper;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.manager.audit.ScapManager;
@@ -36,5 +37,7 @@ public abstract class ScapSetupAction extends RhnAction {
boolean enabled = ScapManager.isScapEnabled(server, user);
context.getRequest().setAttribute(SCAP_ENABLED, enabled);
context.getRequest().setAttribute(REQUIRED_PKG, SPACEWALK_OSCAP);
+
+ SdcHelper.ssmCheck(context.getRequest(), server.getId(), user);
}
}
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/systems/audit/XccdfDetailsAction.java
b/java/code/src/com/redhat/rhn/frontend/action/systems/audit/XccdfDetailsAction.java
index 7475768..35618c0 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/systems/audit/XccdfDetailsAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/audit/XccdfDetailsAction.java
@@ -27,6 +27,7 @@ import com.redhat.rhn.domain.audit.ScapFactory;
import com.redhat.rhn.domain.audit.XccdfTestResult;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.action.systems.sdc.SdcHelper;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.frontend.struts.RhnHelper;
@@ -64,6 +65,7 @@ public class XccdfDetailsAction extends RhnAction implements Listable {
request.setAttribute(ListTagHelper.PARENT_URL,
request.getRequestURI() + "?sid=" + sid + "&xid="
+ xid);
+ SdcHelper.ssmCheck(request, sid, user);
return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
}
commit ec2bc0832ce4e7d2586f98c15bd9764fea6df1e7
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Thu Jun 14 11:40:40 2012 +0200
Add forgotten hidden form variable.
diff --git a/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
b/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
index 8065091..fbb6910 100644
--- a/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
@@ -137,6 +137,7 @@
<input type="hidden" name="search_string"
value="${search_string}"/>
<input type="hidden" name="whereToSearch"
value="${param.whereToSearch}"/>
<input type="hidden" name="show_as"
value="${param.show_as}"/>
+ <input type="hidden" name="result_filter"
value="{param.result_filter}"/>
<input type="hidden" name="optionScanDateSearch"
value="${param.optionScanDateSearch}"/>
<input type="hidden" name="start_year"
value="${param.start_year}"/>
<input type="hidden" name="start_month"
value="${param.start_month}"/>
commit cd01241e2832fc4749c5912573a9db82cd092096
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Jun 13 09:38:44 2012 +0200
Improve SCAP search: Return list of xccdf:TestResults-s
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
index 13d9459..53a9a35 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
@@ -295,6 +295,270 @@
</query>
</mode>
+<mode name="tr_by_idents"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestresult tr,
+ rhnUserServerPerms usp,
+ rhnXccdfProfile xp,
+ rhnServer s,
+ rhnActionScap ras,
+ rhnServerAction sa
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND tr.id = rr.testresult_id
+ AND tr.server_id = usp.server_id
+ AND usp.user_id = :user_id
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND sa.action_id = ras.action_id
+ AND tr.server_id = sa.server_id
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
+<mode name="tr_by_idents_slabel"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id, slabel">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestResult tr,
+ rhnSet st,
+ rhnXccdfProfile xp,
+ rhnServer s,
+ rhnActionScap ras,
+ rhnServerAction sa
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND tr.id = testresult_id
+ AND tr.server_id = st.element
+ AND st.user_id = :user_id
+ AND st.label = :slabel
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND tr.server_id = sa.server_id
+ AND sa.action_id = ras.action_id
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
+<mode name="tr_by_idents_start_end"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id, start, end">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestresult tr,
+ rhnUserServerPerms usp,
+ rhnActionScap ras,
+ rhnServerAction sa,
+ rhnXccdfProfile xp,
+ rhnServer s
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND tr.id = rr.testresult_id
+ AND tr.server_id = usp.server_id
+ AND usp.user_id = :user_id
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND tr.server_id = sa.server_id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
+<mode name="tr_by_idents_slabel_start_end"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id, slabel, start, end">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestResult tr,
+ rhnSet st,
+ rhnActionScap ras,
+ rhnServerAction sa,
+ rhnXccdfProfile xp,
+ rhnServer s
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND tr.id = testresult_id
+ AND tr.server_id = st.element
+ AND st.user_id = :user_id
+ AND st.label = :slabel
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND tr.server_id = sa.server_id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
+<mode name="tr_by_idents_result"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id, result">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestresult tr,
+ rhnUserServerPerms usp,
+ rhnActionScap ras,
+ rhnServerAction sa,
+ rhnXccdfProfile xp,
+ rhnServer s
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND rr.result_id = rrt.id
+ AND tr.id = rr.testresult_id
+ AND tr.server_id = usp.server_id
+ AND usp.user_id = :user_id
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND tr.server_id = sa.server_id
+ AND sa.action_id = ras.action_id
+ AND rrt.label = :result
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
+<mode name="tr_by_idents_slabel_result"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id, slabel, result">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestResult tr,
+ rhnSet st,
+ rhnActionScap ras,
+ rhnServerAction sa,
+ rhnXccdfProfile xp,
+ rhnServer s
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND rr.result_id = rrt.id
+ AND tr.id = testresult_id
+ AND tr.server_id = st.element
+ AND st.user_id = :user_id
+ AND st.label = :slabel
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND tr.server_id = sa.server_id
+ AND sa.action_id = ras.action_id
+ AND rrt.label = :result
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
+<mode name="tr_by_idents_start_end_result"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id, start, end, result">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestresult tr,
+ rhnUserServerPerms usp,
+ rhnActionScap ras,
+ rhnServerAction sa,
+ rhnXccdfProfile xp,
+ rhnServer s
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND rr.result_id = rrt.id
+ AND tr.id = rr.testresult_id
+ AND tr.server_id = usp.server_id
+ AND usp.user_id = :user_id
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND tr.server_id = sa.server_id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ AND rrt.label = :result
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
+<mode name="tr_by_idents_slabel_start_end_result"
class="com.redhat.rhn.frontend.dto.XccdfTestResultDto">
+ <elaborator name="testresult_counts"/>
+ <query params="user_id, slabel, start, end, result">
+ SELECT DISTINCT tr.id AS xid,
+ xp.identifier AS profile,
+ tr.server_id as sid,
+ s.name as server_name,
+ sa.completion_time AS completed
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestResult tr,
+ rhnSet st,
+ rhnActionScap ras,
+ rhnServerAction sa,
+ rhnXccdfProfile xp,
+ rhnServer s
+ WHERE rim.ident_id IN (%s)
+ AND rim.rresult_id = rr.id
+ AND rr.result_id = rrt.id
+ AND tr.id = testresult_id
+ AND tr.server_id = st.element
+ AND st.user_id = :user_id
+ AND st.label = :slabel
+ AND tr.profile_id = xp.id
+ AND tr.server_id = s.id
+ AND tr.action_scap_id = ras.id
+ AND tr.server_id = sa.server_id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ AND rrt.label = :result
+ ORDER BY tr.id DESC
+ </query>
+</mode>
+
<mode name="idents_per_ruleresult"
class="com.redhat.rhn.frontend.dto.XccdfIdentDto">
<query params="rr_id">
SELECT xi.id, xi.identifier, xis.system
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchAction.java
b/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchAction.java
index 7fd0410..9c09ce7 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchAction.java
@@ -39,12 +39,14 @@ import org.directwebremoting.util.Logger;
import redstone.xmlrpc.XmlRpcException;
import redstone.xmlrpc.XmlRpcFault;
+import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.util.DatePicker;
import com.redhat.rhn.frontend.action.common.DateRangePicker;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.frontend.struts.RhnHelper;
import com.redhat.rhn.frontend.taglibs.list.ListTagHelper;
+import com.redhat.rhn.frontend.taglibs.list.TagHelper;
import com.redhat.rhn.manager.audit.ScapManager;
/**
@@ -56,6 +58,9 @@ public class XccdfSearchAction extends RhnAction {
private static final String WHERE_TO_SEARCH = "whereToSearch";
private static final String SCAN_DATE_SEARCH = "optionScanDateSearch";
private static final String ANY_LABEL = "any";
+ private static final String SHOW_AS = "show_as";
+ private static final String TESTRESULT_ID = "tr";
+ private static final String RULERESULT_ID = "rr";
private static Logger log = Logger.getLogger(XccdfSearchAction.class);
/** {@inheritDoc} */
@@ -129,15 +134,21 @@ public class XccdfSearchAction extends RhnAction {
form.set(WHERE_TO_SEARCH,
"system_list".equals(whereToSearch) ? whereToSearch :
"all");
setupRuleResultLabelOptions(request);
+ setupShowAsOption(form);
DateRangePicker picker = setupDatePicker(form, request);
if (!StringUtils.isBlank(searchString)) {
picker.processDatePickers(getOptionScanDateSearch(request), false);
- List results = XccdfSearchHelper.performSearch(searchString, whereToSearch,
- getPickerDate(request, "start"), getPickerDate(request,
"end"),
- getRuleResultLabel(form), context);
+ DataResult results = XccdfSearchHelper.performSearch(searchString,
+ whereToSearch, getPickerDate(request, "start"),
+ getPickerDate(request, "end"), getRuleResultLabel(form),
+ isTestestResultRequested(form), context);
request.setAttribute(RequestContext.PAGE_LIST,
results != null ? results : Collections.EMPTY_LIST);
+ if (isTestestResultRequested(form) && results != null) {
+ TagHelper.bindElaboratorTo("searchResults",
results.getElaborator(),
+ request);
+ }
}
else {
request.setAttribute(RequestContext.PAGE_LIST, Collections.EMPTY_LIST);
@@ -186,6 +197,21 @@ public class XccdfSearchAction extends RhnAction {
"scapsearch.jsp.end_date");
}
+ private boolean isTestestResultRequested(DynaActionForm form) {
+ String showAs = form.getString(SHOW_AS);
+ if (showAs == null ||
+ RULERESULT_ID.equals(showAs) || "".equals(showAs)) {
+ return false;
+ }
+ return true;
+ }
+
+ private void setupShowAsOption(DynaActionForm form) {
+ String showAs = form.getString(SHOW_AS);
+ form.set(SHOW_AS,
+ TESTRESULT_ID.equals(showAs) ? showAs : RULERESULT_ID);
+ }
+
private String getRuleResultLabel(DynaActionForm form) {
String resultFilter = form.getString("result_filter");
if (resultFilter == null ||
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchHelper.java
b/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchHelper.java
index 53dad98..a13dff6 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchHelper.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchHelper.java
@@ -27,6 +27,7 @@ import redstone.xmlrpc.XmlRpcException;
import redstone.xmlrpc.XmlRpcFault;
import com.redhat.rhn.common.conf.ConfigDefaults;
+import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.manager.audit.ScapManager;
@@ -44,17 +45,20 @@ public class XccdfSearchHelper extends RhnAction {
* Perform search over XCCDF
* @param searchString A string to search within xccdf:Rules
* @param whereToSearch Where to search for scans, either ssm or all machines
- * @param startDate search scans performed after startDate (null to ommit)
- * @param endDate search scans performed before endDate (null to ommit)
- * @param ruleResult search rules with given ruleresult label (null to ommit)
- * @param context A context of cuyrrent request
+ * @param startDate search scans performed after startDate (null to omit)
+ * @param endDate search scans performed before endDate (null to omit)
+ * @param ruleResult search rules with given ruleresult label (null to omit)
+ * @param returnTestResults return results as list of TestResult (true),
+ * or RuleResults (false)
+ * @param context A context of current request
* @return a list of xccdf:rule-results
* @throws MalformedURLException possibly bad configuration for search server
address
* @throws XmlRpcException in the case of a serialization failure
* @throws XmlRpcFault bad communication with search server
*/
- public static List performSearch(String searchString, String whereToSearch,
- Date startDate, Date endDate, String ruleResult, RequestContext context)
+ public static DataResult performSearch(String searchString, String whereToSearch,
+ Date startDate, Date endDate, String ruleResult, boolean returnTestResults,
+ RequestContext context)
throws MalformedURLException, XmlRpcException, XmlRpcFault {
ArrayList args = new ArrayList();
args.add(context.getWebSession().getId());
@@ -83,7 +87,7 @@ public class XccdfSearchHelper extends RhnAction {
if (ruleResult != null) {
params.put("result", ruleResult);
}
- return ScapManager.ruleResultsByIdentIds(params, identIds);
+ return ScapManager.searchByIdentIds(params, identIds, returnTestResults);
}
private static String preprocessSearchString(String searchString) {
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
index 1fb8e89..8c8a3a7 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
@@ -12157,6 +12157,15 @@ the <strong>Red Hat Enterprise Linux System
Administration Guide.</stro
<trans-unit id="scapsearch.jsp.end_date">
<source>End Date</source>
</trans-unit>
+ <trans-unit id="scapsearch.jsp.show_as">
+ <source>Show Search Result As</source>
+ </trans-unit>
+ <trans-unit id="scapsearch.jsp.list_rr">
+ <source>List of XCCDF Rule Results</source>
+ </trans-unit>
+ <trans-unit id="scapsearch.jsp.list_tr">
+ <source>List of XCCDF Scans</source>
+ </trans-unit>
</group>
<!-- Action common -->
diff --git a/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
b/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
index dbe8120..3c71e14 100644
--- a/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
+++ b/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
@@ -134,22 +134,29 @@ public class ScapManager extends BaseManager {
}
/**
- * Get xccdf:rule-results by ident's ids
+ * Get xccdf:rule-result-s or xccdf:TestResult-s by ident's ids
* @param inParams direct parameters for query.
* user_id is the only compulsory
* @param identIds list of xccdf:ident ids
+ * @param returnTestResults what to return
+ * (true - list of testresults, false - list of rule-results)
* @return the result
*/
- public static List<XccdfRuleResultDto> ruleResultsByIdentIds(Map inParams,
- List<Long> identIds) {
- String modeName = "rr_by_idents";
+ public static DataResult searchByIdentIds(Map inParams,
+ List<Long> identIds, boolean returnTestResults) {
+ String modeName = (returnTestResults ? "t" : "r") +
"r_by_idents";
for (String term : SEARCH_TERM_PRECEDENCE) {
if (inParams.containsKey(term)) {
modeName += "_" + term;
}
}
SelectMode m = ModeFactory.getMode("scap_queries", modeName);
- return m.execute(inParams, identIds);
+ DataResult dr = m.execute(inParams, identIds);
+ if (returnTestResults) {
+ dr.setTotalSize(dr.size());
+ dr = processPageControl(dr, null, new HashMap());
+ }
+ return dr;
}
/**
diff --git a/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
b/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
index aa42a0e..8065091 100644
--- a/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
@@ -93,6 +93,18 @@
</div>
</td>
</tr>
+ <tr><th><bean:message
key="scapsearch.jsp.show_as"/>:</th>
+ <td>
+ <div style="text-align: left">
+ <html:radio property="show_as" value="rr"
styleId="show_as-rr"/>
+ <label for="show_as-rr"><bean:message
key="scapsearch.jsp.list_rr"/></label>
+ </div>
+ <div style="text-align: left">
+ <html:radio property="show_as" value="tr"
styleId="show_as-tr"/>
+ <label for="show_as-tr"><bean:message
key="scapsearch.jsp.list_tr"/></label>
+ </div>
+ </td>
+ </tr>
</table>
</div> <!-- search-choices-group -->
</div> <!-- search-choices -->
@@ -105,15 +117,26 @@
<rl:listset name="searchSet" legend="xccdf">
<rhn:csrf/>
- <rl:list emptykey="generic.jsp.none" name="searchResults"
dataset="pageList">
- <rl:decorator name="PageSizeDecorator"/>
- <%@ include
file="/WEB-INF/pages/common/fragments/audit/rule-common-columns.jspf" %>
- </rl:list>
+ <c:choose>
+ <c:when test="${param.show_as == 'tr'}">
+ <rl:list emptykey="generic.jsp.none" name="searchResults"
dataset="pageList">
+ <%@ include
file="/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf" %>
+ </rl:list>
+ </c:when>
+
+ <c:otherwise>
+ <rl:list emptykey="generic.jsp.none" name="searchResults"
dataset="pageList">
+ <rl:decorator name="PageSizeDecorator"/>
+ <%@ include
file="/WEB-INF/pages/common/fragments/audit/rule-common-columns.jspf" %>
+ </rl:list>
+ </c:otherwise>
+ </c:choose>
<!-- there are two forms here, need to keep the formvars around for pagination
-->
<input type="hidden" name="submitted"
value="true"/>
<input type="hidden" name="search_string"
value="${search_string}"/>
<input type="hidden" name="whereToSearch"
value="${param.whereToSearch}"/>
+ <input type="hidden" name="show_as"
value="${param.show_as}"/>
<input type="hidden" name="optionScanDateSearch"
value="${param.optionScanDateSearch}"/>
<input type="hidden" name="start_year"
value="${param.start_year}"/>
<input type="hidden" name="start_month"
value="${param.start_month}"/>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml
b/java/code/webapp/WEB-INF/struts-config.xml
index 5002670..bab6c1d 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -239,6 +239,7 @@
<form-property name="whereToSearch"
type="java.lang.String"/>
<form-property name="submitted"
type="java.lang.Boolean" />
<form-property name="result_filter"
type="java.lang.String"/>
+ <form-property name="show_as"
type="java.lang.String"/>
<form-property name="optionScanDateSearch"
type="java.lang.Boolean" />
<form-property name="start_year"
type="java.lang.Integer"/>
<form-property name="start_month"
type="java.lang.Integer"/>
commit 9395a74f2fe2e4bcce2db4dca508501c2647d570
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Jun 13 12:58:19 2012 +0200
Move the listset definition out off the fragment.
diff --git a/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp
b/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp
index b57d55b..30ce4c8 100644
--- a/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp
@@ -17,7 +17,14 @@
<bean:message key="system.audit.listscap.jsp.overview"/>
</rhn:toolbar>
-<%@ include
file="/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf" %>
+<rl:listset name="groupSet" legend="xccdf">
+ <rhn:csrf />
+ <rhn:submitted />
+ <rl:list emptykey="audit.listxccdf.jsp.noscans">
+ <%@ include
file="/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf" %>
+ </rl:list>
+ <rhn:tooltip key="audit.listxccdf.jsp.tooltip"/>
+</rl:listset>
</body>
</html>
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf
b/java/code/webapp/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf
index d824c70..6d2bd37 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/audit/xccdf-easy-list.jspf
@@ -1,8 +1,3 @@
-<rl:listset name="groupSet" legend="xccdf">
- <rhn:csrf />
- <rhn:submitted />
-
- <rl:list emptykey="audit.listxccdf.jsp.noscans">
<rl:decorator name="ElaborationDecorator"/>
<rl:decorator name="PageSizeDecorator"/>
@@ -33,7 +28,3 @@
<rl:column headerkey="audit.listxccdf.jsp.satisfactionunknown">
<c:out value="${current.satisfactionUnknown}"/>
</rl:column>
- </rl:list>
-</rl:listset>
-
-<rhn:tooltip key="audit.listxccdf.jsp.tooltip"/>
commit cfb3422440554a7700c29735bede25b37b28b156
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Jun 13 13:21:20 2012 +0200
Fix flawed SQL queries.
When searching for rule-results within given dates,
correct server_id needs to be bind. Otherwise, query
can return more results than expected.
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
index e51fa27..13d9459 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml
@@ -170,6 +170,7 @@
AND usp.user_id = :user_id
AND tr.action_scap_id = ras.id
AND sa.action_id = ras.action_id
+ AND sa.server_id = tr.server_id
AND sa.completion_time >= :start
AND sa.completion_time <= :end
ORDER BY rr.id DESC
@@ -195,6 +196,7 @@
AND st.label = :slabel
AND tr.action_scap_id = ras.id
AND sa.action_id = ras.action_id
+ AND sa.server_id = tr.server_id
AND sa.completion_time >= :start
AND sa.completion_time <= :end
ORDER BY rr.id DESC
@@ -258,6 +260,7 @@
AND usp.user_id = :user_id
AND tr.action_scap_id = ras.id
AND sa.action_id = ras.action_id
+ AND sa.server_id = tr.server_id
AND sa.completion_time >= :start
AND sa.completion_time <= :end
AND rrt.label = :result
@@ -284,6 +287,7 @@
AND st.label = :slabel
AND tr.action_scap_id = ras.id
AND sa.action_id = ras.action_id
+ AND sa.server_id = tr.server_id
AND sa.completion_time >= :start
AND sa.completion_time <= :end
AND rrt.label = :result