[Major] Implemented AuditQuery
This commit is contained in:
parent
b8bfaf8408
commit
7cb7c2749c
|
@ -18,32 +18,31 @@ package li.strolch.model.audit;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import ch.eitchnet.utils.collections.DateRange;
|
||||
import ch.eitchnet.utils.dbc.DBC;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class AuditQuery {
|
||||
|
||||
private int maxResults;
|
||||
|
||||
private String elementTypeSelection;
|
||||
private List<AuditSelection> selections;
|
||||
private DateRange dateRange;
|
||||
|
||||
public AuditQuery() {
|
||||
public AuditQuery(String elementTypeSelection, DateRange dateRange) {
|
||||
DBC.PRE.assertFalse("dateRange may not be unbounded!", dateRange.isUnbounded());
|
||||
this.elementTypeSelection = elementTypeSelection;
|
||||
this.dateRange = dateRange;
|
||||
this.selections = new ArrayList<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maxResults
|
||||
*/
|
||||
public int getMaxResults() {
|
||||
return this.maxResults;
|
||||
public String getElementTypeSelection() {
|
||||
return this.elementTypeSelection;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param maxResults
|
||||
* the maxResults to set
|
||||
*/
|
||||
public void setMaxResults(int maxResults) {
|
||||
this.maxResults = maxResults;
|
||||
public DateRange getDateRange() {
|
||||
return this.dateRange;
|
||||
}
|
||||
|
||||
public ActionSelection action() {
|
||||
|
@ -52,12 +51,6 @@ public class AuditQuery {
|
|||
return selection;
|
||||
}
|
||||
|
||||
public DateRangeSelection dateRange() {
|
||||
DateRangeSelection selection = new DateRangeSelection(this);
|
||||
this.selections.add(selection);
|
||||
return selection;
|
||||
}
|
||||
|
||||
public ElementSelection element() {
|
||||
ElementSelection selection = new ElementSelection(this);
|
||||
this.selections.add(selection);
|
||||
|
@ -71,6 +64,8 @@ public class AuditQuery {
|
|||
}
|
||||
|
||||
public void accept(AuditQueryVisitor visitor) {
|
||||
DBC.PRE.assertNotNull("No elementTypeSelection (navigation) set!", this.elementTypeSelection); //$NON-NLS-1$
|
||||
DBC.PRE.assertNotNull("No dateRange set!", this.dateRange); //$NON-NLS-1$
|
||||
visitor.visit(this);
|
||||
for (AuditSelection selection : selections) {
|
||||
selection.accept(visitor);
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package li.strolch.model.audit;
|
||||
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
|
@ -25,8 +24,6 @@ public interface AuditQueryVisitor {
|
|||
|
||||
public void visit(IdentitySelection selection);
|
||||
|
||||
public void visit(DateRangeSelection selection);
|
||||
|
||||
public void visit(ActionSelection selection);
|
||||
|
||||
public void visit(AuditQuery auditQuery);
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
/*
|
||||
* Copyright 2013 Robert von Burg <eitch@eitchnet.ch>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.model.audit;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import ch.eitchnet.utils.collections.DateRange;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class DateRangeSelection extends AuditSelection {
|
||||
|
||||
private DateRange dateRange;
|
||||
|
||||
public DateRangeSelection(AuditQuery query) {
|
||||
super(query);
|
||||
this.dateRange = new DateRange();
|
||||
}
|
||||
|
||||
public DateRange from(Date from, boolean inclusive) {
|
||||
return this.dateRange.from(from, inclusive);
|
||||
}
|
||||
|
||||
public DateRange to(Date to, boolean inclusive) {
|
||||
return this.dateRange.to(to, inclusive);
|
||||
}
|
||||
|
||||
public Date getFromDate() {
|
||||
return this.dateRange.getFromDate();
|
||||
}
|
||||
|
||||
public Date getToDate() {
|
||||
return this.dateRange.getToDate();
|
||||
}
|
||||
|
||||
public boolean isFromBounded() {
|
||||
return this.dateRange.isFromBounded();
|
||||
}
|
||||
|
||||
public boolean isToBounded() {
|
||||
return this.dateRange.isToBounded();
|
||||
}
|
||||
|
||||
public boolean isUnbounded() {
|
||||
return this.dateRange.isUnbounded();
|
||||
}
|
||||
|
||||
public boolean isBounded() {
|
||||
return this.dateRange.isBounded();
|
||||
}
|
||||
|
||||
public boolean contains(Date date) {
|
||||
return this.dateRange.contains(date);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(AuditQueryVisitor visitor) {
|
||||
visitor.visit(this);
|
||||
}
|
||||
}
|
|
@ -23,18 +23,12 @@ import ch.eitchnet.utils.StringMatchMode;
|
|||
*/
|
||||
public class ElementSelection extends AuditSelection {
|
||||
|
||||
private StringSelection elementTypeSelection;
|
||||
private StringSelection elementAccessedSelection;
|
||||
|
||||
public ElementSelection(AuditQuery query) {
|
||||
super(query);
|
||||
}
|
||||
|
||||
public ElementSelection elementTypes(StringMatchMode matchMode, String... elementTypes) {
|
||||
this.elementTypeSelection = new StringSelection(matchMode, elementTypes);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ElementSelection elementsAccessed(StringMatchMode matchMode, String... elementsAccessed) {
|
||||
this.elementAccessedSelection = new StringSelection(matchMode, elementsAccessed);
|
||||
return this;
|
||||
|
@ -44,22 +38,10 @@ public class ElementSelection extends AuditSelection {
|
|||
return this.elementAccessedSelection;
|
||||
}
|
||||
|
||||
public StringSelection getElementTypeSelection() {
|
||||
return this.elementTypeSelection;
|
||||
}
|
||||
|
||||
public boolean isElementTypesWildcard() {
|
||||
return this.elementTypeSelection == null || this.elementTypeSelection.isWildCard();
|
||||
}
|
||||
|
||||
public boolean isElementsAccessedWildcard() {
|
||||
return this.elementAccessedSelection == null || this.elementAccessedSelection.isWildCard();
|
||||
}
|
||||
|
||||
public boolean isWildcard() {
|
||||
return this.isElementsAccessedWildcard() && this.isElementTypesWildcard();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(AuditQueryVisitor visitor) {
|
||||
visitor.visit(this);
|
||||
|
|
|
@ -17,10 +17,8 @@ package li.strolch.model.query;
|
|||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*
|
||||
*/
|
||||
public interface Navigation {
|
||||
|
||||
// marker interface
|
||||
public void accept(QueryVisitor visitor);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,6 @@ package li.strolch.model.query;
|
|||
public interface Selection {
|
||||
|
||||
public void accept(QueryVisitor visitor);
|
||||
|
||||
|
||||
public boolean hasSelection();
|
||||
}
|
||||
|
|
|
@ -74,4 +74,12 @@ public class StringSelection {
|
|||
public boolean isWildCard() {
|
||||
return this.values == null || this.values.length == 0;
|
||||
}
|
||||
|
||||
public boolean matches(String value) {
|
||||
for (String sel : values) {
|
||||
if (this.matchMode.matches(value, sel))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue