Data

This package contains a set of abstract, portable data types. Some examples are anytype, anyvalues, anyarrays, anymaps, and stringmaps. Many serializable classes are based on these data types. For example, the classes configmap, filtermaps and connection parameters, which extend stringvaluemap. The package also includes several classes for working with data (E.g. data paging, filtering, GUIDs).

Interfaces

IChangeable

Interface for data objects that contain their latest change time.

IIdentifiable

Generic interface for data objects that can be uniquely identified by an id. The type specified in the interface defines the type of id field.

INamed

Interface for data objects that have human-readable names.

IStringIdentifiable

Interface for data objects that can be uniquely identifed by a string id. The interface extends IIdentifiable’s hardcode id type to string. It is a common pattern to use a string GUID as the id, generated by IdGenerator.

ITrackable

Interface for data objects that can track their changes, including logical deletion.

IVersioned

Interface for data objects that can be versioned. Versioning is often used as an optimistic concurrency mechanism. The version doesn’t have to be a number, but it is recommended to use sequential values to determine if one object has newer or older version than another one. It is a common pattern to use the time of change as the object version.


Classes

MultiString

An object that contains string translations for multiple languages. Language keys use two-letter codes like: ‘en’, ‘sp’, ‘de’, ‘ru’, ‘fr’, ‘pr’. When a translation for specified language does not exist it defaults to English (‘en’). When an English translation does not exist it falls back to the first defined language.