private static void SetNodeRow(DataRow row, NodeHeadData node, MsSqlDataProvider dataProvider) { row["NodeId"] = node.NodeId; row["NodeTypeId"] = node.NodeTypeId; row["CreatingInProgress"] = node.CreatingInProgress ? Yes : No; row["IsDeleted"] = node.IsDeleted ? Yes : No; row["IsInherited"] = (byte)0; row["ParentNodeId"] = node.ParentNodeId; row["Name"] = node.Name; row["Path"] = node.Path; row["Index"] = node.Index; row["Locked"] = node.Locked ? Yes : No; row["ETag"] = node.ETag ?? string.Empty; row["LockType"] = node.LockType; row["LockTimeout"] = node.LockTimeout; row["LockDate"] = AlignDateTime(node.LockDate, dataProvider); row["LockToken"] = node.LockToken ?? string.Empty; row["LastLockUpdate"] = AlignDateTime(node.LastLockUpdate, dataProvider); row["LastMinorVersionId"] = node.LastMinorVersionId; row["LastMajorVersionId"] = node.LastMajorVersionId; row["CreationDate"] = AlignDateTime(node.CreationDate, dataProvider); row["CreatedById"] = node.CreatedById; row["ModificationDate"] = AlignDateTime(node.ModificationDate, dataProvider); row["ModifiedById"] = node.ModifiedById; row["IsSystem"] = node.IsSystem ? Yes : No; row["OwnerId"] = node.OwnerId; row["SavingState"] = node.SavingState; }
private static DateTime AlignDateTime(DateTime dateTime, MsSqlDataProvider dataProvider) { if (dateTime > dataProvider.DateTimeMaxValue) { dateTime = dataProvider.DateTimeMaxValue; } if (dateTime < dataProvider.DateTimeMinValue) { dateTime = dataProvider.DateTimeMinValue; } return(dateTime); }
public static async Task InstallInitialDataAsync(InitialData data, MsSqlDataProvider dataProvider, string connectionString, CancellationToken cancellationToken) { var dataSet = new DataSet(); CreateTableStructure(dataSet); _columnNames = dataSet.Tables.Cast <DataTable>().ToDictionary( table => table.TableName, table => table.Columns.Cast <DataColumn>().Select(x => x.ColumnName).ToArray()); CreateData(dataSet, data, dataProvider); await WriteToDatabaseAsync(dataSet, connectionString, cancellationToken).ConfigureAwait(false); }
private static void SetVersionRow(DataRow row, VersionData version, IDictionary <PropertyType, object> dynamicProperties, MsSqlDataProvider dataProvider) { row["VersionId"] = version.VersionId; row["NodeId"] = version.NodeId; row["MajorNumber"] = version.Version.Major; row["MinorNumber"] = version.Version.Minor; row["Status"] = (byte)version.Version.Status; row["CreationDate"] = AlignDateTime(version.CreationDate, dataProvider); row["CreatedById"] = version.CreatedById; row["ModificationDate"] = AlignDateTime(version.CreationDate, dataProvider); row["ModifiedById"] = version.ModifiedById; row["IndexDocument"] = null; row["ChangedData"] = null; row["DynamicProperties"] = dynamicProperties == null ? null : dataProvider.SerializeDynamicProperties(dynamicProperties); }
private static void SetNodeTypeRow(DataRow row, NodeTypeData nodeType, List <NodeTypeData> allNodeTypes, MsSqlDataProvider dataProvider) { row["NodeTypeId"] = nodeType.Id; row["Name"] = nodeType.Name; row["ParentId"] = (object)allNodeTypes.FirstOrDefault(x => x.Name == nodeType.ParentName)?.Id ?? DBNull.Value; row["ClassName"] = nodeType.ClassName; row["Properties"] = string.Join(" ", nodeType.Properties); }
private static void SetPropertyTypeRow(DataRow row, PropertyTypeData propertyType, MsSqlDataProvider dataProvider) { row["PropertyTypeId"] = propertyType.Id; row["Name"] = propertyType.Name; row["DataType"] = propertyType.DataType.ToString(); row["Mapping"] = propertyType.Mapping; row["IsContentListProperty"] = propertyType.IsContentListProperty ? Yes : No; }
/* ==================================================================================================== Fill Data */ private static void CreateData(DataSet dataSet, InitialData data, MsSqlDataProvider dataProvider) { var now = DateTime.UtcNow; var propertyTypes = dataSet.Tables[TableName.PropertyTypes]; foreach (var propertyType in data.Schema.PropertyTypes) { var row = propertyTypes.NewRow(); SetPropertyTypeRow(row, propertyType, dataProvider); propertyTypes.Rows.Add(row); } var nodeTypes = dataSet.Tables[TableName.NodeTypes]; foreach (var nodeType in data.Schema.NodeTypes) { var row = nodeTypes.NewRow(); SetNodeTypeRow(row, nodeType, data.Schema.NodeTypes, dataProvider); nodeTypes.Rows.Add(row); } var nodes = dataSet.Tables[TableName.Nodes]; foreach (var node in data.Nodes) { var row = nodes.NewRow(); node.CreationDate = now; node.ModificationDate = now; SetNodeRow(row, node, dataProvider); nodes.Rows.Add(row); } var versions = dataSet.Tables[TableName.Versions]; var longTexts = dataSet.Tables[TableName.LongTextProperties]; var refProps = dataSet.Tables[TableName.ReferenceProperties]; var binaryProperties = dataSet.Tables[TableName.BinaryProperties]; var files = dataSet.Tables[TableName.Files]; var longTextId = 0; var refPropId = 0; foreach (var version in data.Versions) { var props = data.DynamicProperties.FirstOrDefault(x => x.VersionId == version.VersionId); if (props?.LongTextProperties != null) { foreach (var longTextData in props.LongTextProperties) { var longTextRow = longTexts.NewRow(); var propertyTypeId = data.Schema.PropertyTypes.FirstOrDefault(x => x.Name == longTextData.Key.Name)?.Id ?? 0; SetLongTextPropertyRow(longTextRow, ++longTextId, version.VersionId, propertyTypeId, longTextData.Value); longTexts.Rows.Add(longTextRow); } } if (props?.ReferenceProperties != null) { foreach (var referenceData in props.ReferenceProperties) { var propertyTypeId = data.Schema.PropertyTypes.FirstOrDefault(x => x.Name == referenceData.Key.Name)?.Id ?? 0; foreach (var value in referenceData.Value) { var refPropRow = refProps.NewRow(); SetReferencePropertyRow(refPropRow, ++refPropId, version.VersionId, propertyTypeId, value); refProps.Rows.Add(refPropRow); } } } if (props?.BinaryProperties != null) { foreach (var binaryPropertyData in props.BinaryProperties) { var binaryPropertyRow = binaryProperties.NewRow(); var propertyTypeId = data.Schema.PropertyTypes.FirstOrDefault(x => x.Name == binaryPropertyData.Key.Name)?.Id ?? 0; SetBinaryPropertyRow(binaryPropertyRow, version.VersionId, propertyTypeId, binaryPropertyData.Value); binaryProperties.Rows.Add(binaryPropertyRow); var fileRow = files.NewRow(); SetFileRow(fileRow, binaryPropertyData.Value, data, binaryPropertyData.Key.Name); files.Rows.Add(fileRow); } } var versionRow = versions.NewRow(); version.CreationDate = now; version.ModificationDate = now; SetVersionRow(versionRow, version, props?.DynamicProperties, dataProvider); versions.Rows.Add(versionRow); } }