Quintiq file version 2.0
|
#parent: #root
|
Method SyncSetMeta (const LibDEF_Set set_i, Boolean isDatasetConstructed_i)
|
{
|
Description: 'Performance improvement - only sync created/updated set'
|
TextBody:
|
[*
|
channel := set_i.SetType().Channel();
|
setType := set_i.SetType();
|
|
// Synchronization
|
channelMeta := LibDEF_ChannelMeta::CreateFromRepository( this, channel );
|
channelMeta.SyncFromRepository( channel );
|
|
setTypeMeta := LibDEF_SetTypeMeta::CreateFromRepository( this, channelMeta, setType );
|
|
isNew := false;
|
setMeta := LibDEF_SetMeta::CreateFromRepository( setTypeMeta, set_i, isNew );
|
setMeta.IsSoftDeleted( false );
|
|
hasUpdate := setMeta.SyncFromRepository( set_i );
|
|
// broadcast to other systems if new
|
if( isNew )
|
{
|
// Create Set interest for local datasets that already have interest in Set Type level
|
setTypeMeta.CreateSetInterestOfDatasets( setMeta );
|
|
// Create Set interest for external system that already have interest in Set Type level
|
setTypeMeta.CreateSetInterestFromSystem( setMeta );
|
|
this.SendMetadataRequestSetCreated( setMeta );
|
|
setMeta.SendSetCreated();
|
//setMeta.SendSetUpdated();
|
}
|
|
// Send SetUpdated if change in LastUpdated
|
else if( hasUpdate )
|
{
|
setMeta.SendSetUpdated();
|
}
|
|
|
// if the DataRepository just constructed (during wake-up), sync with the Domain too
|
dataBroker := this.DataBroker();
|
if( isDatasetConstructed_i and not dataBroker.IsInSyncWithDataRepository() )
|
{
|
// only connect when allowed, upon dataset constructed
|
if( LibDEF_Util::GetSettingValueConnectOnStartup() )
|
{
|
dataBroker.RequestJoinDomainOrBroadcast();
|
// also sync interests
|
LibDEF_SetInterestOfDataset::SyncDatasetStatusExternally( dataBroker );
|
}
|
dataBroker.IsInSyncWithDataRepository( true );
|
}
|
|
LibDEF_Util::Log( "Metadata in DataBroker has been synchronized with Data in DataRepository." );
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|