public async Task ImportTableStylesAsync(Site site, string guid) { if (!DirectoryUtils.IsDirectoryExists(_directoryPath)) { return; } var styleDirectoryPaths = DirectoryUtils.GetDirectoryPaths(_directoryPath); var styles = new List <TableStyle>(); foreach (var styleDirectoryPath in styleDirectoryPaths) { var tableName = PathUtils.GetDirectoryName(styleDirectoryPath, false); if (StringUtils.EqualsIgnoreCase(tableName, DirectoryNameContentTable)) { tableName = site.TableName; } else if (tableName == "siteserver_PublishmentSystem") { tableName = _databaseManager.SiteRepository.TableName; } var attributeNamePaths = DirectoryUtils.GetDirectoryPaths(styleDirectoryPath); foreach (var attributeNamePath in attributeNamePaths) { var attributeName = PathUtils.GetDirectoryName(attributeNamePath, false); var filePaths = DirectoryUtils.GetFilePaths(attributeNamePath); foreach (var filePath in filePaths) { var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(filePath)); var taxis = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.Taxis))); var displayName = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.DisplayName)); var helpText = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.HelpText)); var list = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(feed.AdditionalElements, new List <string> { nameof(TableStyle.List), "VisibleInList" })); var inputType = TranslateUtils.ToEnum(AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.InputType)), InputType.Text); var defaultValue = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.DefaultValue)); var isHorizontal = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.Horizontal))); var itemValues = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.ItemValues)); var ruleValues = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.RuleValues)); var orderString = AtomUtility.GetDcElementContent(feed.AdditionalElements, "OrderString"); var relatedIdentity = !string.IsNullOrEmpty(orderString) ? await _databaseManager.ChannelRepository.ImportGetIdAsync(site.Id, orderString) : site.Id; if (relatedIdentity <= 0 || await _databaseManager.TableStyleRepository.IsExistsAsync(relatedIdentity, tableName, attributeName)) { continue; } var style = new TableStyle { Id = 0, RelatedIdentity = relatedIdentity, TableName = tableName, AttributeName = attributeName, Taxis = taxis, DisplayName = displayName, HelpText = helpText, List = list, InputType = inputType, DefaultValue = defaultValue, Horizontal = isHorizontal, ItemValues = itemValues, RuleValues = ruleValues }; style.Items = TranslateUtils.JsonDeserialize <List <InputStyleItem> >(style.ItemValues); style.Rules = TranslateUtils.JsonDeserialize <List <InputStyleRule> >(style.RuleValues); var json = AtomUtility.GetDcElementContent(feed.AdditionalElements, "ExtendValues"); if (!string.IsNullOrEmpty(json)) { var dict = ListUtils.ToDictionary(json); foreach (var o in dict) { style.Set(o.Key, o.Value); } } styles.Add(style); } } } foreach (var style in styles) { _caching.SetProcess(guid, $"导入表字段: {style.AttributeName}"); await _databaseManager.TableStyleRepository.InsertAsync(_databaseManager.TableStyleRepository.GetRelatedIdentities(style.RelatedIdentity), style); } }
public static async Task SingleImportTableStyleAsync(IDatabaseManager databaseManager, string tableName, string styleDirectoryPath, List <int> relatedIdentities) { if (!DirectoryUtils.IsDirectoryExists(styleDirectoryPath)) { return; } var relatedIdentity = relatedIdentities[0]; var filePaths = DirectoryUtils.GetFilePaths(styleDirectoryPath); foreach (var filePath in filePaths) { var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(filePath)); var attributeName = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.AttributeName)); var taxis = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.Taxis))); var displayName = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.DisplayName)); var helpText = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.HelpText)); var list = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(feed.AdditionalElements, new List <string> { nameof(TableStyle.List), "VisibleInList" })); var inputType = TranslateUtils.ToEnum(AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.InputType)), InputType.Text); var defaultValue = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.DefaultValue)); var isHorizontal = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableStyle.Horizontal))); var style = new TableStyle { Id = 0, RelatedIdentity = relatedIdentity, TableName = tableName, AttributeName = attributeName, Taxis = taxis, DisplayName = displayName, HelpText = helpText, List = list, InputType = inputType, DefaultValue = defaultValue, Horizontal = isHorizontal }; var json = AtomUtility.GetDcElementContent(feed.AdditionalElements, "ExtendValues"); if (!string.IsNullOrEmpty(json)) { var dict = ListUtils.ToDictionary(json); foreach (var o in dict) { style.Set(o.Key, o.Value); } } if (await databaseManager.TableStyleRepository.IsExistsAsync(relatedIdentity, tableName, attributeName)) { await databaseManager.TableStyleRepository.DeleteAsync(tableName, relatedIdentity, attributeName); } await databaseManager.TableStyleRepository.InsertAsync(relatedIdentities, style); } }