SAs Toolbox
The SasToolbox
is extending the abstract classes Repository
, StreamImporter
and StreamExporter
but the implementation is Nova itself, in a way the SasToolbox
is a pocket version of Nova.
The SasRepository
that is the Repository
implementation of the SasToolbox
is also an
implementation of the Nova interface IStorageProvider
.
SAs Repository
When a SasRepository
is instantiated a storage folder will be created in the temp folder
for the machine. The storage folder will be deleted when the SasRepository
is disposed,
so it is important to dispose a SasRepository
when it is no longer used.
Import Data
The SasToolbox
has an implementation for StreamImporter
used to read data from a Stream
into the SasRepository
. It is not possible to use the importer directly instead a Read
method is created on the SasRepository
that takes a fileName
i.e. a path to the binary
file to be read into the repository. Before reading a file into a repository call the
BeginCommit
method and right after the file is read into the repository the Commit
method should be called.
Export Data
The SasToolbox
has an implementation for StreamExporter
used to write data to a Stream
from the SasRepository
. It is not possible to use the exporter directly instead a Write
method is created on the SasRepository
that takes a fileName
i.e. a path where to write
the binary file to disc.
Create Data
When creating data you must always start with the BeginCommit
method and finish with
the Commit
method unless the data is created in a mapper since the mapper will do that
for you.
The SasToolbox
is a bit different from other toolboxes. One difference is that data created
with any of the toolbox Create
methods must be subtypes to RootObject
, i.e. a
UnitOfInformation
, e.g. Part
, Document
, ZoneElement
etc. and not e.g. PartVersion
etc.
Subtypes to EntryObject
such as DocumentReference
, DateTimeAssignment
, PartVersion
etc.
have to be created from an instance with the New
method e.g. NewDocumentReference
to create
a DocumentReference
. This can make mapping more complicated since it is not possible to make
a mapping to an EntryObject
a PublicMapping
i.e. a mapping that the mapping framework does
without being called as a sub-mapping from another mapping.
Repository Methods Not Implemented
Since the SasToolbox
is bit different the implementation is also different e.g some of the
mandatory methods to implement from the abstract Repository
is not implemented.
- The mandatory method
NextKey
is not implemented and will throw aNotImplementedException
- The mandatory method
SetKey
is not implemented with any logic but will not throw aNotImplementedException
A couple of the Repository
virtual methods have been overridden without any logic added.
AddedObjectTrigger
method is overridden but has no logic and the base method is not called.DeleteObjectTrigger
method is overridden but has no logic and the base method is not called.RegisterEntityForChangeEvent
method is overridden but has no logic and the base method is not called.UpdateObjectTrigger
method is overridden but has no logic and the base method is not called.
IStorageProvider Methods Not To Be Used
Even though the implementation of the SasToolbox
resembles ShareAspace, some functions in the
implementation of IStorageProvider
in the SasRepository
is different from ShareAspace in general.
The SasToolbox
does not use the access engine so any HasPermission
method will always return
true
. It is not possible to add access rights and not possible to have different owners, all
data will be owned by the same Participant
that the Role
of the user has when scheduling the job.
Working with files is something that might work but is not an intended function in the
SasRepository
so the following methods are not recommended to use in any way:
GetMyFiles
GetCollaborationContainer
GetParticipantContainer
GetFileVaultBlob
GetBlob