Skip to content

SAIF.Application.LogView business rules

This page captures business rules enforced by this library.

BR-001: Search results are capped at 300 rows

Field Value
Statement Error and info collection searches return at most 300 rows per retrieval query.
Trigger Any clsAppErrorCollection or clsAppInfoCollection retrieval.
Enforcement RetrieveSQL in both collection criteria classes uses SELECT TOP 300.
Outcome Callers receive a page-limited row set and must use the matching count query for the full result total.
Confidence Verified
Tables App_Error, App_Info
SQL SQL-005, SQL-006, SQL-007, SQL-008
Source Application\SAIF.Application.LogView\clsAppErrorCollection.vb; Application\SAIF.Application.LogView\clsAppInfoCollection.vb

BR-002: All sentinel suppresses selected filters

Field Value
Statement Filter values containing the literal [ALL] are treated as "no filter" for applicable collection criteria.
Trigger Collection search criteria evaluate machine and application filters.
Enforcement BuildWhere() omits corresponding predicates when the filter value contains [ALL].
Outcome Caller-selected "all" values do not constrain the SQL query.
Confidence Verified
Tables App_Error, App_Info
SQL SQL-005, SQL-006, SQL-007, SQL-008
Source Application\SAIF.Application.LogView\clsAppErrorCollection.vb; Application\SAIF.Application.LogView\clsAppInfoCollection.vb

BR-003: Semicolon-delimited filters expand to SQL IN lists

Field Value
Statement Semicolon-delimited Environment and UserName filters are rewritten as SQL IN (...) lists.
Trigger Collection search criteria receive multiple filter values in one string.
Enforcement BuildWhere() splits the supplied value and emits an IN (...) predicate instead of a single-value comparison.
Outcome One search request can match multiple environments or user names.
Confidence Verified
Tables App_Error, App_Info
SQL SQL-005, SQL-006, SQL-007, SQL-008
Source Application\SAIF.Application.LogView\clsAppErrorCollection.vb; Application\SAIF.Application.LogView\clsAppInfoCollection.vb

BR-004: Search text is normalized for full-text queries

Field Value
Statement Free-text search input is rewritten into a SQL Server CONTAINS(...) predicate while preserving explicit logical operators.
Trigger A collection search includes SearchText.
Enforcement GetSearchValue() strips quotes, tokenizes terms, preserves AND/OR/&/|/&!, and quotes search tokens before SQL binding.
Outcome Full-text search behavior is standardized before execution against the log tables.
Confidence Verified
Tables App_Error, App_Info
SQL SQL-005, SQL-006, SQL-007, SQL-008
Source Application\SAIF.Application.LogView\clsAppErrorCollection.vb; Application\SAIF.Application.LogView\clsAppInfoCollection.vb; Application\SAIF.Application.LogView\modLogViewExtensions.vb

BR-005: Single-object retrieval requires exactly one row

Field Value
Statement Single-object retrieval is valid only when exactly one row is returned.
Trigger clsAppError.AfterRetrieve or clsAppInfo.AfterRetrieve runs after a retrieve request.
Enforcement AfterRetrieve throws ApplicationException("Invalid Results") when the result count is not exactly one.
Outcome Zero-row or multi-row matches are treated as invalid object retrievals.
Confidence Verified
Tables App_Error, App_Info
Source Application\SAIF.Application.LogView\clsAppError.vb; Application\SAIF.Application.LogView\clsAppInfo.vb

BR-006: Inserts must affect exactly one row

Field Value
Statement Insert operations are considered successful only when exactly one database row is affected.
Trigger clsAppError.AfterInsert or clsAppInfo.AfterInsert runs after an insert request.
Enforcement AfterInsert checks RowsAffected <> 1 and adds InsertError when the count is not one.
Outcome Failed inserts surface as business-object error messages rather than silently succeeding.
Confidence Verified
Tables App_Error, App_Info
SQL SQL-003, SQL-004
Source Application\SAIF.Application.LogView\clsAppError.vb; Application\SAIF.Application.LogView\clsAppInfo.vb

BR-007: Audit rows receive a 30-day purge date

Field Value
Statement New App_Info rows are written with Purge_Date set 30 days after creation.
Trigger clsAppInfo inserts a new audit/info row.
Enforcement BeforeInsert binds @Purge_Date with Now.AddDays(30).
Outcome Each audit row carries a precomputed retention cutoff.
Confidence Verified
Tables App_Info
SQL SQL-004
Source Application\SAIF.Application.LogView\clsAppInfo.vb

BR-008: Audit searches exclude EPAY and DirectDeposit

Field Value
Statement Standard App_Info collection searches exclude rows whose App_Name is EPAY or DirectDeposit.
Trigger clsAppInfoCollection builds its search SQL.
Enforcement Both RetrieveSQL and RetrieveSQLCount append and not (App_Info.App_Name in ('EPAY','DirectDeposit')).
Outcome Default audit searches omit those application names even when other filters would match them.
Confidence Verified
Tables App_Info
SQL SQL-007, SQL-008
Source Application\SAIF.Application.LogView\clsAppInfoCollection.vb

BR-009: Info search full-text scope is restricted by SearchType

Field Value
Statement An App_Info collection search's full-text predicate targets Message_Text and Data_Text together, Message_Text alone, or Data_Text alone, depending on the criteria's SearchType selection.
Trigger A clsAppInfoCollection search supplies non-empty SearchText and a SearchType of MessageAndData, MessageOnly, or DataOnly.
Enforcement BuildWhere() selects on m_searchType and appends CONTAINS((App_Info.Message_Text,App_Info.Data_Text),@SEARCHTEXT), CONTAINS((App_Info.Message_Text),@SEARCHTEXT), or CONTAINS((App_Info.Data_Text),@SEARCHTEXT) accordingly.
Outcome Callers can narrow full-text matching to only the message field, only the supplemental data field, or both, instead of always searching both columns.
Confidence Verified
Tables App_Info
SQL SQL-007, SQL-008
Source Application\SAIF.Application.LogView\clsAppInfoCollection.vb

Sources

  • Application\SAIF.Application.LogView\clsAppError.vb
  • Application\SAIF.Application.LogView\clsAppErrorCollection.vb
  • Application\SAIF.Application.LogView\clsAppInfo.vb
  • Application\SAIF.Application.LogView\clsAppInfoCollection.vb
  • Application\SAIF.Application.LogView\modLogViewExtensions.vb