All Classes and Interfaces
Class
Description
Implements a abstract filter class for reading expire mode and value.
An abstract writer-implementation - contains helper getters for all writer parameters
Base class for writing a Wrs or a WrsRequest to an Excel sheet
Convenience class for building custom ISqlGenerators
logs
AccessSqlLogger.LogRecord
into database, binding set used is bcd_log_access,
this class is not intended to be customized or extended in projects.the result to log into database
This exception is thrown when the method Bindings.get(String)
is called for a BindingSetGroup, because without the set of BindingItems
to be selected the Bindings class cannot determine which BindingSet
contained in the BindingSetGroup should be returned.
extending Shiro's
FormAuthenticationFilter
to add
additional authentication scheme.Support for bcd_log_login logging as well as further security enhancement, such as session-fixation {@link https://owasp.org/www-community/attacks/Session_fixation}
defines authentication method
Java-Klasse für anonymous complex type.
filter for identifying requests from MS Office applications like Word or Excel.
This is a worker with idle support and a queue
allows asynchronous processing of objects, supports
multi-object for batch processing and idle state to release resource if appropriate.
bare configuration singleton, this class is for internal purpose and must not be used in
projects, consider using
Configuration
that purpose.Helper in Shiro's package to access protected parts of Shiro's API
global switch for internal bcd connection wrapper class, which is not globally exposed.
In web environments serves for initializing de.businesscode.bcdui.toolbox.Configuration
With application context settings (from context and web.xml)
The super class for binding-related exceptions.
The BindingItem class represents a mapping from a logical name to a
database column.
database column.
This class is container of a wrq:A of binding item in a query.
Represents a BindingItem coming form a BindingSet Relation
This class represents a BindingItem in a concrete statement
It adds for example alias, aggregation and the column number
This exception is thrown when a BindingItem with the specified name
cannot be found inside a specific BindingSet.
A singleton container class for all the bindings defined in the application.
This is the velocity context object, that represents BCD-UI global Bindings singleton, $bindings
and serves as a lookup for BindingSets
It already known from its parameters in the constructor, which binding set name / binding item names combinations occur
and is used in phase 2 (@see
SQLEngine
)security operations supported
This is the velocity context object, that represents a concrete BindingSet in phase 2 (@see
SQLEngine
)
From its constructor parameters it already knows, which binding items will be requested from it and this allows it to determine the right concrete BindingSet for its name
Also it keeps track of all requested BindingItems to find the right BindingSet for the BindingSet name
and to provide the caller with information about used BindingItemsIndicates that there is no BindingSet or BindingSetGroup with the
specified name.
This is the velocity context object, allowing velocity to lookup a BindingSet (more precisely a BindingSetLookupContextObject) by name
This is used in phase 2 (@see
SQLEngine
), when the concrete BindingSet is already known
Later the user can also ask for all BindingSets we were asked forThe class represents boolean SQL constraints, like IS NULL or IS NOT NULL
Cache factory to BCD-UI managed caches, (currently backed by ehCache v2).
Servlet to manage cache settings (VFS, Bindings): delete, reload
ClientCachingFilter implements client side caching.
This Filter set expires value for the within the init-parameters declared resource types.
This Filter set expires value for the within the init-parameters declared resource types.
closes JDBC objects
The class represents combined SQL constraints, like AND OR
Default implementation of
The class represents a SQL condition, i.e.
This class extends the
JNDIProvider
and offers a common API to retrieve configuration parameter from JNDI
context as specified by servlet spec, furthermore this class cascades the configuration via DbProperties
allowing to manage dynamic properties from database. all API refer to "server" scope in sense of DbProperties
scope,
except of Configuration.getClientParameters()
which provides "client" scope configuration from database.configuration provider interface
the connective containing
SubjectFilter
or further Connective
elements,
connectives are: Connective.ConnectiveAnd
, Connective.ConnectiveOr
special filter to handle CORS, allows credentials to be sent, allows to be loaded from any origin and allow any http header and method.
Utility class for custom JDBC type handling/mapping, i.e. defined on a
BindingItem
via type-name=OTHER cust:type-name=TEXTThis class encapsulates Database specific behavior and settings
Representer for a File object, is not threadsafe
The Class is a writer of WebRowSet document into database,
supports auto detection of key columns by updating, it means if key columns
are defined and in modifyRow the values from them are not modified - the key columns
were ignored by setting values in SQL statement
This algorithms
reads input from input options,
uses generator to interpret the options (generate SQL),
executes sql and
writes the resultSet out into the writer.
reads input from input options,
uses generator to interpret the options (generate SQL),
executes sql and
writes the resultSet out into the writer.
Cache control based on requested binding set name and data from scope_last_modified
If a request matches a certain scope, we check its last_refreshed and compare it against the request's If-Modified-Since-Header
If possible according to that, we send a 304 instead of forwarding to get new data
- If the scope was found in bcd_cache_scope, we are active, otherwise we do chain.doFilter
- If If-Modified-Since was sent, we compare that with the scopes scope_last_modified
- If If-Modified-Since was not sent or data was out-dated, we call chain.doFilter and set expires to earliest_next_modified if given
See bcdui4.DataModifiedFilter in web.xml for how to use
Holds information about a scope like when data was actually refreshed last time
and possibly when it may be refreshed earliest next time
this class loads the configuration properties from database,
this class is thread-safe and can also be used as a singleton,
the
DbProperties.getProperties(String)
method is used to retrieve properties and
it will keep the internal data up-to-date in case DbProperties.refreshCycleSec
has
been set in constructor.this bean is target of evaluation in WRS updates,
is not thread-safe and this bean is used on per-request level
A binding exception thrown when a BindingSet does not contain any
BindingItem.
Java-Klasse für anonymous complex type.
The error-logEvent for usage with the ErrorLogAppender.
logs
ErrorSqlLogger.LogRecord
into database, binding set used is bcd_log_error,
this class is not intended to be customized or extended in projects.the result to log into database
Servlet utilizing POI class to create xslx files
Note that Sylk and Cvs exports are much more efficient than this, i.e. less bandwidth consuming, faster and less memory consuming since they are streaming and a leaner format
Use this only, when needed, for example because you fill an Excel template or because you need UTF-8 chars.
This class encapsulates a pair of a column caption and the respective
data column name.
Enum with all supported expires values.
Servlet providing the base class for ExcelExportServlet, SylkServlet and CsvServlet.
this token is used in conjunction to
AuthenticationFilter
which
authenticates a subject by any different scheme, i.e.This class implements the file system based caching store.
Changes a standard f:Filter element as created by the period chooser from mo/cw to dy
Useful to support table partitioning by dy while the client keeps "thinking" in mo etc
This class provides the common filter utilities.
Class responisible for creating a semi-root logger and configuring
it with the
FrontendLogRecordPublisher
in order to feed the
queue.logrecord receiver servlet which parses the request and propagates
the logrecord message to the
FrontendLogRecordPublisher
and also
consumes the SingletonStringQueue
which is populated by the FrontendQueueAppender
Several helpers as jsp functions, find their documentation in webpage.tld
Wrapp a httpRequest and implements IRequestOptions for Wrs operations
This class provides the proxy implementation of the HttpServletResponse class.
Global i18n constants and helper class
Provides i18n catalog XML for bcdui.i18n.I18nCatalog class, the keys are normalized and serialized as element names as expected by catalog implementation.
The class writes the full result of a load operation out
Java-Klasse für anonymous complex type.
The class represents request options for an operation.
Typically all parameters are readed from a HTTP-Request and/or application configuration
Typically all parameters are readed from a HTTP-Request and/or application configuration
This interface describes the methods for the server side cacing store.
The generator parses the request document, builds select statement and extracts other information from the input-options
Steps to be able to be added to UploadServlet as init param, format see there
Need a Constructor getting (UploadControl uc, String userId)
If writing, call UploadControl#addStepResult() at the end of process()
Used by shiro framework for retrieving authentication and authorization from the database
Relies on bcd_sec_user and bcd_sec_user_settings BindingSets providing support for plaintext (backwards compatibility)
and salted/hashed passwords using SHA256 hashing.
some of BUI lib features requires
JNDI.
Provider class for JNDI access easing.
JSON literal helper to write safe JSON object
Base class for all log events that can occur in the frontend and should be logged into the
database.
logs
LoginSqlLogger.LogRecord
into database, binding set used is bcd_log_session,
this class is not intended to be customized or extended in projects.the result to log into database
logs
LogoutSqlLogger.LogRecord
into database, binding set used is bcd_log_session,
this class is not intended to be customized or extended in projects.the result to log into database
Java-Klasse für anonymous complex type.
A singleton container class for all the menus defined in the application.
These menus are defined in static XML files under "/WEB-INF/bcdui/menu/" and read
These menus are defined in static XML files under "/WEB-INF/bcdui/menu/" and read
The servlet gets menu document by given over menuId or <Empty/>
if the menu missed
A class implementing Modifier may be used to move a WrsRequest by adding a bnd:Modifiers block to a BindingSet xml definition
Receives a Dimension definition and a string with space separated search words
Supports '/' as level separators
An exception thrown by the method Bindings.get(String, Collection) if the
specified BindingSet does not contain all of the BindingItems or if the
BindingSetGroup does not provide any BindingSet containing all BindingItems.
exception related with
Security
context and thrown if a permission is missing for context executionThe flow here is (start = not authenticated request)
This Realm will accept logins from trusted oAuth authentication servers
Per default we also require the user to be found in bcd_sec_user to not lose control, as bcdAuthc resources only need a session and no permissions!
OAuth authentication token which is supported by
OAuthRealm
instances.This object contains factory methods for each
Java content interface and Java element interface
generated in the a package.
This object contains factory methods for each
Java content interface and Java element interface
generated in the de.businesscode.bcdui.menu.config package.
This object contains factory methods for each
Java content interface and Java element interface
generated in the de.businesscode.bcdui.subjectsettings.config package.
logs
PageSqlLogger.LogRecord
into database, binding set used is bcd_log_page,
this class is not intended to be customized or extended in projects.the result to log into database
This is the velocity context object, that represents param
substitution by one or many placeholders.
A primary principal, which holds technical user id.
Parses a binding xml and creates an in-memory BindingSet
Relations are defined for a BindingSet in its config file.
This class is a very first entry point of any requests.
Implements IRequestOptions for Wrs operations, which may not be originated in an HTTP request
When using getManagedConnection() also call returnAllThreadManagedConnections()!
Factory methods preventing XXE attacks, according to OWASP
Cheat Sheet
this type contains security settings applicable to the context
Java-Klasse für anonymous complex type.
this exception is thrown within Security context checks.
helper to evaluate shiro security on
Security
settingsthis exception is thrown in case Security context is required but not defined by user.
this exception is thrown whenever operations related to binding security fails check due to missing
security configuration.
To enable this class, add it as WriteProcessing/Callbacks/Callback/@class to bcd_sec_user BindingSet
When writing to bcd_src_user we apply special handling:
1.
Set these jndi properties.
Implements server side caching.
the interface with required API any serverside value bean has to implement, all the convenient API has to return
a renderered String suitable to write it to database via DatabaseWriter
logs
SessionExpiredSqlLogger.LogRecord
into database, binding set used is bcd_log_session,
this class is not intended to be customized or extended in projects.Log for expired session
logs
SessionSqlLogger.LogRecord
into database, binding set used is bcd_log_session,
this class is not intended to be customized or extended in projects.the result to log into database
decorator for apache shiro filter to bypass preflight cors requests, use this one instead of org.apache.shiro.web.servlet.ShiroFilter in your web.xml if you want enable CORS in your site
Base class for BindingItems read from a BindingSet definition or calc:Calc of a Wrs
It becomes member of a (Wrs|Standard)BindingSet
See also WrqBindingItem for the analogy used during actual statement representing the output
this singleton-holder helper should be used in container environments to prevent class loader leaking, implementation currently does not use java's
WeakReferences or SoftReferences to reference the instances, rather is uses strong references via Maps keyed by the class-name string.
Utility class to create a
SOAPFault
utility class abstracting principal information from de.businesscode.bcdui.security.SpnegoValve
the interface for condition generator in SQL clause.
An exception with SQL details, which may not be save to be included in the message to the client
The SQL Engine can transform sql fragments containing references to BindingSets into pure sql,
resolving table and column names
To resolve the given binding set/group names to the right concrete BindingSets first, it parses the given sql twice,
- In phase 2 it will just collect the binding set name - binding item names combination,
using BindingsLookupContextObject and BindingSetLookupContextObject
- In phase 2 it does then know the concrete BindingSet and BindingItem and can output the appropriate table and column names,
using BindingsContextObject and BindingSetContextObject
Takes the parent node of SELECTs with SET operators (formally a "full-select") in Wrq format
and generates SQL from it together with the bound variables, ready to be executed
Takes a single wrq:Select (formally a "sub-select") and turns it into a SQLStatementWithParams
Represents part of an SQL string and the values for bound variables
a singleton logger for SQL statements, the binding set used for it is bcd_log_sql,
record logged is
SqlToDatabaseLogger.LogRecord
this class is not intended to be customized or extended in projects.record being logged into db
A BindingSet is a mapping from names to BindingItems.
Singleton to hold all well-known BCD-UI namespaces and their prefixes
The prefixes must be used in client js code because they are made known to the browser's parser
This class enables the use of the database-backed virtual file system and jar files as source for seemingly static resources.
This class represents one single resource which is either a file on the
file system or a URL from the classpath.
resource abstract descriptor implementing API to the content
provider interface to resolve a
StaticResourceServlet.Resource
a static resource provider singleton
represents a SubjectFilter in BindingSet
Common denominator for
SubjectFilter
and Connective
Enforce SubjectFilters on write
This callback is registered if SubjectFilters are declared for a BindingSet
It applies its ruled for writing
It does currently not support nested filter expressions (only flat AND or OR) and only '=' for comparison
SubjectFilters definition in BindingSet.
Java-Klasse für SubjectFilterType complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für SubjectPreferencesConfig complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Subject settings are session settings in web and non-web environments
It covers rights, i18n settings and so on
Returns a where clause based on the SubjectFilters of the BindingSet and the current Subject's permissions Initially taken from WrsSqlGenerator.
Java-Klasse für SubjectSettingsConfig complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für SubjectSettingsType complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
Java-Klasse für anonymous complex type.
This class wrapped the PrintWriter functionality in order to provide the possibility to write a data to two writers.
tees the writer, ignores exceptions on a cloned object, however
they are logged with warning level.
This servlet allows POSTing a text and retrieve it (up to 24h) later via GET under a given name
Each servlet instance has its only scope name.
Java-Klasse fuer TypeSubjectFilter complex type.
Java-Klasse fuer TypeSubjectFilterConnective complex type.
Java-Klasse fuer TypeSubjectFilters complex type.
This class is responsible for transferring data from bcdui_upload_rowcol into the target BindingSet
It relies on correct format of the data in bcdui_upload_rowcol.
This class applies all validations which are possible based on the assigned BindingSet i.e. entries in mapping
Validation issues are written to bcd_dataupload_validation
Used for accessing bcd_dataupload_control table
Possible return codes for steps
Handles access to bcd_dataupload_control_step
i.e., provides a list of steps so far and can add new steps
Plain POJO representing an upload set with detail data
Retrieves the rows with errors together with their errors as CSV
It prepends the header
This class tries to guess the data content semantics in bcd_dataupload_rowcol and updates bcd_dataupload_control
1.
Trims and NULL-ifies columns in rowcol table which are of type NUMERIC, DATE or TIMESTAMP according to mapping information.
Entry point for all data data upload related steps, supports POST and PUT
Add custom steps in web.xml in the following format:
<init-param>
<param-name>Steps</param-name>
<param-value>
MY_STEP_NAME: de.my.package.ClassName;
MY_STEP_NAME2: de.my.package.ClassName2;
</param-value>
</init-param -->
Such Steps
- need a Constructor getting (UploadControl uc, String userId)
- implement IUploadStep
- if writing, call UploadControl#addStepResult() at the end of their process()
Base class for inserting a file available as BLOB column- and cell wise to bcd_dataupload_rowcol
Responsible to insert a CSV file available as BLOB column-wise to staging
Detects file encoding (ISO-8859-1, UTF-8 and UTF-16), row and cell boundaries, i.e. cell delimiter and quoteChar
Does not convert number or date format, does not detect header
Responsible to read an Excel xlsx file from a BLOB and write it row and cell to bcd_dataupload_rowcol
a thread safe
StaticResourceServlet.ResourceProvider
which provides a resource from VFSrepresents a single resource to VFS
implements following REST API to upload binary data using file streaming API of apache commons-fileupload,
see http://commons.apache.org/proper/commons-fileupload/streaming.html
accepting POST for INSERT/UPDATE streams and DELETE for deleting them
configuration (via servlet parameter):
folder-name: abstract name which is used as prefix for all incoming file-names,
read documentation on
VFSServlet.doPost(HttpServletRequest, HttpServletResponse)
and VFSServlet.doDelete(HttpServletRequest, HttpServletResponse)
for more information and exception handling.abstraction to write into VFS, client has finally to call
VFSServlet.FileDAO.commit()
unfortunately we cant work with DatabaseFileSystem / DatabaseFileObject directly to store data,
so we do here lowlevel BLOB handling, works with bcd_virtualFileSystem binding-set
NOT THREADSAFE
Constructs a virtual BindingItem,
behaves like a standard BindingItem but derives its sql expression and type-name from a wrq:Calc element
A Weekday enum.
the
WriteProcessingCallback
are non thread-safe and each WRS processing will obtain new own intsance of a callback, however the callback
parameters supplied from binding-set definition are immutable so the factory will be configured already at binding bootstrapping while an instance
of a callback will be provided when requested via createIntance()callback params class scaffolding arbitrary parameters supplied to callback and
providing access API,
The parameters sample:
<ul>
<li><Param name="foo" x="a" y="b"/></li>
<li><Param name="foo" z="x" d="y"/></li>
<li><Param name="bindingItem" id="bcdUpdateBy" value="expression" isCoalesce="true"/></li>
<li><Param name="bindingItem" id="bcdUpdateStamp" value="expression" isCoalesce="false"/></li>
</ul>
the parameter api is a list of parameter-maps in the order they are defined.Takes a wrq:WrsRequest an optional rnd:Wrs2Excel, executes it and writes the result into an Excel sheet via Poi Api
The caller is responsible to create the Workbook containing the Sheet
Takes a Wrq and generates SQL from it
Returns the generated SQL statement for a Wrq.
Represents a BindingItem in a Wrq, it is it has knowledge of the underlying BindingItem and the current query
There can be multiple WrqBindingItem for a BindingItem(FromRel), to reflect different behaviora like aggr for example in select and in grouping clause
A BindingSet used during the execution of a Statement
Represents a virtual BindingSet resulting from a sub-select during the execution of a Wrq
Represents a virtual BindingSet resulting from the children of wrq:From, i.e. a table reference
A table reference can be a plain table name or joined tables factors,
i.e. table names, derived table expressions or references to CTE
Mostly it deals with the handling of wrq:Join, but for consistency we also take care for cases without
Wrapper for BindingSets that can be referenced more than one in a query, mainly adds the sql table alias for the current occurrence
This can be a StandardBindingSet and a CTE
Implements WrqBindingSet
Represents a virtual BindingSet derived on runtime from parts of a Wrs
Parses a Wrq and outputs SQL
Parses a f:Filter expression and returns the SQL Where expression
For older change history, see WrsSqlGenerator
Parses a wrq:WrsRequest//wrq:Grouping element and returns a sql GROUP BY [GROUPING SET] expression
Initially taken from WrsSqlGenerator.
Collects knowledge about the Wrq.
Takes a full Wrq query, formally a "select-statement" and generates SQL from it
[WITH]* SELECT [UNION SELECT]* [ORDER BY]
Children can be recursive full-selects or a sub-selects or it is an empty (no select at all) or a meta-data request (endRow==0 )
One instance of this class only handles one Wrq
NOTE: We do not check the rights, use assurePermittedOnAllResolvedBindingSets() for verifying this
Wrs to Excel (.xlsx) data exporter: exports data from Wrs into sheet(s) of target excel template, uses efficient streaming API when interfacing with input
document and output.
resolves template file via templateName abstraction, usually implemented by container component, i.e. servlet and returns the input-stream to the template
This bean contains all information about the log-event
Represents a BindingItem in a concrete Wrq, includes information like overwritten attributes
See analogy SimpleBindingItem and its subclasses representing the input side, i.e.
The default implementation of the IDataWriter - write wrs-xml-format using xml-stream
Write an empty document if the resultSet is null.
Write an empty document if the resultSet is null.
preserves the update information on a record, takes following configuration parameters:
the default values are marked with asterix (*), all parameters which have no default values are required.
preserves the update information on a record, handles following items:
bcdUpdateStamp
writes current stamp on wrs:M and wrs:I
bcdUpdateBy
stores the username (principal), follows same logic as bcdUpdateStamp
bcdCreateStamp
writes current stamp on wrs:I, ignores update on wrs:M
bcdCreateBy
stores the username (principal), follows same logic as bcdCreateBy
in case none of binding-items above are found in the given binding-set an exception is thrown.
provides next identifier - table based id generator,
binding-set: bcd_identifier
Servlet for calling Wrs services
GET: It turns a WrsRequest into SQL and returns a Wrs document with wrs:R rows
POST: It turns a Wrs into updates of the database based on wrs:M wrs:D rows
validation exception that may be thrown by
DataSaver
or another class of WRS components
during web row set validation.read more about validation handling in the documentation of
WrsValidationException
,
this class mainly holds data required to be rendered by validationMessages.xslt templateserializer for the
WrsValidationException
, creates web row set format compatible to wrs:ValidationResultServlet for compression and uncompression of XML data.