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); }
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); }); }