Example #1
0
        public void Insert(GatherRuleInfo gatherRuleInfo)
        {
            var insertParms = new IDataParameter[]
            {
                GetParameter(ParmGatherRuleName, EDataType.NVarChar, 50, gatherRuleInfo.GatherRuleName),
                GetParameter(ParmPublishmentSystemId, EDataType.Integer, gatherRuleInfo.PublishmentSystemId),
                GetParameter(ParmCookieString, EDataType.Text, gatherRuleInfo.CookieString),
                GetParameter(ParmGatherUrlIsCollection, EDataType.VarChar, 18, gatherRuleInfo.GatherUrlIsCollection.ToString()),
                GetParameter(ParmGatherUrlCollection, EDataType.Text, gatherRuleInfo.GatherUrlCollection),
                GetParameter(ParmGatherUrlIsSerialize, EDataType.VarChar, 18, gatherRuleInfo.GatherUrlIsSerialize.ToString()),
                GetParameter(ParmGatherUrlSerialize, EDataType.VarChar, 200, gatherRuleInfo.GatherUrlSerialize),
                GetParameter(ParmGatherSerializeFrom, EDataType.Integer, gatherRuleInfo.SerializeFrom),
                GetParameter(ParmGatherSerializeTo, EDataType.Integer, gatherRuleInfo.SerializeTo),
                GetParameter(ParmGatherSerializeInternal, EDataType.Integer, gatherRuleInfo.SerializeInterval),
                GetParameter(ParmGatherSerializeOrderByDesc, EDataType.VarChar, 18, gatherRuleInfo.SerializeIsOrderByDesc.ToString()),
                GetParameter(ParmGatherSerializeIsAddZero, EDataType.VarChar, 18, gatherRuleInfo.SerializeIsAddZero.ToString()),
                GetParameter(ParmNodeId, EDataType.Integer, gatherRuleInfo.NodeId),
                GetParameter(ParmCharset, EDataType.VarChar, 50, ECharsetUtils.GetValue(gatherRuleInfo.Charset)),
                GetParameter(ParmUrlInclude, EDataType.VarChar, 200, gatherRuleInfo.UrlInclude),
                GetParameter(ParmTitleInclude, EDataType.NVarChar, 255, gatherRuleInfo.TitleInclude),
                GetParameter(ParmContentExclude, EDataType.NText, gatherRuleInfo.ContentExclude),
                GetParameter(ParmContentHtmlClearCollection, EDataType.NVarChar, 255, gatherRuleInfo.ContentHtmlClearCollection),
                GetParameter(ParmContentHtmlClearTagCollection, EDataType.NVarChar, 255, gatherRuleInfo.ContentHtmlClearTagCollection),
                GetParameter(ParmLastGatherDate, EDataType.DateTime, gatherRuleInfo.LastGatherDate),
                GetParameter(ParmListAreaStart, EDataType.NText, gatherRuleInfo.ListAreaStart),
                GetParameter(ParmListAreaEnd, EDataType.NText, gatherRuleInfo.ListAreaEnd),
                GetParameter(ParmListContentChannelStart, EDataType.NText, gatherRuleInfo.ContentChannelStart),
                GetParameter(ParmListContentChannelEnd, EDataType.NText, gatherRuleInfo.ContentChannelEnd),
                GetParameter(ParmContentTitleStart, EDataType.NText, gatherRuleInfo.ContentTitleStart),
                GetParameter(ParmContentTitleEnd, EDataType.NText, gatherRuleInfo.ContentTitleEnd),
                GetParameter(ParmContentContentStart, EDataType.NText, gatherRuleInfo.ContentContentStart),
                GetParameter(ParmContentContentEnd, EDataType.NText, gatherRuleInfo.ContentContentEnd),
                GetParameter(ParmContentNextPageStart, EDataType.NText, gatherRuleInfo.ContentNextPageStart),
                GetParameter(ParmContentNextPageEnd, EDataType.NText, gatherRuleInfo.ContentNextPageEnd),
                GetParameter(ParmContentAttributes, EDataType.NText, gatherRuleInfo.ContentAttributes),
                GetParameter(ParmContentAttributesXml, EDataType.NText, gatherRuleInfo.ContentAttributesXml),
                GetParameter(ParmExtendValues, EDataType.NText, gatherRuleInfo.Additional.ToString())
            };

            ExecuteNonQuery(SqlInsertGatherRule, insertParms);
        }
Example #2
0
        private static AtomEntry ExportGatherRuleInfo(GatherRuleInfo gatherRuleInfo)
        {
            var entry = AtomUtility.GetEmptyEntry();

            AtomUtility.AddDcElement(entry.AdditionalElements, "GatherRuleName", gatherRuleInfo.GatherRuleName);
            AtomUtility.AddDcElement(entry.AdditionalElements, "PublishmentSystemID", gatherRuleInfo.PublishmentSystemId.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "CookieString", AtomUtility.Encrypt(gatherRuleInfo.CookieString));            //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "GatherUrlIsCollection", gatherRuleInfo.GatherUrlIsCollection.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "GatherUrlCollection", gatherRuleInfo.GatherUrlCollection);
            AtomUtility.AddDcElement(entry.AdditionalElements, "GatherUrlIsSerialize", gatherRuleInfo.GatherUrlIsSerialize.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "GatherUrlSerialize", gatherRuleInfo.GatherUrlSerialize);
            AtomUtility.AddDcElement(entry.AdditionalElements, "SerializeFrom", gatherRuleInfo.SerializeFrom.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "SerializeTo", gatherRuleInfo.SerializeTo.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "SerializeInterval", gatherRuleInfo.SerializeInterval.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "SerializeIsOrderByDesc", gatherRuleInfo.SerializeIsOrderByDesc.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "SerializeIsAddZero", gatherRuleInfo.SerializeIsAddZero.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "NodeID", gatherRuleInfo.NodeId.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "Charset", ECharsetUtils.GetValue(gatherRuleInfo.Charset));
            AtomUtility.AddDcElement(entry.AdditionalElements, "UrlInclude", gatherRuleInfo.UrlInclude);
            AtomUtility.AddDcElement(entry.AdditionalElements, "TitleInclude", gatherRuleInfo.TitleInclude);
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentExclude", AtomUtility.Encrypt(gatherRuleInfo.ContentExclude));            //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentHtmlClearCollection", gatherRuleInfo.ContentHtmlClearCollection);
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentHtmlClearTagCollection", gatherRuleInfo.ContentHtmlClearTagCollection);
            AtomUtility.AddDcElement(entry.AdditionalElements, "LastGatherDate", gatherRuleInfo.LastGatherDate.ToLongDateString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "ListAreaStart", AtomUtility.Encrypt(gatherRuleInfo.ListAreaStart));               //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ListAreaEnd", AtomUtility.Encrypt(gatherRuleInfo.ListAreaEnd));                   //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentChannelStart", AtomUtility.Encrypt(gatherRuleInfo.ContentChannelStart));   //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentChannelEnd", AtomUtility.Encrypt(gatherRuleInfo.ContentChannelEnd));       //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentTitleStart", AtomUtility.Encrypt(gatherRuleInfo.ContentTitleStart));       //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentTitleEnd", AtomUtility.Encrypt(gatherRuleInfo.ContentTitleEnd));           //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentContentStart", AtomUtility.Encrypt(gatherRuleInfo.ContentContentStart));   //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentContentEnd", AtomUtility.Encrypt(gatherRuleInfo.ContentContentEnd));       //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentNextPageStart", AtomUtility.Encrypt(gatherRuleInfo.ContentNextPageStart)); //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentNextPageEnd", AtomUtility.Encrypt(gatherRuleInfo.ContentNextPageEnd));     //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentAttributes", AtomUtility.Encrypt(gatherRuleInfo.ContentAttributes));       //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ContentAttributesXML", AtomUtility.Encrypt(gatherRuleInfo.ContentAttributesXml)); //加密
            AtomUtility.AddDcElement(entry.AdditionalElements, "ExtendValues", AtomUtility.Encrypt(gatherRuleInfo.ExtendValues));                 //加密

            return(entry);
        }
Example #3
0
        public ArrayList GetGatherRuleInfoArrayList(int publishmentSystemId)
        {
            var list = new ArrayList();

            var parms = new IDataParameter[]
            {
                GetParameter(ParmPublishmentSystemId, EDataType.Integer, publishmentSystemId)
            };

            using (var rdr = ExecuteReader(SqlSelectAllGatherRuleByPsId, parms))
            {
                while (rdr.Read())
                {
                    var i = 0;
                    var gatherRuleInfo = new GatherRuleInfo(GetString(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), GetBool(rdr, i++), GetString(rdr, i++), GetBool(rdr, i++), GetString(rdr, i++), GetInt(rdr, i++), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i++), GetBool(rdr, i++), GetInt(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetDateTime(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i));
                    list.Add(gatherRuleInfo);
                }
                rdr.Close();
            }

            return(list);
        }
Example #4
0
        public GatherRuleInfo GetGatherRuleInfo(string gatherRuleName, int publishmentSystemId)
        {
            GatherRuleInfo gatherRuleInfo = null;

            var parms = new IDataParameter[]
            {
                GetParameter(ParmGatherRuleName, EDataType.NVarChar, 50, gatherRuleName),
                GetParameter(ParmPublishmentSystemId, EDataType.Integer, publishmentSystemId)
            };

            using (var rdr = ExecuteReader(SqlSelectGatherRule, parms))
            {
                if (rdr.Read())
                {
                    var i = 0;
                    gatherRuleInfo = new GatherRuleInfo(GetString(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), GetBool(rdr, i++), GetString(rdr, i++), GetBool(rdr, i++), GetString(rdr, i++), GetInt(rdr, i++), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i++), GetBool(rdr, i++), GetInt(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetDateTime(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i));
                }
                rdr.Close();
            }

            return(gatherRuleInfo);
        }
Example #5
0
        public IHttpActionResult Get()
        {
            try
            {
                var request = Context.AuthenticatedRequest;
                var siteId  = request.GetQueryInt("siteId");
                var ruleId  = request.GetQueryInt("ruleId");

                if (!request.IsAdminLoggin ||
                    !request.AdminPermissions.HasSitePermissions(siteId, Utils.PluginId))
                {
                    return(Unauthorized());
                }

                GatherRuleInfo ruleInfo;
                List <string>  contentHtmlClearList;
                List <string>  contentHtmlClearTagList;
                Dictionary <string, string> attributesDict;
                if (ruleId > 0)
                {
                    ruleInfo             = Main.GatherRuleRepository.GetGatherRuleInfo(ruleId);
                    contentHtmlClearList =
                        TranslateUtils.StringCollectionToStringList(ruleInfo.ContentHtmlClearCollection);
                    contentHtmlClearTagList = TranslateUtils.StringCollectionToStringList(ruleInfo.ContentHtmlClearTagCollection);
                    attributesDict          = TranslateUtils.JsonDeserialize <Dictionary <string, string> >(ruleInfo.ContentAttributesXml);
                }
                else
                {
                    ruleInfo = new GatherRuleInfo
                    {
                        SiteId                        = siteId,
                        Charset                       = ECharsetUtils.GetValue(ECharset.utf_8),
                        IsOrderByDesc                 = true,
                        GatherUrlIsCollection         = true,
                        ContentHtmlClearCollection    = "",
                        ContentHtmlClearTagCollection = ""
                    };
                    contentHtmlClearList = new List <string>
                    {
                        "script",
                        "object",
                        "iframe"
                    };
                    contentHtmlClearTagList = new List <string>
                    {
                        "font",
                        "div",
                        "span"
                    };
                    attributesDict = new Dictionary <string, string>();
                }

                var channels        = new List <KeyValuePair <int, string> >();
                var channelIdList   = Context.ChannelApi.GetChannelIdList(siteId);
                var isLastNodeArray = new bool[channelIdList.Count];
                foreach (var theChannelId in channelIdList)
                {
                    var channelInfo = Context.ChannelApi.GetChannelInfo(siteId, theChannelId);

                    var title = Utils.GetChannelListBoxTitle(siteId, channelInfo.Id, channelInfo.ChannelName, channelInfo.ParentsCount, channelInfo.LastNode, isLastNodeArray);
                    channels.Add(new KeyValuePair <int, string>(channelInfo.Id, title));
                }

                var charsets = ECharsetUtils.GetAllCharsets();

                return(Ok(new
                {
                    Value = ruleInfo,
                    Channels = channels,
                    Charsets = charsets,
                    ContentHtmlClearList = contentHtmlClearList,
                    ContentHtmlClearTagList = contentHtmlClearTagList,
                    AttributesDict = attributesDict
                }));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Example #6
0
        public void ImportGatherRule(bool overwrite)
        {
            if (!FileUtils.IsFileExists(_filePath))
            {
                return;
            }
            var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(_filePath));

            foreach (AtomEntry entry in feed.Entries)
            {
                var gatherRuleName = AtomUtility.GetDcElementContent(entry.AdditionalElements, "GatherRuleName");

                if (!string.IsNullOrEmpty(gatherRuleName))
                {
                    var gatherRuleInfo = new GatherRuleInfo();
                    gatherRuleInfo.GatherRuleName         = gatherRuleName;
                    gatherRuleInfo.PublishmentSystemId    = _publishmentSystemId;
                    gatherRuleInfo.CookieString           = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "CookieString"));          //解密
                    gatherRuleInfo.GatherUrlIsCollection  = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(entry.AdditionalElements, "GatherUrlIsCollection"));
                    gatherRuleInfo.GatherUrlCollection    = AtomUtility.GetDcElementContent(entry.AdditionalElements, "GatherUrlCollection");
                    gatherRuleInfo.GatherUrlIsSerialize   = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(entry.AdditionalElements, "GatherUrlIsSerialize"));
                    gatherRuleInfo.GatherUrlSerialize     = AtomUtility.GetDcElementContent(entry.AdditionalElements, "GatherUrlSerialize");
                    gatherRuleInfo.SerializeFrom          = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "SerializeFrom"));
                    gatherRuleInfo.SerializeTo            = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "SerializeTo"));
                    gatherRuleInfo.SerializeInterval      = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "SerializeInterval"));
                    gatherRuleInfo.SerializeIsOrderByDesc = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(entry.AdditionalElements, "SerializeIsOrderByDesc"));
                    gatherRuleInfo.SerializeIsAddZero     = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(entry.AdditionalElements, "SerializeIsAddZero"));
                    gatherRuleInfo.NodeId                        = _publishmentSystemId;
                    gatherRuleInfo.Charset                       = ECharsetUtils.GetEnumType(AtomUtility.GetDcElementContent(entry.AdditionalElements, "Charset"));
                    gatherRuleInfo.UrlInclude                    = AtomUtility.GetDcElementContent(entry.AdditionalElements, "UrlInclude");
                    gatherRuleInfo.TitleInclude                  = AtomUtility.GetDcElementContent(entry.AdditionalElements, "TitleInclude");
                    gatherRuleInfo.ContentExclude                = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentExclude"));     //解密
                    gatherRuleInfo.ContentHtmlClearCollection    = AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentHtmlClearCollection");
                    gatherRuleInfo.ContentHtmlClearTagCollection = AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentHtmlClearTagCollection");
                    gatherRuleInfo.LastGatherDate                = DateUtils.SqlMinValue;
                    gatherRuleInfo.ListAreaStart                 = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ListAreaStart"));        //解密
                    gatherRuleInfo.ListAreaEnd                   = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ListAreaEnd"));          //解密
                    gatherRuleInfo.ContentChannelStart           = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentChannelStart"));  //解密
                    gatherRuleInfo.ContentChannelEnd             = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentChannelEnd"));    //解密
                    gatherRuleInfo.ContentTitleStart             = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentTitleStart"));    //解密
                    gatherRuleInfo.ContentTitleEnd               = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentTitleEnd"));      //解密
                    gatherRuleInfo.ContentContentStart           = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentContentStart"));  //解密
                    gatherRuleInfo.ContentContentEnd             = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentContentEnd"));    //解密
                    gatherRuleInfo.ContentNextPageStart          = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentNextPageStart")); //解密
                    gatherRuleInfo.ContentNextPageEnd            = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentNextPageEnd"));   //解密
                    gatherRuleInfo.ContentAttributes             = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentAttributes"));    //解密
                    gatherRuleInfo.ContentAttributesXml          = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ContentAttributesXML")); //解密
                    gatherRuleInfo.ExtendValues                  = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "ExtendValues"));         //解密

                    var srcGatherRuleInfo = DataProvider.GatherRuleDao.GetGatherRuleInfo(gatherRuleInfo.GatherRuleName, _publishmentSystemId);
                    if (srcGatherRuleInfo != null)
                    {
                        if (overwrite)
                        {
                            DataProvider.GatherRuleDao.Update(gatherRuleInfo);
                        }
                        else
                        {
                            var importGatherRuleName = DataProvider.GatherRuleDao.GetImportGatherRuleName(_publishmentSystemId, gatherRuleInfo.GatherRuleName);
                            gatherRuleInfo.GatherRuleName = importGatherRuleName;
                            DataProvider.GatherRuleDao.Insert(gatherRuleInfo);
                        }
                    }
                    else
                    {
                        DataProvider.GatherRuleDao.Insert(gatherRuleInfo);
                    }
                }
            }
        }
Example #7
0
        public bool Validate_InsertGatherRule(out string errorMessage)
        {
            try
            {
                var isNeedAdd = false;
                if (_isEdit)
                {
                    if (_theGatherRuleName != GatherRuleName.Text)
                    {
                        isNeedAdd = true;
                        DataProvider.GatherRuleDao.Delete(_theGatherRuleName, PublishmentSystemId);
                    }
                    else
                    {
                        var gatherRuleInfo = DataProvider.GatherRuleDao.GetGatherRuleInfo(_theGatherRuleName, PublishmentSystemId);
                        if (NodeIDDropDownList.SelectedValue != null)
                        {
                            gatherRuleInfo.NodeId = int.Parse(NodeIDDropDownList.SelectedValue);
                        }
                        gatherRuleInfo.Charset = ECharsetUtils.GetEnumType(Charset.SelectedValue);
                        gatherRuleInfo.Additional.GatherNum   = int.Parse(GatherNum.Text);
                        gatherRuleInfo.Additional.IsSaveImage = TranslateUtils.ToBool(IsSaveImage.SelectedValue);
                        gatherRuleInfo.Additional.IsSetFirstImageAsImageUrl = TranslateUtils.ToBool(IsSetFirstImageAsImageUrl.SelectedValue);
                        gatherRuleInfo.Additional.IsEmptyContentAllowed     = TranslateUtils.ToBool(IsEmptyContentAllowed.SelectedValue);
                        gatherRuleInfo.Additional.IsSameTitleAllowed        = TranslateUtils.ToBool(IsSameTitleAllowed.SelectedValue);
                        gatherRuleInfo.Additional.IsChecked     = TranslateUtils.ToBool(IsChecked.SelectedValue);
                        gatherRuleInfo.Additional.IsAutoCreate  = TranslateUtils.ToBool(IsAutoCreate.SelectedValue);
                        gatherRuleInfo.Additional.IsOrderByDesc = TranslateUtils.ToBool(IsOrderByDesc.SelectedValue);

                        gatherRuleInfo.GatherUrlIsCollection  = GatherUrlIsCollection.Checked;
                        gatherRuleInfo.GatherUrlCollection    = GatherUrlCollection.Text;
                        gatherRuleInfo.GatherUrlIsSerialize   = GatherUrlIsSerialize.Checked;
                        gatherRuleInfo.GatherUrlSerialize     = GatherUrlSerialize.Text;
                        gatherRuleInfo.SerializeFrom          = TranslateUtils.ToInt(SerializeFrom.Text);
                        gatherRuleInfo.SerializeTo            = TranslateUtils.ToInt(SerializeTo.Text);
                        gatherRuleInfo.SerializeInterval      = TranslateUtils.ToInt(SerializeInterval.Text);
                        gatherRuleInfo.SerializeIsOrderByDesc = SerializeIsOrderByDesc.Checked;
                        gatherRuleInfo.SerializeIsAddZero     = SerializeIsAddZero.Checked;

                        gatherRuleInfo.UrlInclude     = UrlInclude.Text;
                        gatherRuleInfo.TitleInclude   = TitleInclude.Text;
                        gatherRuleInfo.ContentExclude = ContentExclude.Text;

                        var htmlClearArrayList = new ArrayList();
                        foreach (ListItem item in ContentHtmlClearCollection.Items)
                        {
                            if (item.Selected)
                            {
                                htmlClearArrayList.Add(item.Value);
                            }
                        }
                        gatherRuleInfo.ContentHtmlClearCollection = TranslateUtils.ObjectCollectionToString(htmlClearArrayList);

                        var htmlClearTagArrayList = new ArrayList();
                        foreach (ListItem item in ContentHtmlClearTagCollection.Items)
                        {
                            if (item.Selected)
                            {
                                htmlClearTagArrayList.Add(item.Value);
                            }
                        }
                        gatherRuleInfo.ContentHtmlClearTagCollection = TranslateUtils.ObjectCollectionToString(htmlClearTagArrayList);

                        gatherRuleInfo.ListAreaStart                   = ListAreaStart.Text;
                        gatherRuleInfo.ListAreaEnd                     = ListAreaEnd.Text;
                        gatherRuleInfo.CookieString                    = CookieString.Text;
                        gatherRuleInfo.ContentTitleStart               = ContentTitleStart.Text;
                        gatherRuleInfo.ContentTitleEnd                 = ContentTitleEnd.Text;
                        gatherRuleInfo.ContentContentStart             = ContentContentStart.Text;
                        gatherRuleInfo.ContentContentEnd               = ContentContentEnd.Text;
                        gatherRuleInfo.Additional.ContentContentStart2 = ContentContentStart2.Text;
                        gatherRuleInfo.Additional.ContentContentEnd2   = ContentContentEnd2.Text;
                        gatherRuleInfo.Additional.ContentContentStart3 = ContentContentStart3.Text;
                        gatherRuleInfo.Additional.ContentContentEnd3   = ContentContentEnd3.Text;
                        gatherRuleInfo.Additional.ContentReplaceFrom   = ContentReplaceFrom.Text;
                        gatherRuleInfo.Additional.ContentReplaceTo     = ContentReplaceTo.Text;
                        gatherRuleInfo.ContentChannelStart             = ContentChannelStart.Text;
                        gatherRuleInfo.ContentChannelEnd               = ContentChannelEnd.Text;
                        gatherRuleInfo.ContentNextPageStart            = ContentNextPageStart.Text;
                        gatherRuleInfo.ContentNextPageEnd              = ContentNextPageEnd.Text;

                        var valueArrayList = ControlUtils.GetSelectedListControlValueArrayList(ContentAttributes);
                        gatherRuleInfo.ContentAttributes = TranslateUtils.ObjectCollectionToString(valueArrayList);
                        var attributesXML = new NameValueCollection();

                        for (var i = 0; i < valueArrayList.Count; i++)
                        {
                            var attributeName = valueArrayList[i] as string;

                            foreach (RepeaterItem item in ContentAttributesRepeater.Items)
                            {
                                if (item.ItemIndex == i)
                                {
                                    var contentStart = (TextBox)item.FindControl("ContentStart");
                                    var contentEnd   = (TextBox)item.FindControl("ContentEnd");

                                    //采集为空时的默认值
                                    var contentDefault = (TextBox)item.FindControl("ContentDefault");

                                    attributesXML[attributeName + "_ContentStart"] = StringUtils.ValueToUrl(contentStart.Text);
                                    attributesXML[attributeName + "_ContentEnd"]   = StringUtils.ValueToUrl(contentEnd.Text);


                                    //采集为空时的默认值
                                    attributesXML[attributeName + "_ContentDefault"] = StringUtils.ValueToUrl(contentDefault.Text);
                                }
                            }
                        }
                        gatherRuleInfo.ContentAttributesXml = TranslateUtils.NameValueCollectionToString(attributesXML);

                        DataProvider.GatherRuleDao.Update(gatherRuleInfo);
                    }
                }
                else
                {
                    isNeedAdd = true;
                }

                if (isNeedAdd)
                {
                    var gatherRuleInfo = new GatherRuleInfo();
                    gatherRuleInfo.GatherRuleName      = GatherRuleName.Text;
                    gatherRuleInfo.PublishmentSystemId = PublishmentSystemId;
                    if (NodeIDDropDownList.SelectedValue != null)
                    {
                        gatherRuleInfo.NodeId = int.Parse(NodeIDDropDownList.SelectedValue);
                    }
                    gatherRuleInfo.Charset = ECharsetUtils.GetEnumType(Charset.SelectedValue);
                    gatherRuleInfo.Additional.GatherNum   = int.Parse(GatherNum.Text);
                    gatherRuleInfo.Additional.IsSaveImage = TranslateUtils.ToBool(IsSaveImage.SelectedValue);
                    gatherRuleInfo.Additional.IsSetFirstImageAsImageUrl = TranslateUtils.ToBool(IsSetFirstImageAsImageUrl.SelectedValue);
                    gatherRuleInfo.Additional.IsEmptyContentAllowed     = TranslateUtils.ToBool(IsEmptyContentAllowed.SelectedValue);
                    gatherRuleInfo.Additional.IsSameTitleAllowed        = TranslateUtils.ToBool(IsSameTitleAllowed.SelectedValue);
                    gatherRuleInfo.Additional.IsChecked     = TranslateUtils.ToBool(IsChecked.SelectedValue);
                    gatherRuleInfo.Additional.IsAutoCreate  = TranslateUtils.ToBool(IsAutoCreate.SelectedValue);
                    gatherRuleInfo.Additional.IsOrderByDesc = TranslateUtils.ToBool(IsOrderByDesc.SelectedValue);

                    gatherRuleInfo.GatherUrlIsCollection  = GatherUrlIsCollection.Checked;
                    gatherRuleInfo.GatherUrlCollection    = GatherUrlCollection.Text;
                    gatherRuleInfo.GatherUrlIsSerialize   = GatherUrlIsSerialize.Checked;
                    gatherRuleInfo.GatherUrlSerialize     = GatherUrlSerialize.Text;
                    gatherRuleInfo.SerializeFrom          = TranslateUtils.ToInt(SerializeFrom.Text);
                    gatherRuleInfo.SerializeTo            = TranslateUtils.ToInt(SerializeTo.Text);
                    gatherRuleInfo.SerializeInterval      = TranslateUtils.ToInt(SerializeInterval.Text);
                    gatherRuleInfo.SerializeIsOrderByDesc = SerializeIsOrderByDesc.Checked;
                    gatherRuleInfo.SerializeIsAddZero     = SerializeIsAddZero.Checked;

                    gatherRuleInfo.UrlInclude     = UrlInclude.Text;
                    gatherRuleInfo.TitleInclude   = TitleInclude.Text;
                    gatherRuleInfo.ContentExclude = ContentExclude.Text;

                    var htmlClearArrayList = new ArrayList();
                    foreach (ListItem item in ContentHtmlClearCollection.Items)
                    {
                        if (item.Selected)
                        {
                            htmlClearArrayList.Add(item.Value);
                        }
                    }
                    gatherRuleInfo.ContentHtmlClearCollection = TranslateUtils.ObjectCollectionToString(htmlClearArrayList);

                    var htmlClearTagArrayList = new ArrayList();
                    foreach (ListItem item in ContentHtmlClearTagCollection.Items)
                    {
                        if (item.Selected)
                        {
                            htmlClearTagArrayList.Add(item.Value);
                        }
                    }
                    gatherRuleInfo.ContentHtmlClearTagCollection = TranslateUtils.ObjectCollectionToString(htmlClearTagArrayList);

                    gatherRuleInfo.ListAreaStart                   = ListAreaStart.Text;
                    gatherRuleInfo.ListAreaEnd                     = ListAreaEnd.Text;
                    gatherRuleInfo.CookieString                    = CookieString.Text;
                    gatherRuleInfo.ContentTitleStart               = ContentTitleStart.Text;
                    gatherRuleInfo.ContentTitleEnd                 = ContentTitleEnd.Text;
                    gatherRuleInfo.ContentContentStart             = ContentContentStart.Text;
                    gatherRuleInfo.ContentContentEnd               = ContentContentEnd.Text;
                    gatherRuleInfo.Additional.ContentContentStart2 = ContentContentStart2.Text;
                    gatherRuleInfo.Additional.ContentContentEnd2   = ContentContentEnd2.Text;
                    gatherRuleInfo.Additional.ContentContentStart3 = ContentContentStart3.Text;
                    gatherRuleInfo.Additional.ContentContentEnd3   = ContentContentEnd3.Text;
                    gatherRuleInfo.Additional.ContentReplaceFrom   = ContentReplaceFrom.Text;
                    gatherRuleInfo.Additional.ContentReplaceTo     = ContentReplaceTo.Text;
                    gatherRuleInfo.ContentChannelStart             = ContentChannelStart.Text;
                    gatherRuleInfo.ContentChannelEnd               = ContentChannelEnd.Text;
                    gatherRuleInfo.ContentNextPageStart            = ContentNextPageStart.Text;
                    gatherRuleInfo.ContentNextPageEnd              = ContentNextPageEnd.Text;
                    gatherRuleInfo.LastGatherDate                  = DateUtils.SqlMinValue;

                    var valueArrayList = ControlUtils.GetSelectedListControlValueArrayList(ContentAttributes);
                    gatherRuleInfo.ContentAttributes = TranslateUtils.ObjectCollectionToString(valueArrayList);
                    var attributesXML = new NameValueCollection();

                    for (var i = 0; i < valueArrayList.Count; i++)
                    {
                        var attributeName = valueArrayList[i] as string;

                        foreach (RepeaterItem item in ContentAttributesRepeater.Items)
                        {
                            if (item.ItemIndex == i)
                            {
                                var contentStart = (TextBox)item.FindControl("ContentStart");
                                var contentEnd   = (TextBox)item.FindControl("ContentEnd");

                                //采集为空时的默认值
                                var contentDefault = (TextBox)item.FindControl("ContentDefault");

                                attributesXML[attributeName + "_ContentStart"] = StringUtils.ValueToUrl(contentStart.Text);
                                attributesXML[attributeName + "_ContentEnd"]   = StringUtils.ValueToUrl(contentEnd.Text);

                                //采集为空时的默认值
                                attributesXML[attributeName + "_ContentDefault"] = StringUtils.ValueToUrl(contentDefault.Text);
                            }
                        }
                    }
                    gatherRuleInfo.ContentAttributesXml = TranslateUtils.NameValueCollectionToString(attributesXML);

                    DataProvider.GatherRuleDao.Insert(gatherRuleInfo);
                }

                if (isNeedAdd)
                {
                    Body.AddSiteLog(PublishmentSystemId, "添加Web页面采集规则", $"采集规则:{GatherRuleName.Text}");
                }
                else
                {
                    Body.AddSiteLog(PublishmentSystemId, "编辑Web页面采集规则", $"采集规则:{GatherRuleName.Text}");
                }

                errorMessage = string.Empty;
                return(true);
            }
            catch
            {
                errorMessage = "操作失败!";
                return(false);
            }
        }