protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, ref object value) { if (table.Name == "crm_invoice" && columnName == "json_data") { var data = JObject.Parse((string)value); var oldValue = Convert.ToInt32(data["LogoBase64Id"]); if (oldValue != 0) { data["LogoBase64Id"] = Convert.ToInt32(columnMapper.GetMapping("crm_organisation_logo", "id", oldValue)); } oldValue = Convert.ToInt32(data["DeliveryAddressID"]); if (oldValue != 0) { data["DeliveryAddressID"] = Convert.ToInt32(columnMapper.GetMapping("crm_contact_info", "id", oldValue)); } oldValue = Convert.ToInt32(data["BillingAddressID"]); if (oldValue != 0) { data["BillingAddressID"] = Convert.ToInt32(columnMapper.GetMapping("crm_contact_info", "id", oldValue)); } value = data.ToString(); return(true); } return(base.TryPrepareValue(connection, columnMapper, table, columnName, ref value)); }
private static string PreparePath(ColumnMapper columnMapper, string partsSeparator, string path) { string[] parts = path.Split(new[] { partsSeparator }, StringSplitOptions.None); if (parts.Length != 4) { return(null); } var categoryId = columnMapper.GetMapping("forum_category", "id", parts[0]); if (categoryId == null) { return(null); } var threadId = columnMapper.GetMapping("forum_thread", "id", parts[1]); if (threadId == null) { return(null); } parts[0] = categoryId.ToString(); parts[1] = threadId.ToString(); return(string.Join(partsSeparator, parts)); }
protected override bool TryPrepareValue(bool dump, DbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable <RelationInfo> relations, ref object value) { if (table.Name == "projects_tasks_order" && columnName == "task_order") { value = Regex.Replace( Convert.ToString(value), @"(?<=""tasks"":\[(\d+,)*)\d+,?", match => { var mappedId = Convert.ToString(columnMapper.GetMapping("projects_tasks", "id", match.Value.TrimEnd(','))); return(!string.IsNullOrEmpty(mappedId) && match.Value.EndsWith(",") ? mappedId + "," : mappedId); }, RegexOptions.Compiled); value = Regex.Replace( Convert.ToString(value), @"(?<=""milestones"":\[(\d+,)*)\d+,?", match => { var mappedId = Convert.ToString(columnMapper.GetMapping("projects_milestones", "id", match.Value.TrimEnd(','))); return(!string.IsNullOrEmpty(mappedId) && match.Value.EndsWith(",") ? mappedId + "," : mappedId); }, RegexOptions.Compiled); return(true); } return(base.TryPrepareValue(dump, connection, columnMapper, table, columnName, relations, ref value)); }
protected override bool TryPrepareValue(bool dump, DbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable <RelationInfo> relations, ref object value) { relations = relations.ToList(); if (relations.All(x => x.ChildTable == "mail_chain" && x.ChildColumn == "tags")) { var mappedTags = new List <string>(); foreach (var tag in value.ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(x => Convert.ToInt32(x))) { object tagId; if (tag > 0) { tagId = columnMapper.GetMapping("mail_tag", "id", tag); } else { tagId = columnMapper.GetMapping("crm_tag", "id", -tag); if (tagId != null) { tagId = -Convert.ToInt32(tagId); } } if (tagId != null) { mappedTags.Add(tagId.ToString()); } } value = string.Join(",", mappedTags.ToArray()); return(true); } return(base.TryPrepareValue(dump, connection, columnMapper, table, columnName, relations, ref value)); }
protected override bool TryPrepareValue(bool dump, DbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable <RelationInfo> relations, ref object value) { var relationList = relations.ToList(); if (relationList.All(x => x.ChildTable == "core_subscription" && x.ChildColumn == "object" && x.ParentTable.StartsWith("projects_"))) { var valParts = Convert.ToString(value).Split('_'); var projectId = columnMapper.GetMapping("projects_projects", "id", valParts[2]); if (projectId == null) { return(false); } var firstRelation = relationList.First(x => x.ParentTable != "projects_projects"); var entityId = columnMapper.GetMapping(firstRelation.ParentTable, firstRelation.ParentColumn, valParts[1]); if (entityId == null) { return(false); } value = string.Format("{0}_{1}_{2}", valParts[0], entityId, projectId); return(true); } if (relationList.All(x => x.ChildTable == "core_subscription" && x.ChildColumn == "recipient") || relationList.All(x => x.ChildTable == "core_subscriptionmethod" && x.ChildColumn == "recipient") || relationList.All(x => x.ChildTable == "core_acl" && x.ChildColumn == "subject")) { var strVal = Convert.ToString(value); if (Helpers.IsEmptyOrSystemUser(strVal) || Helpers.IsEmptyOrSystemGroup(strVal)) { return(true); } foreach (var relation in relationList) { var mapping = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, value); if (mapping != null) { value = mapping; return(true); } } return(false); } return(base.TryPrepareValue(dump, connection, columnMapper, table, columnName, relationList, ref value)); }
protected override bool TryPrepareRow(bool dump, DbConnection connection, ColumnMapper columnMapper, TableInfo table, DataRowInfo row, out Dictionary <string, object> preparedRow) { if (row.TableName == "files_thirdparty_id_mapping") { //todo: think... preparedRow = new Dictionary <string, object>(); object folderId = null; var sboxId = Regex.Replace(row[1].ToString(), @"(?<=(?:sbox-|box-|dropbox-|spoint-|drive-|onedrive-))\d+", match => { folderId = columnMapper.GetMapping("files_thirdparty_account", "id", match.Value); return(Convert.ToString(folderId)); }, RegexOptions.Compiled); if (folderId == null) { return(false); } var hashBytes = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(sboxId)); var hashedId = BitConverter.ToString(hashBytes).Replace("-", "").ToLower(); preparedRow.Add("hash_id", hashedId); preparedRow.Add("id", sboxId); preparedRow.Add("tenant_id", columnMapper.GetTenantMapping()); columnMapper.SetMapping("files_thirdparty_id_mapping", "hash_id", row["hash_id"], hashedId); return(true); } return(base.TryPrepareRow(dump, connection, columnMapper, table, row, out preparedRow)); }
protected override bool TryPrepareValue(bool dump, DbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable <RelationInfo> relations, ref object value) { var relationList = relations.ToList(); if (relationList.All(x => x.ChildTable == "files_security" && x.ChildColumn == "subject")) { //note: value could be ShareForEveryoneID and in that case result should be always false var strVal = Convert.ToString(value); if (Helpers.IsEmptyOrSystemUser(strVal) || Helpers.IsEmptyOrSystemGroup(strVal)) { return(true); } foreach (var relation in relationList) { var mapping = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, value); if (mapping != null) { value = mapping; return(true); } } return(false); } return(base.TryPrepareValue(dump, connection, columnMapper, table, columnName, relationList, ref value)); }
protected virtual bool TryPrepareValue(DbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, ref object value) { if (columnName.Equals(table.TenantColumn, StringComparison.OrdinalIgnoreCase)) { var tenantMapping = columnMapper.GetTenantMapping(); if (tenantMapping < 1) { return(false); } value = tenantMapping; return(true); } if (table.UserIDColumns.Any(x => columnName.Equals(x, StringComparison.OrdinalIgnoreCase))) { var strVal = Convert.ToString(value); var userMapping = columnMapper.GetUserMapping(strVal); if (userMapping == null) { return(helpers.IsEmptyOrSystemUser(strVal)); } value = userMapping; return(true); } var mapping = columnMapper.GetMapping(table.Name, columnName, value); if (mapping != null) { value = mapping; } return(true); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "files_bunch_objects" && relation.ChildColumn == "right_node" || relation.ChildTable == "files_tag" && relation.ChildColumn == "name") { var strValue = Convert.ToString(value); string start = GetStart(strValue); if (start == null) { return(false); } var entityId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, strValue.Substring(start.Length)); if (entityId == null) { return(false); } value = strValue.Substring(0, start.Length) + entityId; return(true); } return(base.TryPrepareValue(connection, columnMapper, relation, ref value)); }
protected virtual bool TryPrepareValue(DbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { var mappedValue = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, value); if (mappedValue != null) { value = mappedValue; return(true); } return(value == null || Guid.TryParse(Convert.ToString(value), out _) || int.TryParse(Convert.ToString(value), out _)); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var match = Regex.Match(filePath, @"(?<=folder_\d+/message_)\d+(?=\.html)"); //todo: if (match.Success) { var mappedMessageId = Convert.ToString(columnMapper.GetMapping("mail_mail", "id", match.Value)); if (!string.IsNullOrEmpty(mappedMessageId)) { filePath = string.Format("folder_{0}/message_{1}.html", (Convert.ToInt32(mappedMessageId) / 1000 + 1) * 1000, mappedMessageId); } return(true); } return(base.TryAdjustFilePath(columnMapper, ref filePath)); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var pathMatch = Regex.Match(filePath, @"^photos/\d+/\d+/\d+/contact_(?'contactId'\d+)(?'sizeExtension'_\d+_\d+\.\w+)$", RegexOptions.Compiled); if (pathMatch.Success) { var contactId = columnMapper.GetMapping("crm_contact", "id", pathMatch.Groups["contactId"].Value); if (contactId == null) return false; var s = contactId.ToString().PadLeft(6, '0'); filePath = string.Format("photos/{0}/{1}/{2}/contact_{3}{4}", s.Substring(0, 2), s.Substring(2, 2), s.Substring(4), contactId, pathMatch.Groups["sizeExtension"].Value); return true; } return false; }
protected virtual bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { var mappedValue = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, value); if (mappedValue != null) { value = mappedValue; return(true); } Guid guidVal; int intVal; return(value == null || (Guid.TryParse(Convert.ToString(value), out guidVal) && guidVal == Guid.Empty) || (int.TryParse(Convert.ToString(value), out intVal) && intVal <= 0)); }
protected override bool TryPrepareValue(DbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ParentTable == "crm_tag" && relation.ChildColumn == "id_tag" && (relation.ChildTable == "mail_tag_mail" || relation.ChildTable == "mail_tag_addresses")) { var crmTagId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, -Convert.ToInt32(value)); if (crmTagId == null) { return(false); } value = -Convert.ToInt32(crmTagId); return(true); } return(base.TryPrepareValue(connection, columnMapper, relation, ref value)); }
protected override bool TryPrepareValue(DbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "core_acl" && relation.ChildColumn == "object") { var valParts = Convert.ToString(value).Split('|'); var entityId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, valParts[1]); if (entityId == null) { return(false); } value = string.Format("{0}|{1}", valParts[0], entityId); return(true); } return(base.TryPrepareValue(connection, columnMapper, relation, ref value)); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ParentTable == "crm_organisation_logo") { bool success = true; value = Regex.Replace( Convert.ToString(value), @"(?<=""CompanyLogoID"":)\d+", match => { var mappedMessageId = Convert.ToString(columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, match.Value)); success = !string.IsNullOrEmpty(mappedMessageId) || Convert.ToInt32(match.Value) == 0; return(mappedMessageId); }); return(success); } return(base.TryPrepareValue(connection, columnMapper, relation, ref value)); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ParentTable == "crm_organisation_logo") { bool success = true; value = Regex.Replace( Convert.ToString(value), @"(?<=""CompanyLogoID"":)\d+", match => { var mappedMessageId = Convert.ToString(columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, match.Value)); success = !string.IsNullOrEmpty(mappedMessageId) || Convert.ToInt32(match.Value) == 0; return mappedMessageId; }); return success; } return base.TryPrepareValue(connection, columnMapper, relation, ref value); }
protected override bool TryPrepareValue(DbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "projects_comments" && relation.ChildColumn == "target_uniq_id") { var valParts = value.ToString().Split('_'); var entityId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, valParts[1]); if (entityId == null) { return(false); } value = string.Format("{0}_{1}", valParts[0], entityId); return(true); } return(base.TryPrepareValue(connection, columnMapper, relation, ref value)); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var match = Regex.Match(filePath, @"^folder_\d+/file_(?'fileId'\d+)/(?'versionExtension'v\d+/[\.\w]+)$", RegexOptions.Compiled); if (match.Success) { var fileId = columnMapper.GetMapping("files_file", "id", match.Groups["fileId"].Value); if (fileId == null) { return(false); } filePath = string.Format("folder_{0}/file_{1}/{2}", (Convert.ToInt32(fileId) / 1000 + 1) * 1000, fileId, match.Groups["versionExtension"].Value); return(true); } return(false); }
protected override bool TryPrepareValue(DbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "crm_relationship_event" && relation.ChildColumn == "content") { value = Regex.Replace( Convert.ToString(value), @"(?<=""message_id"":|/products/crm/httphandlers/filehandler\.ashx\?action=mailmessage&message_id=)\d+", match => { var mappedMessageId = Convert.ToString(columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, match.Value)); var success = !string.IsNullOrEmpty(mappedMessageId); return(success ? mappedMessageId : match.Value); }); return(true); } return(base.TryPrepareValue(connection, columnMapper, relation, ref value)); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var pathMatch = Regex.Match(filePath, @"^photos/\d+/\d+/\d+/contact_(?'contactId'\d+)(?'sizeExtension'_\d+_\d+\.\w+)$", RegexOptions.Compiled); if (pathMatch.Success) { var contactId = columnMapper.GetMapping("crm_contact", "id", pathMatch.Groups["contactId"].Value); if (contactId == null) { return(false); } var s = contactId.ToString().PadLeft(6, '0'); filePath = string.Format("photos/{0}/{1}/{2}/contact_{3}{4}", s.Substring(0, 2), s.Substring(2, 2), s.Substring(4), contactId, pathMatch.Groups["sizeExtension"].Value); return(true); } return(false); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var match = Regex.Match(filePath, @"^thumbs/\d+/\d+/\d+/(?'fileId'\d+)\.jpg$"); if (match.Success) { var fileId = columnMapper.GetMapping("files_file", "id", match.Groups["fileId"].Value); if (fileId == null) { return(false); } var s = fileId.ToString().PadRight(6, '0'); filePath = string.Format("thumbs/{0}/{1}/{2}/{3}.jpg", s.Substring(0, 2), s.Substring(2, 2), s.Substring(4), fileId); return(true); } return(false); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, ref object value) { if (table.Name == "files_file" && columnName == "id") { //In `files_file` possible multiple rows with the same value of the column `id`. //If such row was not inserted before current iteration then we need to create value for the `id` first. var fileId = columnMapper.GetMapping(table.Name, columnName, value); if (fileId == null) { fileId = connection .CreateCommand("select max(id) from files_file;") .WithTimeout(120) .ExecuteScalar <int>() + 1; columnMapper.SetMapping(table.Name, columnName, value, fileId); } value = fileId; return(true); } return(base.TryPrepareValue(connection, columnMapper, table, columnName, ref value)); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable<RelationInfo> relations, ref object value) { if (table.Name == "projects_tasks_order" && columnName == "task_order") { value = Regex.Replace( Convert.ToString(value), @"(?<=""tasks"":\[(\d+,)*)\d+,?", match => { var mappedId = Convert.ToString(columnMapper.GetMapping("projects_tasks", "id", match.Value.TrimEnd(','))); return !string.IsNullOrEmpty(mappedId) && match.Value.EndsWith(",") ? mappedId + "," : mappedId; }, RegexOptions.Compiled); value = Regex.Replace( Convert.ToString(value), @"(?<=""milestones"":\[(\d+,)*)\d+,?", match => { var mappedId = Convert.ToString(columnMapper.GetMapping("projects_milestones", "id", match.Value.TrimEnd(','))); return !string.IsNullOrEmpty(mappedId) && match.Value.EndsWith(",") ? mappedId + "," : mappedId; }, RegexOptions.Compiled); return true; } return base.TryPrepareValue(connection, columnMapper, table, columnName, relations, ref value); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "projects_comments" && relation.ChildColumn == "target_uniq_id") { var valParts = value.ToString().Split('_'); var entityId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, valParts[1]); if (entityId == null) return false; value = string.Format("{0}_{1}", valParts[0], entityId); return true; } return base.TryPrepareValue(connection, columnMapper, relation, ref value); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var match = Regex.Match(filePath, @"(?<=folder_\d+/message_)\d+(?=\.html)"); //todo: if (match.Success) { var mappedMessageId = Convert.ToString(columnMapper.GetMapping("mail_mail", "id", match.Value)); if (string.IsNullOrEmpty(mappedMessageId)) return false; filePath = string.Format("folder_{0}/message_{1}.html", (Convert.ToInt32(mappedMessageId)/1000 + 1)*1000, mappedMessageId); return true; } return base.TryAdjustFilePath(columnMapper, ref filePath); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var match = Regex.Match(filePath, @"^thumbs/\d+/\d+/\d+/(?'fileId'\d+)\.jpg$"); if (match.Success) { var fileId = columnMapper.GetMapping("files_file", "id", match.Groups["fileId"].Value); if (fileId == null) return false; var s = fileId.ToString().PadRight(6, '0'); filePath = string.Format("thumbs/{0}/{1}/{2}/{3}.jpg", s.Substring(0, 2), s.Substring(2, 2), s.Substring(4), fileId); return true; } return false; }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable<RelationInfo> relations, ref object value) { relations = relations.ToList(); if (relations.All(x => x.ChildTable == "mail_chain" && x.ChildColumn == "tags")) { var mappedTags = new List<string>(); foreach (var tag in value.ToString().Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Select(x => Convert.ToInt32(x))) { object tagId; if (tag > 0) { tagId = columnMapper.GetMapping("mail_tag", "id", tag); } else { tagId = columnMapper.GetMapping("crm_tag", "id", -tag); if (tagId != null) { tagId = -Convert.ToInt32(tagId); } } if (tagId != null) { mappedTags.Add(tagId.ToString()); } } value = string.Join(",", mappedTags.ToArray()); return true; } return base.TryPrepareValue(connection, columnMapper, table, columnName, relations, ref value); }
protected override bool TryPrepareValue(System.Data.IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "crm_relationship_event" && relation.ChildColumn == "content") { bool success = true; value = Regex.Replace( Convert.ToString(value), @"(?<=""message_id"":|/products/crm/httphandlers/filehandler\.ashx\?action=mailmessage&message_id=)\d+", match => { var mappedMessageId = Convert.ToString(columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, match.Value)); success = !string.IsNullOrEmpty(mappedMessageId); return mappedMessageId; }); return success; } return base.TryPrepareValue(connection, columnMapper, relation, ref value); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable<RelationInfo> relations, ref object value) { var relationList = relations.ToList(); if (relationList.All(x => x.ChildTable == "core_subscription" && x.ChildColumn == "object" && x.ParentTable.StartsWith("projects_"))) { var valParts = Convert.ToString(value).Split('_'); var projectId = columnMapper.GetMapping("projects_projects", "id", valParts[2]); if (projectId == null) return false; var firstRelation = relationList.First(x => x.ParentTable != "projects_projects"); var entityId = columnMapper.GetMapping(firstRelation.ParentTable, firstRelation.ParentColumn, valParts[1]); if (entityId == null) return false; value = string.Format("{0}_{1}_{2}", valParts[0], entityId, projectId); return true; } if (relationList.All(x => x.ChildTable == "core_subscription" && x.ChildColumn == "recipient") || relationList.All(x => x.ChildTable == "core_subscriptionmethod" && x.ChildColumn == "recipient") || relationList.All(x => x.ChildTable == "core_acl" && x.ChildColumn == "subject")) { var strVal = Convert.ToString(value); if (Helpers.IsEmptyOrSystemUser(strVal) || Helpers.IsEmptyOrSystemGroup(strVal)) return true; foreach (var relation in relationList) { var mapping = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, value); if (mapping != null) { value = mapping; return true; } } return false; } return base.TryPrepareValue(connection, columnMapper, table, columnName, relationList, ref value); }
public override bool TryAdjustFilePath(ColumnMapper columnMapper, ref string filePath) { var match = Regex.Match(filePath, @"^folder_\d+/file_(?'fileId'\d+)/(?'versionExtension'v\d+/[\.\w]+)$", RegexOptions.Compiled); if (match.Success) { var fileId = columnMapper.GetMapping("files_file", "id", match.Groups["fileId"].Value); if (fileId == null) return false; filePath = string.Format("folder_{0}/file_{1}/{2}", (Convert.ToInt32(fileId)/1000 + 1)*1000, fileId, match.Groups["versionExtension"].Value); return true; } return false; }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "files_bunch_objects" && relation.ChildColumn == "right_node" || relation.ChildTable == "files_tag" && relation.ChildColumn == "name") { var strValue = Convert.ToString(value); string start = GetStart(strValue); if (start == null) return false; var entityId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, strValue.Substring(start.Length)); if (entityId == null) return false; value = strValue.Substring(0, start.Length) + entityId; return true; } return base.TryPrepareValue(connection, columnMapper, relation, ref value); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ChildTable == "core_acl" && relation.ChildColumn == "object") { var valParts = Convert.ToString(value).Split('|'); var entityId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, valParts[1]); if (entityId == null) return false; value = string.Format("{0}|{1}", valParts[0], entityId); return true; } return base.TryPrepareValue(connection, columnMapper, relation, ref value); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, IEnumerable<RelationInfo> relations, ref object value) { var relationList = relations.ToList(); if (relationList.All(x => x.ChildTable == "files_security" && x.ChildColumn == "subject")) { //note: value could be ShareForEveryoneID and in that case result should be always false var strVal = Convert.ToString(value); if (Helpers.IsEmptyOrSystemUser(strVal) || Helpers.IsEmptyOrSystemGroup(strVal)) return true; foreach (var relation in relationList) { var mapping = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, value); if (mapping != null) { value = mapping; return true; } } return false; } return base.TryPrepareValue(connection, columnMapper, table, columnName, relationList, ref value); }
protected virtual bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, ref object value) { if (columnName.Equals(table.TenantColumn, StringComparison.OrdinalIgnoreCase)) { int tenantMapping = columnMapper.GetTenantMapping(); if (tenantMapping < 1) return false; value = tenantMapping; return true; } if (table.UserIDColumns.Any(x => columnName.Equals(x, StringComparison.OrdinalIgnoreCase))) { var strVal = Convert.ToString(value); string userMapping = columnMapper.GetUserMapping(strVal); if (userMapping == null) return Helpers.IsEmptyOrSystemUser(strVal); value = userMapping; return true; } var mapping = columnMapper.GetMapping(table.Name, columnName, value); if (mapping != null) value = mapping; return true; }
protected override bool TryPrepareRow(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, DataRowInfo row, out Dictionary<string, object> preparedRow) { if (row.TableName == "files_thirdparty_id_mapping") { //todo: think... preparedRow = new Dictionary<string, object>(); object folderId = null; var sboxId = Regex.Replace(row[1].ToString(), @"(?<=sbox-)\d+", match => { folderId = columnMapper.GetMapping("files_thirdparty_account", "id", match.Value); return Convert.ToString(folderId); }, RegexOptions.Compiled); if (folderId == null) return false; var hashBytes = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(sboxId)); var hashedId = BitConverter.ToString(hashBytes).Replace("-", "").ToLower(); preparedRow.Add("hash_id", hashedId); preparedRow.Add("id", sboxId); preparedRow.Add("tenant_id", columnMapper.GetTenantMapping()); columnMapper.SetMapping("files_thirdparty_id_mapping", "hash_id", row["hash_id"], hashedId); return true; } return base.TryPrepareRow(connection, columnMapper, table, row, out preparedRow); }
protected virtual bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { var mappedValue = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, value); if (mappedValue != null) { value = mappedValue; return true; } Guid guidVal; int intVal; return value == null || (Guid.TryParse(Convert.ToString(value), out guidVal) && guidVal == Guid.Empty) || (int.TryParse(Convert.ToString(value), out intVal) && intVal <= 0); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, RelationInfo relation, ref object value) { if (relation.ParentTable == "crm_tag" && relation.ChildColumn == "id_tag" && (relation.ChildTable == "mail_tag_mail" || relation.ChildTable == "mail_tag_addresses")) { var crmTagId = columnMapper.GetMapping(relation.ParentTable, relation.ParentColumn, -Convert.ToInt32(value)); if (crmTagId == null) return false; value = -Convert.ToInt32(crmTagId); return true; } return base.TryPrepareValue(connection, columnMapper, relation, ref value); }
protected override bool TryPrepareValue(IDbConnection connection, ColumnMapper columnMapper, TableInfo table, string columnName, ref object value) { if (table.Name == "files_file" && columnName == "id") { //In `files_file` possible multiple rows with the same value of the column `id`. //If such row was not inserted before current iteration then we need to create value for the `id` first. var fileId = columnMapper.GetMapping(table.Name, columnName, value); if (fileId == null) { fileId = connection .CreateCommand("select max(id) from files_file;") .WithTimeout(120) .ExecuteScalar<int>() + 1; columnMapper.SetMapping(table.Name, columnName, value, fileId); } value = fileId; return true; } return base.TryPrepareValue(connection, columnMapper, table, columnName, ref value); }
private static string PreparePath(ColumnMapper columnMapper, string partsSeparator, string path) { string[] parts = path.Split(new[] {partsSeparator}, StringSplitOptions.None); if (parts.Length != 4) return null; var categoryId = columnMapper.GetMapping("forum_category", "id", parts[0]); if (categoryId == null) return null; var threadId = columnMapper.GetMapping("forum_thread", "id", parts[1]); if (threadId == null) return null; parts[0] = categoryId.ToString(); parts[1] = threadId.ToString(); return string.Join(partsSeparator, parts); }