Ejemplo n.º 1
0
        internal static DataStorageDefinition GetStorageDefinition(this DataSet dataSet)
        {
            var storageDefinition = new DataStorageDefinition();

            foreach (var globalMetaEntry in dataSet.Metadata)
            {
                storageDefinition.GlobalMetadata[globalMetaEntry.Key] = globalMetaEntry.Value;
            }
            foreach (var variable in dataSet.Variables)
            {
                var metadataDict = new Dictionary <string, object>();
                storageDefinition.VariablesDimensions.Add(variable.Name, variable.Dimensions.Select(dim => dim.Name).ToArray());
                storageDefinition.VariablesTypes.Add(variable.Name, variable.TypeOfData);
                foreach (var varMetaEntry in variable.Metadata)
                {
                    metadataDict[varMetaEntry.Key] = varMetaEntry.Value;
                }
                storageDefinition.VariablesMetadata[variable.Name] = new ReadOnlyDictionary <string, object>(metadataDict);
            }
            foreach (var dim in dataSet.Dimensions)
            {
                storageDefinition.DimensionsLengths.Add(dim.Name, dim.Length);
            }
            return(storageDefinition);
        }
Ejemplo n.º 2
0
        public LinearizingStorageContext(DataSet dataSet)
        {
            this.dataSet    = dataSet;
            this.definition = dataSet.GetStorageDefinition();
            var uri = DataSetUri.Create(this.dataSet.URI);

            if (uri.ContainsParameter("dimensions"))
            {
                string dimstr   = uri.GetParameterValue("dimensions");
                var    dimpairs = dimstr.Split(',');
                foreach (var p in dimpairs)
                {
                    var pair = p.Split(':');
                    this.definition.DimensionsLengths[pair[0]] = int.Parse(pair[1]);
                }
            }
            requestHandler.ObserveOn(new EventLoopScheduler()).Subscribe(v =>
            {
                Perform(v);
            });
        }