Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }