UNPKG

allex_dataservice

Version:
108 lines (104 loc) 4.79 kB
function createDataSuite(execlib, datalib){ 'use strict'; var lib = execlib.lib; /* var execSuite = execlib.execSuite, dataSuite = { storageRegistry: new execSuite.RegistryBase(), recordSuite: require('./record')(execlib) }; execlib.dataSuite = dataSuite; dataSuite.ObjectHive = require('./objectcreator')(execlib); require('./utils')(execlib); dataSuite.filterFactory = datafilterslib;//require('./filters/factorycreator')(execlib); dataSuite.QueryBase = require('./query/basecreator')(execlib); dataSuite.QueryClone = require('./query/clonecreator')(execlib); var DataCoder = require('./codercreator')(execlib), DataDecoder = require('./decodercreator')(execlib), streamSourceCreator = execSuite.streamSourceCreator; dataSuite.DataSource = streamSourceCreator(DataCoder); dataSuite.DataDecoder = DataDecoder; dataSuite.StreamDistributor = require('./distributorcreator')(execlib); dataSuite.DataManager = require('./managercreator')(execlib); dataSuite.DistributedDataManager = require('./distributedmanagercreator')(execlib); dataSuite.SpawningDataManager = require('./spawningmanagercreator')(execlib); dataSuite.StorageBase = require('./storage/basecreator')(execlib); dataSuite.NullStorage = require('./storage/nullcreator')(execlib); dataSuite.CloneStorage = require('./storage/clonecreator')(execlib); var MemoryStorageBase = require('./storage/memorybasecreator')(execlib); dataSuite.MemoryStorageBase = MemoryStorageBase; dataSuite.AsyncMemoryStorageBase = require('./storage/asyncmemorystoragebasecreator')(execlib); dataSuite.MemoryStorage = require('./storage/memorycreator')(execlib, MemoryStorageBase); dataSuite.MemoryListStorage = require('./storage/memorylistcreator')(execlib, MemoryStorageBase); dataSuite.storageRegistry.register('memory', dataSuite.MemoryListStorage); dataSuite.storageRegistry.register('memorylist', dataSuite.MemoryListStorage); */ function copierWOFields(dest,item,itemname){ if(itemname==='fields'){ return; } dest[itemname] = item; } function nameFinder(findobj,name,item){ if(item && item.name===name){ findobj.result = item; return true; } } function getNamedItem(arry,name){ var findobj={result:null}; arry.some(nameFinder.bind(null,findobj,name)); return findobj.result; }; function namedSetter(setitem,item,itemindex,arry){ if(item && item.name===setitem.name){ arry[itemindex] = setitem; return true; } } function setNamedItem(arry,item){ if(!item){ return; } if(!arry.some(namedSetter.bind(null,item))){ arry.push(item); }; }; function copyNamedItems(src,dest,fieldnamesarry){ if(!(lib.isArray(src) && lib.isArray(dest))){ return; } fieldnamesarry.forEach(function(fn){ var item = getNamedItem(src,fn); if(item){ setNamedItem(dest,item); } }); } function sinkInheritProcCreator(classname,originalUIP){//originalUIP <=> original User inheritance proc //classname not used, but may be useful for error reporting... return function(childCtor,methodDescriptors,visiblefieldsarray){ originalUIP.call(this,childCtor,methodDescriptors); childCtor.prototype.visibleFields = datalib.recordSuite.copyAndAppendNewElements(this.prototype.visibleFields,visiblefieldsarray); childCtor.inherit = this.inherit; //console.log('after inherit',childCtor.prototype.visibleFields,'out of parent',this.prototype.visibleFields,'and',visiblefieldsarray); }; } var sinkPreInheritProc = sinkInheritProcCreator('DataSink',execlib.execSuite.registry.clientSides.get('.').get('user').inherit); function sinkInheritProc(childCtor,methodDescriptors,visiblefieldsarray,classStorageDescriptor){ sinkPreInheritProc.call(this,childCtor,methodDescriptors,visiblefieldsarray); var recordDescriptor = {}; lib.traverseShallow(this.prototype.recordDescriptor,copierWOFields.bind(null,recordDescriptor)); var fields = []; if(this.prototype.recordDescriptor){ copyNamedItems(this.prototype.recordDescriptor.fields,fields,childCtor.prototype.visibleFields); } lib.traverseShallow(classStorageDescriptor.record, copierWOFields.bind(null,recordDescriptor)); copyNamedItems(classStorageDescriptor.record.fields,fields,childCtor.prototype.visibleFields); recordDescriptor.fields = fields; childCtor.prototype.recordDescriptor = recordDescriptor; } datalib.recordSuite.sinkInheritProc = sinkInheritProc; execlib.dataSuite = datalib; } module.exports = createDataSuite;