6 commits - java/code
Šimon Lukašík
isimluk at fedoraproject.org
Tue Jun 12 16:14:14 UTC 2012
java/code/src/com/redhat/rhn/common/db/datasource/xml/scap_queries.xml | 156 +++++++++-
java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchAction.java | 59 +++
java/code/src/com/redhat/rhn/frontend/action/audit/scap/XccdfSearchHelper.java | 22 +
java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml | 18 +
java/code/src/com/redhat/rhn/manager/audit/ScapManager.java | 46 +-
java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp | 63 +++-
java/code/webapp/WEB-INF/pages/common/fragments/audit/scapcap-list.jspf | 11
java/code/webapp/WEB-INF/pages/systems/details/audit/xccdfdetails.jsp | 7
java/code/webapp/WEB-INF/struts-config.xml | 14
9 files changed, 363 insertions(+), 33 deletions(-)
New commits:
commit 3663910c694f999d5f466a28ffb93b749e3ce98c
Author: Simon Lukasik <slukasik at redhat.com>
Date: Fri Jun 8 14:08:52 2012 +0200
Improve SCAP search: searching by scan's result
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 81c9b3d..e51fa27 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
@@ -201,6 +201,96 @@
</query>
</mode>
+<mode name="rr_by_idents_result" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+ <query params="user_id, result">
+ SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestresult tr,
+ rhnUserServerPerms usp
+ 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 rrt.label = :result
+ ORDER BY rr.id DESC
+ </query>
+</mode>
+
+<mode name="rr_by_idents_slabel_result" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+ <query params="user_id, slabel, result">
+ SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestResult tr,
+ rhnSet st
+ 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 rrt.label = :result
+ ORDER BY rr.id DESC
+ </query>
+</mode>
+
+<mode name="rr_by_idents_start_end_result" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+ <query params="user_id, start, end, result">
+ SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestresult tr,
+ rhnUserServerPerms usp,
+ rhnActionScap ras,
+ rhnServerAction sa
+ 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.action_scap_id = ras.id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ AND rrt.label = :result
+ ORDER BY rr.id DESC
+ </query>
+</mode>
+
+<mode name="rr_by_idents_slabel_start_end_result" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+ <query params="user_id, slabel, start, end, result">
+ SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestResult tr,
+ rhnSet st,
+ rhnActionScap ras,
+ rhnServerAction sa
+ 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.action_scap_id = ras.id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ AND rrt.label = :result
+ ORDER BY rr.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
@@ -263,4 +353,11 @@
</query>
</mode>
+<mode name="result_type_labels">
+ <query>
+ SELECT label
+ FROM rhnXccdfRuleresultType
+ </query>
+</mode>
+
</datasource_modes>
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 3a80b31..7fd0410 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
@@ -19,6 +19,7 @@ import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -44,6 +45,7 @@ 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.manager.audit.ScapManager;
/**
* XccdfSearchAction
@@ -53,6 +55,7 @@ public class XccdfSearchAction extends RhnAction {
private static final String SEARCH_STRING = "search_string";
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 Logger log = Logger.getLogger(XccdfSearchAction.class);
/** {@inheritDoc} */
@@ -125,12 +128,14 @@ public class XccdfSearchAction extends RhnAction {
request.setAttribute(SEARCH_STRING, searchString);
form.set(WHERE_TO_SEARCH,
"system_list".equals(whereToSearch) ? whereToSearch : "all");
+ setupRuleResultLabelOptions(request);
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"), context);
+ getPickerDate(request, "start"), getPickerDate(request, "end"),
+ getRuleResultLabel(form), context);
request.setAttribute(RequestContext.PAGE_LIST,
results != null ? results : Collections.EMPTY_LIST);
}
@@ -180,4 +185,22 @@ public class XccdfSearchAction extends RhnAction {
DatePicker.YEAR_RANGE_NEGATIVE, "scapsearch.jsp.start_date",
"scapsearch.jsp.end_date");
}
+
+ private String getRuleResultLabel(DynaActionForm form) {
+ String resultFilter = form.getString("result_filter");
+ if (resultFilter == null ||
+ ANY_LABEL.equals(resultFilter) || "".equals(resultFilter)) {
+ return null;
+ }
+ return resultFilter;
+ }
+
+ private void setupRuleResultLabelOptions(HttpServletRequest request) {
+ List<Map<String, String>> possibleResults = ScapManager.ruleResultTypeLabels();
+ Map<String, String> anyLabel = new HashMap<String, String>();
+ anyLabel.put("label", ANY_LABEL);
+ possibleResults.add(0, anyLabel);
+
+ request.setAttribute("allResults", possibleResults);
+ }
}
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 26d7f10..53dad98 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
@@ -46,6 +46,7 @@ public class XccdfSearchHelper extends RhnAction {
* @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
* @return a list of xccdf:rule-results
* @throws MalformedURLException possibly bad configuration for search server address
@@ -53,7 +54,7 @@ public class XccdfSearchHelper extends RhnAction {
* @throws XmlRpcFault bad communication with search server
*/
public static List performSearch(String searchString, String whereToSearch,
- Date startDate, Date endDate, RequestContext context)
+ Date startDate, Date endDate, String ruleResult, RequestContext context)
throws MalformedURLException, XmlRpcException, XmlRpcFault {
ArrayList args = new ArrayList();
args.add(context.getWebSession().getId());
@@ -79,6 +80,9 @@ public class XccdfSearchHelper extends RhnAction {
params.put("start", new Timestamp(startDate.getTime()));
params.put("end", new Timestamp(endDate.getTime()));
}
+ if (ruleResult != null) {
+ params.put("result", ruleResult);
+ }
return ScapManager.ruleResultsByIdentIds(params, identIds);
}
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 f455759..1fb8e89 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
@@ -12142,6 +12142,9 @@ the <strong>Red Hat Enterprise Linux System Administration Guide.</stro
<trans-unit id="scapsearch.jsp.whatsearch.tip">
<source><strong>Examples:</strong> 'no_hashes_outside_shadow', 'CCE-14300-8'</source>
</trans-unit>
+ <trans-unit id="scapsearch.jsp.withresult">
+ <source>With Result</source>
+ </trans-unit>
<trans-unit id="scapsearch.jsp.scan_date">
<source>Scan Dates to Search</source>
</trans-unit>
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 ad90d19..dbe8120 100644
--- a/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
+++ b/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
@@ -43,7 +43,7 @@ import com.redhat.rhn.manager.rhnset.RhnSetDecl;
public class ScapManager extends BaseManager {
private static final List<String> SEARCH_TERM_PRECEDENCE = Arrays.asList(
- "slabel", "start", "end");
+ "slabel", "start", "end", "result");
/**
* Returns the given system is scap enabled.
@@ -222,6 +222,14 @@ public class ScapManager extends BaseManager {
}
/**
+ * Return list of possible results of xccdf:rule evaluation
+ * @return the result
+ */
+ public static List<Map<String, String>> ruleResultTypeLabels() {
+ return ModeFactory.getMode("scap_queries", "result_type_labels").execute();
+ }
+
+ /**
* Checks if the user has permission to see the XCCDF scan.
* @param user User being checked.
* @param testResultId ID of the XCCDF scan being checked.
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 03232c8..aa42a0e 100644
--- a/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
@@ -48,6 +48,13 @@
</span>
</td>
</tr>
+ <tr><th><bean:message key="scapsearch.jsp.withresult"/>:</th>
+ <td>
+ <html:select property="result_filter">
+ <html:options collection="allResults" property="label" labelProperty="label"/>
+ </html:select>
+ </td>
+ </tr>
<tr><th><bean:message key="systemsearch.jsp.wheretosearch"/></th>
<td>
<div style="text-align: left">
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index c2d8ec6..5002670 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -238,6 +238,7 @@
<form-property name="search_string" type="java.lang.String"/>
<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="optionScanDateSearch" type="java.lang.Boolean" />
<form-property name="start_year" type="java.lang.Integer"/>
<form-property name="start_month" type="java.lang.Integer"/>
commit 1d9be627985364fbdc99aac0ad130f034c7f3bbc
Author: Simon Lukasik <slukasik at redhat.com>
Date: Wed Jun 6 15:34:17 2012 +0200
Improve SCAP search: searching by scan date
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 b1c0383..81c9b3d 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
@@ -152,6 +152,55 @@
</query>
</mode>
+<mode name="rr_by_idents_start_end" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+ <query params="user_id, start, end">
+ SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestresult tr,
+ rhnUserServerPerms usp,
+ rhnActionScap ras,
+ rhnServerAction sa
+ 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.action_scap_id = ras.id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ ORDER BY rr.id DESC
+ </query>
+</mode>
+
+<mode name="rr_by_idents_slabel_start_end" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+ <query params="user_id, slabel, start, end">
+ SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
+ FROM rhnXccdfRuleresult rr,
+ rhnXccdfRuleresultType rrt,
+ rhnXccdfRuleIdentMap rim,
+ rhnXccdfTestResult tr,
+ rhnSet st,
+ rhnActionScap ras,
+ rhnServerAction sa
+ 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.action_scap_id = ras.id
+ AND sa.action_id = ras.action_id
+ AND sa.completion_time >= :start
+ AND sa.completion_time <= :end
+ ORDER BY rr.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 3a16605..3a80b31 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
@@ -15,7 +15,9 @@
package com.redhat.rhn.frontend.action.audit.scap;
import java.net.MalformedURLException;
+import java.util.Calendar;
import java.util.Collections;
+import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
@@ -36,6 +38,8 @@ import org.directwebremoting.util.Logger;
import redstone.xmlrpc.XmlRpcException;
import redstone.xmlrpc.XmlRpcFault;
+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;
@@ -48,6 +52,7 @@ public class XccdfSearchAction extends RhnAction {
private static final String SEARCH_STRING = "search_string";
private static final String WHERE_TO_SEARCH = "whereToSearch";
+ private static final String SCAN_DATE_SEARCH = "optionScanDateSearch";
private static Logger log = Logger.getLogger(XccdfSearchAction.class);
/** {@inheritDoc} */
@@ -120,15 +125,18 @@ public class XccdfSearchAction extends RhnAction {
request.setAttribute(SEARCH_STRING, searchString);
form.set(WHERE_TO_SEARCH,
"system_list".equals(whereToSearch) ? whereToSearch : "all");
+ DateRangePicker picker = setupDatePicker(form, request);
if (!StringUtils.isBlank(searchString)) {
+ picker.processDatePickers(getOptionScanDateSearch(request), false);
List results = XccdfSearchHelper.performSearch(searchString, whereToSearch,
- context);
+ getPickerDate(request, "start"), getPickerDate(request, "end"), context);
request.setAttribute(RequestContext.PAGE_LIST,
results != null ? results : Collections.EMPTY_LIST);
}
else {
request.setAttribute(RequestContext.PAGE_LIST, Collections.EMPTY_LIST);
+ picker.processDatePickers(false, false);
}
}
@@ -146,4 +154,30 @@ public class XccdfSearchAction extends RhnAction {
}
return forwardParams;
}
+
+ private Date getPickerDate(HttpServletRequest request, String paramName) {
+ if (getOptionScanDateSearch(request)) {
+ DatePicker dPick = (DatePicker)request.getAttribute(paramName);
+ if (dPick != null) {
+ return dPick.getDate();
+ }
+ }
+ return null;
+ }
+
+ private Boolean getOptionScanDateSearch(HttpServletRequest request) {
+ String strDateSearch = request.getParameter(SCAN_DATE_SEARCH);
+ return "on".equals(strDateSearch);
+ }
+
+ private DateRangePicker setupDatePicker(DynaActionForm form,
+ HttpServletRequest request) {
+ Calendar today = Calendar.getInstance();
+ today.setTime(new Date());
+ Calendar yesterday = (Calendar) today.clone();
+ yesterday.add(Calendar.DAY_OF_YEAR, -1);
+ return new DateRangePicker(form, request, yesterday.getTime(), today.getTime(),
+ DatePicker.YEAR_RANGE_NEGATIVE, "scapsearch.jsp.start_date",
+ "scapsearch.jsp.end_date");
+ }
}
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 d0e4a30..26d7f10 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
@@ -15,7 +15,9 @@
package com.redhat.rhn.frontend.action.audit.scap;
import java.net.MalformedURLException;
+import java.sql.Timestamp;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,6 +44,8 @@ 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 context A context of cuyrrent request
* @return a list of xccdf:rule-results
* @throws MalformedURLException possibly bad configuration for search server address
@@ -49,7 +53,7 @@ public class XccdfSearchHelper extends RhnAction {
* @throws XmlRpcFault bad communication with search server
*/
public static List performSearch(String searchString, String whereToSearch,
- RequestContext context)
+ Date startDate, Date endDate, RequestContext context)
throws MalformedURLException, XmlRpcException, XmlRpcFault {
ArrayList args = new ArrayList();
args.add(context.getWebSession().getId());
@@ -71,6 +75,10 @@ public class XccdfSearchHelper extends RhnAction {
if (SYSTEM_LIST.equals(whereToSearch)) {
params.put("slabel", SYSTEM_LIST);
}
+ if (startDate != null && endDate != null) {
+ params.put("start", new Timestamp(startDate.getTime()));
+ params.put("end", new Timestamp(endDate.getTime()));
+ }
return ScapManager.ruleResultsByIdentIds(params, identIds);
}
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 3a923eb..f455759 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
@@ -12142,6 +12142,18 @@ the <strong>Red Hat Enterprise Linux System Administration Guide.</stro
<trans-unit id="scapsearch.jsp.whatsearch.tip">
<source><strong>Examples:</strong> 'no_hashes_outside_shadow', 'CCE-14300-8'</source>
</trans-unit>
+ <trans-unit id="scapsearch.jsp.scan_date">
+ <source>Scan Dates to Search</source>
+ </trans-unit>
+ <trans-unit id="scapsearch.jsp.search_by_scan_dates">
+ <source>Search Scans Performed Between Dates</source>
+ </trans-unit>
+ <trans-unit id="scapsearch.jsp.start_date">
+ <source>Start Date</source>
+ </trans-unit>
+ <trans-unit id="scapsearch.jsp.end_date">
+ <source>End Date</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 10a0317..ad90d19 100644
--- a/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
+++ b/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
@@ -43,7 +43,7 @@ import com.redhat.rhn.manager.rhnset.RhnSetDecl;
public class ScapManager extends BaseManager {
private static final List<String> SEARCH_TERM_PRECEDENCE = Arrays.asList(
- "slabel");
+ "slabel", "start", "end");
/**
* Returns the given system is scap enabled.
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 00bbf37..03232c8 100644
--- a/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
@@ -6,6 +6,21 @@
<html:xhtml/>
<html>
+<head>
+ <script language="javascript">
+ Event.observe(window, 'load', function() {
+ scanDateSearchOptions();
+ });
+ function scanDateSearchOptions() {
+ if ($("scanDateOptionsCheckBox").checked) {
+ Element.show("scanDateOptions");
+ } else {
+ Element.hide("scanDateOptions");
+ }
+ }
+ </script>
+</head>
+
<body>
<rhn:toolbar base="h1" img="/img/rhn-icon-search.gif" imgAlt="search.alt.img">
@@ -45,6 +60,32 @@
</div>
</td>
</tr>
+ <tr><th><bean:message key="scapsearch.jsp.scan_date"/>:</th>
+ <td>
+ <html:checkbox styleId="scanDateOptionsCheckBox" property="optionScanDateSearch" onclick="javascript:scanDateSearchOptions()">
+ <label for="scanDateOptionsCheckBox">
+ <bean:message key="scapsearch.jsp.search_by_scan_dates"/>
+ </label>
+ </html:checkbox>
+ </br>
+ <div id="scanDateOptions" class="indent">
+ <table>
+ <tr><td><bean:message key="scapsearch.jsp.start_date"/>:</td>
+ <td><jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
+ <jsp:param name="widget" value="start"/>
+ </jsp:include>
+ </td>
+ </tr>
+ <tr><td><bean:message key="scapsearch.jsp.end_date"/>:</td>
+ <td><jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
+ <jsp:param name="widget" value="end"/>
+ </jsp:include>
+ </td>
+ <tr>
+ </table>
+ </div>
+ </td>
+ </tr>
</table>
</div> <!-- search-choices-group -->
</div> <!-- search-choices -->
@@ -66,6 +107,19 @@
<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="optionScanDateSearch" value="${param.optionScanDateSearch}"/>
+ <input type="hidden" name="start_year" value="${param.start_year}"/>
+ <input type="hidden" name="start_month" value="${param.start_month}"/>
+ <input type="hidden" name="start_day" value="${param.start_day}"/>
+ <input type="hidden" name="start_hour" value="${param.start_hour}"/>
+ <input type="hidden" name="start_minute" value="${param.start_minute}"/>
+ <input type="hidden" name="start_am_pm" value="${param.start_am_pm}"/>
+ <input type="hidden" name="end_year" value="${param.end_year}"/>
+ <input type="hidden" name="end_month" value="${param.end_month}"/>
+ <input type="hidden" name="end_day" value="${param.end_day}"/>
+ <input type="hidden" name="end_hour" value="${param.end_hour}"/>
+ <input type="hidden" name="end_minute" value="${param.end_minute}"/>
+ <input type="hidden" name="end_am_pm" value="${param.end_am_pm}"/>
</rl:listset>
</c:if>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index ac1e0fa..c2d8ec6 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -238,6 +238,19 @@
<form-property name="search_string" type="java.lang.String"/>
<form-property name="whereToSearch" type="java.lang.String"/>
<form-property name="submitted" type="java.lang.Boolean" />
+ <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"/>
+ <form-property name="start_day" type="java.lang.Integer"/>
+ <form-property name="start_hour" type="java.lang.Integer"/>
+ <form-property name="start_minute" type="java.lang.Integer"/>
+ <form-property name="start_am_pm" type="java.lang.Integer"/>
+ <form-property name="end_year" type="java.lang.Integer"/>
+ <form-property name="end_month" type="java.lang.Integer"/>
+ <form-property name="end_day" type="java.lang.Integer"/>
+ <form-property name="end_hour" type="java.lang.Integer"/>
+ <form-property name="end_minute" type="java.lang.Integer"/>
+ <form-property name="end_am_pm" type="java.lang.Integer"/>
</form-bean>
<form-bean name="errataSearchForm"
type="com.redhat.rhn.frontend.struts.ScrubbingDynaActionForm">
commit 0b73cf56be459798a650ad89eba531f3873f239a
Author: Simon Lukasik <slukasik at redhat.com>
Date: Thu Jun 7 18:36:39 2012 +0200
Bind named query dynamically.
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 592cd8d..b1c0383 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
@@ -113,7 +113,9 @@
</query>
</mode>
-<mode name="ruleresults_by_idents" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+<!-- Queries starting with rr_by_idents are binded dynamically
+ in ScapManager.ruleResultsByIdents() method. -->
+<mode name="rr_by_idents" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
<query params="user_id">
SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
FROM rhnXccdfRuleresult rr,
@@ -131,8 +133,8 @@
</query>
</mode>
-<mode name="ruleresults_by_idents_for_ssm" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
- <query params="user_id">
+<mode name="rr_by_idents_slabel" class="com.redhat.rhn.frontend.dto.XccdfRuleResultDto">
+ <query params="user_id, slabel">
SELECT DISTINCT rr.id, rrt.label, rr.testresult_id AS test_result_id
FROM rhnXccdfRuleresult rr,
rhnXccdfRuleresultType rrt,
@@ -145,7 +147,7 @@
AND tr.id = testresult_id
AND tr.server_id = st.element
AND st.user_id = :user_id
- AND st.label = 'system_list'
+ AND st.label = :slabel
ORDER BY rr.id DESC
</query>
</mode>
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 5b16d8d..d0e4a30 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
@@ -16,6 +16,7 @@ package com.redhat.rhn.frontend.action.audit.scap;
import java.net.MalformedURLException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -65,11 +66,12 @@ public class XccdfSearchHelper extends RhnAction {
identIds.add(id);
}
+ Map params = new HashMap<String, Object>();
+ params.put("user_id", context.getCurrentUser().getId());
if (SYSTEM_LIST.equals(whereToSearch)) {
- return ScapManager.ruleResultsByIdentIdsForSsm(context.getCurrentUser(),
- identIds);
+ params.put("slabel", SYSTEM_LIST);
}
- return ScapManager.ruleResultsByIdentIds(context.getCurrentUser(), identIds);
+ return ScapManager.ruleResultsByIdentIds(params, identIds);
}
private static String preprocessSearchString(String searchString) {
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 46cc269..10a0317 100644
--- a/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
+++ b/java/code/src/com/redhat/rhn/manager/audit/ScapManager.java
@@ -15,6 +15,7 @@
package com.redhat.rhn.manager.audit;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -41,6 +42,9 @@ import com.redhat.rhn.manager.rhnset.RhnSetDecl;
*/
public class ScapManager extends BaseManager {
+ private static final List<String> SEARCH_TERM_PRECEDENCE = Arrays.asList(
+ "slabel");
+
/**
* Returns the given system is scap enabled.
* @param server The system for which to seach scap capability
@@ -131,33 +135,21 @@ public class ScapManager extends BaseManager {
/**
* Get xccdf:rule-results by ident's ids
- * @param user attempting to view results
+ * @param inParams direct parameters for query.
+ * user_id is the only compulsory
* @param identIds list of xccdf:ident ids
* @return the result
*/
- public static List<XccdfRuleResultDto> ruleResultsByIdentIds(User user,
+ public static List<XccdfRuleResultDto> ruleResultsByIdentIds(Map inParams,
List<Long> identIds) {
- SelectMode m = ModeFactory.getMode("scap_queries",
- "ruleresults_by_idents");
- HashMap params = new HashMap();
- params.put("user_id", user.getId());
- return m.execute(params, identIds);
- }
-
- /**
- * Get xccdf:rule-results by ident's ids, but only those in relation
- * with some of the SSM systems.
- * @param user requesting results
- * @param identIds list of xccdf:ident ids
- * @return the result
- */
- public static List<XccdfRuleResultDto> ruleResultsByIdentIdsForSsm(
- User user, List<Long> identIds) {
- SelectMode m = ModeFactory.getMode("scap_queries",
- "ruleresults_by_idents_for_ssm");
- HashMap params = new HashMap();
- params.put("user_id", user.getId());
- return m.execute(params, identIds);
+ String modeName = "rr_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);
}
/**
commit 1491980408f824b50c5c9d43d0017376c9839a6d
Author: Simon Lukasik <slukasik at redhat.com>
Date: Wed Jun 6 13:34:33 2012 +0200
Add a link for easy scan reschedule.
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 04feaed..3a923eb 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
@@ -12064,6 +12064,9 @@ the <strong>Red Hat Enterprise Linux System Administration Guide.</stro
<trans-unit id="system.audit.xccdfdetails.jsp.unknown">
<source>Unknown</source>
</trans-unit>
+ <trans-unit id="system.audit.xccdfdetails.jsp.reschedule">
+ <source>reschedule</source>
+ </trans-unit>
</group>
<group>
diff --git a/java/code/webapp/WEB-INF/pages/systems/details/audit/xccdfdetails.jsp b/java/code/webapp/WEB-INF/pages/systems/details/audit/xccdfdetails.jsp
index b017e65..6248806 100644
--- a/java/code/webapp/WEB-INF/pages/systems/details/audit/xccdfdetails.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/details/audit/xccdfdetails.jsp
@@ -12,6 +12,13 @@
<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
+<div class="toolbar">
+ <a href="/rhn/systems/details/audit/ScheduleXccdf.do?sid=${param.sid}&path=${testResult.scapActionDetails.path}¶ms=${testResult.scapActionDetails.parametersContents}">
+ <img src="/img/restart.png" alt="<bean:message key="system.audit.xccdfdetails.jsp.reschedule"/>"/>
+ <bean:message key="system.audit.xccdfdetails.jsp.reschedule"/>
+ </a>
+</div>
+
<h2><bean:message key="system.audit.xccdfdetails.jsp.header"/></h2>
<rhn:csrf/>
commit 181a5596de7bb0bee22d9a15f98376f2fe940dd9
Author: Simon Lukasik <slukasik at redhat.com>
Date: Tue Jun 5 16:42:20 2012 +0200
Forward main-form variables when going through system list
On the page, there are 2 forms -- the first for user's input,
the other is a listhelper. When going through list, the second
form must not neglect user's input.
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/audit/scapcap-list.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/audit/scapcap-list.jspf
index 7fc31e8..4834614 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/audit/scapcap-list.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/audit/scapcap-list.jspf
@@ -22,4 +22,15 @@
</c:choose>
</rl:column>
</rl:list>
+
+ <input type="hidden" name="submitted" value="true"/>
+ <input type="hidden" name="params" value="${param.params}"/>
+ <input type="hidden" name="path" value="${param.path}"/>
+ <input type="hidden" name="use_date" value="true"/>
+ <input type="hidden" name="date_year" value="${param.date_year}"/>
+ <input type="hidden" name="date_month" value="${param.date_month}"/>
+ <input type="hidden" name="date_day" value="${param.date_day}"/>
+ <input type="hidden" name="date_hour" value="${param.date_hour}"/>
+ <input type="hidden" name="date_minute" value="${param.date_minute}"/>
+ <input type="hidden" name="date_am_pm" value="${param.date_am_pm}"/>
</rl:listset>
commit 4f114c64f118dd85433d6fff57e8667c2a2cb8d5
Author: Simon Lukasik <slukasik at redhat.com>
Date: Tue Jun 5 16:18:02 2012 +0200
Fix incorrect variable reference.
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 55d85fe..00bbf37 100644
--- a/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/scap/xccdfsearch.jsp
@@ -65,7 +65,7 @@
<!-- 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="${whereToSearch}"/>
+ <input type="hidden" name="whereToSearch" value="${param.whereToSearch}"/>
</rl:listset>
</c:if>
More information about the spacewalk-commits
mailing list