Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Nov 29, 2016
2 parents 770e3b3 + b769d19 commit 2c36669
Show file tree
Hide file tree
Showing 48 changed files with 2,065 additions and 1,345 deletions.
11 changes: 11 additions & 0 deletions config/sql/midpoint/3.5/h2/h2-3.5.sql
Expand Up @@ -289,6 +289,12 @@ CREATE TABLE m_audit_event (
PRIMARY KEY (id)
);

CREATE TABLE m_audit_item (
changedItemPath VARCHAR(255) NOT NULL,
record_id BIGINT NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
);

CREATE TABLE m_connector (
connectorBundle VARCHAR(255),
connectorHostRef_relation VARCHAR(157),
Expand Down Expand Up @@ -992,6 +998,11 @@ ADD CONSTRAINT fk_audit_delta
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_connector
ADD CONSTRAINT fk_connector
FOREIGN KEY (oid)
Expand Down
13 changes: 12 additions & 1 deletion config/sql/midpoint/3.5/h2/h2-upgrade-3.4-3.5.sql
Expand Up @@ -23,4 +23,15 @@ REFERENCES m_assignment;
ALTER TABLE m_focus_policy_situation
ADD CONSTRAINT fk_focus_policy_situation
FOREIGN KEY (focus_oid)
REFERENCES m_focus;
REFERENCES m_focus;

CREATE TABLE m_audit_item (
changedItemPath VARCHAR(255) NOT NULL,
record_id BIGINT NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
);

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;
14 changes: 14 additions & 0 deletions config/sql/midpoint/3.5/mysql/mysql-3.5.sql
Expand Up @@ -356,6 +356,15 @@ CREATE TABLE m_audit_event (
COLLATE utf8_bin
ENGINE = InnoDB;

CREATE TABLE m_audit_item (
changedItemPath VARCHAR(255) NOT NULL,
record_id BIGINT NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
)
DEFAULT CHARACTER SET utf8
COLLATE utf8_bin
ENGINE = InnoDB;

CREATE TABLE m_connector (
connectorBundle VARCHAR(255),
connectorHostRef_relation VARCHAR(157),
Expand Down Expand Up @@ -1184,6 +1193,11 @@ ADD CONSTRAINT fk_audit_delta
FOREIGN KEY (record_id)
REFERENCES m_audit_event (id);

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event (id);

ALTER TABLE m_connector
ADD CONSTRAINT fk_connector
FOREIGN KEY (oid)
Expand Down
16 changes: 15 additions & 1 deletion config/sql/midpoint/3.5/mysql/mysql-upgrade-3.4-3.5.sql
Expand Up @@ -32,4 +32,18 @@ REFERENCES m_assignment (id, owner_oid);
ALTER TABLE m_focus_policy_situation
ADD CONSTRAINT fk_focus_policy_situation
FOREIGN KEY (focus_oid)
REFERENCES m_focus (oid);
REFERENCES m_focus (oid);

CREATE TABLE m_audit_item (
changedItemPath VARCHAR(255) NOT NULL,
record_id BIGINT NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
)
DEFAULT CHARACTER SET utf8
COLLATE utf8_bin
ENGINE = InnoDB;

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event (id);
11 changes: 11 additions & 0 deletions config/sql/midpoint/3.5/oracle/oracle-3.5.sql
Expand Up @@ -292,6 +292,12 @@ CREATE TABLE m_audit_event (
PRIMARY KEY (id)
) INITRANS 30;

CREATE TABLE m_audit_item (
changedItemPath VARCHAR2(255 CHAR) NOT NULL,
record_id NUMBER(19, 0) NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
) INITRANS 30;

CREATE TABLE m_connector (
connectorBundle VARCHAR2(255 CHAR),
connectorHostRef_relation VARCHAR2(157 CHAR),
Expand Down Expand Up @@ -1002,6 +1008,11 @@ ADD CONSTRAINT fk_audit_delta
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_connector
ADD CONSTRAINT fk_connector
FOREIGN KEY (oid)
Expand Down
13 changes: 12 additions & 1 deletion config/sql/midpoint/3.5/oracle/oracle-upgrade-3.4-3.5.sql
Expand Up @@ -23,4 +23,15 @@ REFERENCES m_assignment;
ALTER TABLE m_focus_policy_situation
ADD CONSTRAINT fk_focus_policy_situation
FOREIGN KEY (focus_oid)
REFERENCES m_focus;
REFERENCES m_focus;

CREATE TABLE m_audit_item (
changedItemPath VARCHAR2(255 CHAR) NOT NULL,
record_id NUMBER(19, 0) NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
) INITRANS 30;

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;
11 changes: 11 additions & 0 deletions config/sql/midpoint/3.5/postgresql/postgresql-3.5.sql
Expand Up @@ -289,6 +289,12 @@ CREATE TABLE m_audit_event (
PRIMARY KEY (id)
);

CREATE TABLE m_audit_item (
changedItemPath VARCHAR(255) NOT NULL,
record_id INT8 NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
);

CREATE TABLE m_connector (
connectorBundle VARCHAR(255),
connectorHostRef_relation VARCHAR(157),
Expand Down Expand Up @@ -992,6 +998,11 @@ ADD CONSTRAINT fk_audit_delta
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_connector
ADD CONSTRAINT fk_connector
FOREIGN KEY (oid)
Expand Down
Expand Up @@ -23,4 +23,15 @@ REFERENCES m_assignment;
ALTER TABLE m_focus_policy_situation
ADD CONSTRAINT fk_focus_policy_situation
FOREIGN KEY (focus_oid)
REFERENCES m_focus;
REFERENCES m_focus;

CREATE TABLE m_audit_item (
changedItemPath VARCHAR(255) NOT NULL,
record_id INT8 NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
);

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;
11 changes: 11 additions & 0 deletions config/sql/midpoint/3.5/sqlserver/sqlserver-3.5.sql
Expand Up @@ -289,6 +289,12 @@ CREATE TABLE m_audit_event (
PRIMARY KEY (id)
);

CREATE TABLE m_audit_item (
changedItemPath NVARCHAR(255) COLLATE database_default NOT NULL,
record_id BIGINT NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
);

CREATE TABLE m_connector (
connectorBundle NVARCHAR(255) COLLATE database_default,
connectorHostRef_relation NVARCHAR(157) COLLATE database_default,
Expand Down Expand Up @@ -992,6 +998,11 @@ ADD CONSTRAINT fk_audit_delta
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;

ALTER TABLE m_connector
ADD CONSTRAINT fk_connector
FOREIGN KEY (oid)
Expand Down
13 changes: 12 additions & 1 deletion config/sql/midpoint/3.5/sqlserver/sqlserver-upgrade-3.4-3.5.sql
Expand Up @@ -23,4 +23,15 @@ REFERENCES m_assignment;
ALTER TABLE m_focus_policy_situation
ADD CONSTRAINT fk_focus_policy_situation
FOREIGN KEY (focus_oid)
REFERENCES m_focus;
REFERENCES m_focus;

CREATE TABLE m_audit_item (
changedItemPath NVARCHAR(255) COLLATE database_default NOT NULL,
record_id BIGINT NOT NULL,
PRIMARY KEY (changedItemPath, record_id)
);

ALTER TABLE m_audit_item
ADD CONSTRAINT fk_audit_item
FOREIGN KEY (record_id)
REFERENCES m_audit_event;
Expand Up @@ -34,6 +34,8 @@
<div wicket:id="targetOwnerNameField" />
<label><wicket:message key="PageAuditLogViewer.initiatorNameLabel" /></label>
<div wicket:id="initiatorNameField"/>
<label><wicket:message key="PageAuditLogViewer.changedItem" /></label>
<div wicket:id="changedItem"/>
</div>
<div class="col-md-6" style="padding-left: 5px;">
<label><wicket:message key="PageAuditLogViewer.eventTypeLabel" /></label>
Expand Down
Expand Up @@ -76,6 +76,7 @@ public class AuditLogViewerPanel extends BasePanel{
private static final String ID_EVENT_STAGE = "eventStageField";
private static final String ID_EVENT_STAGE_LABEL = "eventStageLabel";
private static final String ID_OUTCOME = "outcomeField";
private static final String ID_CHANGED_ITEM = "changedItem";

private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_SEARCH_BUTTON = "searchButton";
Expand Down Expand Up @@ -170,6 +171,14 @@ private void initParametersPanel(Form mainForm) {

to.setOutputMarkupId(true);
parametersPanel.add(to);

PropertyModel<String> changedItemModel = new PropertyModel<String>(auditSearchDto,
AuditSearchDto.F_CHANGED_ITEM);
TextPanel<String> changedItemPanel = new TextPanel<String>(ID_CHANGED_ITEM, changedItemModel);
changedItemPanel.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior());
changedItemPanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
changedItemPanel.setOutputMarkupId(true);
parametersPanel.add(changedItemPanel);

PropertyModel<String> hostIdentifierModel = new PropertyModel<String>(auditSearchDto,
AuditSearchDto.F_HOST_IDENTIFIER);
Expand Down Expand Up @@ -377,7 +386,7 @@ public Map<String, Object> getParameters() {
if (search.getTargetName() != null) {
parameters.put("targetName", search.getTargetName().getOid());
}

parameters.put("changedItem", search.getChangedItem());
parameters.put("eventType", search.getEventType());
parameters.put("eventStage", search.getEventStage());
parameters.put("outcome", search.getOutcome());
Expand Down
@@ -1,5 +1,14 @@
package com.evolveum.midpoint.web.page.admin.reports.dto;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.audit.api.AuditEventRecord;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.exception.SchemaException;
Expand All @@ -10,10 +19,6 @@
import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;

import java.util.*;

/**
* Created by honchar.
Expand Down Expand Up @@ -71,26 +76,27 @@ public Iterator<AuditEventRecordType> internalIterator(long first, long count) {
}


@Override
protected int internalSize() {
String query = generateFullQuery(AUDIT_RECORDS_QUERY_COUNT + auditEventQuery, false);
String query = generateFullQuery(AUDIT_RECORDS_QUERY_COUNT + auditEventQuery, false, true);
long count;
try {
count = getAuditService().countObjects(query, parameters, new OperationResult("internalSize"));
} catch (SecurityViolationException | SchemaException e) {
// TODO: proper error handling (MID-3536)
throw new SystemException(e.getMessage(), e);
}

return ((Long)count).intValue();
}


return ((Long)count).intValue();
}

private List<AuditEventRecordType> listRecords(String query, boolean orderBy){
return listRecords(query, orderBy, 0, getPage().getItemsPerPage(UserProfileStorage.TableId.PAGE_AUDIT_LOG_VIEWER));
}

private List<AuditEventRecordType> listRecords(String query, boolean orderBy, long first, long count){
String parameterQuery = generateFullQuery(query, orderBy);
String parameterQuery = generateFullQuery(query, orderBy, false);

if (parameters.containsKey(SET_FIRST_RESULT_PARAMETER)){
parameters.remove(SET_FIRST_RESULT_PARAMETER);
Expand Down Expand Up @@ -129,8 +135,23 @@ public void setAuditEventQuery(String auditEventQuery) {
this.auditEventQuery = auditEventQuery;
}

private String generateFullQuery(String query, boolean orderBy){
private String generateFullQuery(String query, boolean orderBy, boolean isCount){
parameters = getParameters();
if (parameters.get("changedItem") != null) {
if (isCount) {
query = "select count(*) from RAuditEventRecord as aer right join aer.changedItems as item where 1=1 and ";
} else {
query = "from RAuditEventRecord as aer right join aer.changedItems as item where 1=1 and ";
}
// query += "INNER JOIN aer.changedItems as item on item.record_id = aer.id WHERE 1=1 and "
// + "(item.changedItemPath = :changedItem) and ";
query += "(item.changedItemPath = :changedItem) and ";

} else {
parameters.remove("changedItem");
// query += "where 1=1 and ";
}

if (parameters.get("from") != null) {
query += "(aer.timestamp >= :from) and ";
} else {
Expand Down Expand Up @@ -186,6 +207,7 @@ private String generateFullQuery(String query, boolean orderBy){
} else {
parameters.remove("taskIdentifier");
}

query = query.substring(0, query.length()-5); // remove trailing " and "
if (orderBy){
query += AUDIT_RECORDS_ORDER_BY;
Expand Down
Expand Up @@ -43,6 +43,7 @@ public class AuditSearchDto implements Serializable {
public static final String F_EVENT_TYPE = "eventType";
public static final String F_EVENT_STAGE = "eventStage";
public static final String F_OUTCOME = "outcome";
public static final String F_CHANGED_ITEM = "changedItem";

private XMLGregorianCalendar from;
private XMLGregorianCalendar to;
Expand All @@ -54,6 +55,7 @@ public class AuditSearchDto implements Serializable {
private AuditEventTypeType eventType;
private AuditEventStageType eventStage;
private OperationResultStatusType outcome;
private String changedItem;

public XMLGregorianCalendar getFrom() {
return from;
Expand Down Expand Up @@ -134,5 +136,13 @@ public OperationResultStatusType getOutcome() {
public void setOutcome(OperationResultStatusType outcome) {
this.outcome = outcome;
}

public String getChangedItem() {
return changedItem;
}


public void setChangedItem(String changedItem) {
this.changedItem = changedItem;
}
}
Expand Up @@ -3382,6 +3382,7 @@ PageAuditLogViewer.eventTypeShortLabel=Type
PageAuditLogViewer.eventStageLabel=Event Stage
PageAuditLogViewer.eventStageShortLabel=Stage
PageAuditLogViewer.outcomeLabel=Outcome
PageAuditLogViewer.changedItem=Item changed
AuditLogViewerPanel.dateValidatorMessage=From date must be before To date.
AuditEventRecordType.timestamp=Time
AuditEventRecordType.initiatorRef=Initiator
Expand Down

0 comments on commit 2c36669

Please sign in to comment.