Implementation

Since we no longer work with file paths internally, but with repository IDs, it is important to understand their structure. A repository ID is a string consisting of two parts with the following structure:

Prefix: repository://

ID: {53F875F0-6177-8AD5-01B44E3A9867}

Sample: repository://{53F875F0-6177-8AD5-01B44E3A9867}

All functions such as Design, Print, Export, ProvideInformationReadOnlyBase.RepositoryId in WebReportDesignerController.OnProvideListLabel etc., which previously received the file path of the project (e.g., C:\Reports\Invoice.lst), now receive the complete repository ID (e.g., repository://{53F875F0-6177-8AD5-01B44E3A9867}) instead:

// Without repository mode:

LL.Design(LlProject.List, "C:\Reports\Invoice.lst")

 

// With repository mode — also applies to Export() and/or Print():

LL.FileRepository = new MyCustomRepository(…);

LL.Design(LlProject.List, "repository://{53F875F0-6177-8AD5-01B44E3A9867}")

All functions of the implementation of the IRepository interface are also passed the complete repository ID (prefix + ID) as a parameter. In repository mode, "files" become "repository items" (elements) and file names become "repository IDs". In addition to the ID, each repository item (element) has a type, a timestamp, and an identifier (variable-length string containing internal information). Your repository implementation must therefore be able to store and retrieve at least these four pieces of information for each repository item (element) in addition to the file content.

You will find a simple repository implementation in the ASP.NET sample projects (class SQLiteFileRepository) which provides a repository with an SQLite database for data storage.

For detailed descriptions of the methods to be implemented in the IRepository interface, please refer to the .NET online help (combit.ListLabel31.chm).