protected override void SaveBindings() { var dataSourceId = DataSourceId.Deserialize(GetBinding <string>("SerializedDataSourceId")); var teaser = (ISharedTeaser)DataFacade.GetDataFromDataSourceId(dataSourceId); Teaser.SharedTeaserType = teaser.DataSourceId.InterfaceType.AssemblyQualifiedName; Teaser.SharedTeaserId = teaser.Id; }
protected void Page_PreRender(object sender, EventArgs e) { var dataSourceId = DataSourceId.Deserialize(Request.QueryString["DataSourceId"]); IData data = DataFacade.GetDataFromDataSourceId(dataSourceId); if (data is IMediaFile) { ViewMediaToolbar.Visible = true; ViewMediaContextMenu.Visible = true; } else { ViewDataToolbar.Visible = true; ViewDataContextMenu.Visible = true; } using (var dc = new DataConnection()) { var activities = VersioningFacade.GetActivities(dc, dataSourceId); activities = activities.Where(item => !(item.FirstOrDefault() == null && (item.Key.TaskType == "Edit" || item.Key.TaskType == "Rollback"))); string eventTarget = Context.Request.Form["__EVENTTARGET"]; if (eventTarget == "export") { GenerateXlsDocument(activities); } else { var entityToken = data.GetDataEntityToken(); BuildReportTable(activities, entityToken); } } }
private static void UpgradeStoredData() { const string _ET = "EntityToken"; const string _DSI = "DataSourceId"; List <string> magicPropertyNames = new List <string> { _ET, _DSI }; Func <DataFieldDescriptor, bool> isSerializedFieldFunc = g => magicPropertyNames.Any(s => g.Name.Contains(s)); var descriptors = DataMetaDataFacade.AllDataTypeDescriptors.Where(f => f.Fields.Any(isSerializedFieldFunc)); foreach (var descriptor in descriptors) { Type dataType = descriptor.GetInterfaceType(); if (dataType == null) { continue; } var propertiesToUpdate = new List <PropertyInfo>(); foreach (var tokenField in descriptor.Fields.Where(isSerializedFieldFunc)) { var tokenProperty = dataType.GetProperty(tokenField.Name); propertiesToUpdate.Add(tokenProperty); } using (var dc = new DataConnection(PublicationScope.Unpublished)) { var allRows = DataFacade.GetData(dataType).ToDataList(); foreach (var rowItem in allRows) { bool rowChange = false; foreach (var tokenProperty in propertiesToUpdate) { string token = tokenProperty.GetValue(rowItem) as string; if (tokenProperty.Name.Contains(_ET)) { try { var entityToken = EntityTokenSerializer.Deserialize(token); var tokenReserialized = EntityTokenSerializer.Serialize(entityToken); if (tokenReserialized != token) { tokenProperty.SetValue(rowItem, tokenReserialized); rowChange = true; } } catch (Exception ex) { _log.LogError(nameof(LegacySerializedEntityTokenUpgrader), "Failed to upgrade old token {0} from data type {1} as EntityToken.\n{2}", token, dataType.FullName, ex); } } if (tokenProperty.Name.Contains(_DSI)) { try { token = EnsureValidDataSourceId(token); var dataSourceId = DataSourceId.Deserialize(token); var dataSourceIdReserialized = dataSourceId.Serialize(); if (dataSourceIdReserialized != token) { tokenProperty.SetValue(rowItem, dataSourceIdReserialized); rowChange = true; } } catch (Exception ex) { _log.LogError(nameof(LegacySerializedEntityTokenUpgrader), "Failed to upgrade old token {0} from data type {1} as DataSourceId.\n{2}", token, dataType.FullName, ex); } } if (rowChange) { DataFacade.Update(rowItem); } } } } } }
private static void UpgradeStoredData() { const string _ET = "EntityToken"; const string _DSI = "DataSourceId"; List <string> magicPropertyNames = new List <string> { _ET, _DSI }; Func <DataFieldDescriptor, bool> isSerializedFieldFunc = g => magicPropertyNames.Any(s => g.Name.Contains(s)); var descriptors = DataMetaDataFacade.AllDataTypeDescriptors.Where(f => f.Fields.Any(isSerializedFieldFunc)); foreach (var descriptor in descriptors) { Type dataType = descriptor.GetInterfaceType(); if (dataType == null) { continue; } var propertiesToUpdate = new List <PropertyInfo>(); foreach (var tokenField in descriptor.Fields.Where(isSerializedFieldFunc)) { var tokenProperty = dataType.GetProperty(tokenField.Name); propertiesToUpdate.Add(tokenProperty); } using (new DataConnection(PublicationScope.Unpublished)) { var allRows = DataFacade.GetData(dataType).ToDataList(); var toUpdate = new List <IData>(); int errors = 0, updated = 0; foreach (var rowItem in allRows) { bool rowChange = false; foreach (var tokenProperty in propertiesToUpdate) { string token = tokenProperty.GetValue(rowItem) as string; try { string tokenReserialized; if (tokenProperty.Name.Contains(_ET)) { var entityToken = EntityTokenSerializer.Deserialize(token); tokenReserialized = EntityTokenSerializer.Serialize(entityToken); } else if (tokenProperty.Name.Contains(_DSI)) { token = EnsureValidDataSourceId(token); var dataSourceId = DataSourceId.Deserialize(token); tokenReserialized = dataSourceId.Serialize(); } else { throw new InvalidOperationException("This line should not be reachable"); } if (tokenReserialized != token) { tokenProperty.SetValue(rowItem, tokenReserialized); rowChange = true; } } catch (Exception ex) { errors++; if (errors <= MaxErrorMessagesPerType) { _log.LogError(LogTitle, $"Failed to upgrade old token '{token}' from data type '{dataType.FullName}' as EntityToken.\n{ex}"); } } } if (rowChange) { updated++; toUpdate.Add(rowItem); if (toUpdate.Count >= 1000) { DataFacade.Update(toUpdate, true, false, false); toUpdate.Clear(); } } } if (toUpdate.Count > 0) { DataFacade.Update(toUpdate, true, false, false); toUpdate.Clear(); } _log.LogInformation(LogTitle, $"Finished updating serialized tokens for data type '{dataType.FullName}'. Rows: {allRows.Count}, Updated: {updated}, Errors: {errors}"); } } }