示例#1
0
 public TransitReferrerHost(DBlog.Data.ReferrerHost o)
     : base(o.Id)
 {
     LastUrl      = o.LastUrl;
     LastSource   = o.LastSource;
     Name         = o.Name;
     RequestCount = o.RequestCount;
 }
示例#2
0
 public ReferrerHostTest()
 {
     mReferrerHost = new ReferrerHost();
     mReferrerHost.LastSource = Guid.NewGuid().ToString();
     mReferrerHost.LastUrl = Guid.NewGuid().ToString();
     mReferrerHost.Name = Guid.NewGuid().ToString();
     mReferrerHost.RequestCount = 10;
     mReferrerHost.Created = mReferrerHost.Updated = DateTime.UtcNow;
 }
示例#3
0
        public void RollupExistingReferrerHosts(ISession session)
        {
            // find a host that is exactly the target
            ReferrerHost targethost = session.CreateCriteria(typeof(ReferrerHost))
                .Add(Expression.Eq("Name", mReferrerHostRollup.Rollup))
                .UniqueResult<ReferrerHost>();

            if (targethost == null)
            {
                targethost = new ReferrerHost();
                targethost.Name = mReferrerHostRollup.Rollup;
                targethost.RequestCount = 0;
                targethost.LastSource = targethost.LastUrl = "http://localhost/";
                targethost.Created = targethost.Updated = DateTime.UtcNow;
                session.Save(targethost);
            }

            IList<ReferrerHost> hosts = session.CreateSQLQuery(
                    "SELECT {R.*} FROM ReferrerHost {R}" +
                    " WHERE Name LIKE '" + Renderer.SqlEncode(mReferrerHostRollup.Name) + "'")
                    .AddEntity("R", typeof(ReferrerHost)).List<ReferrerHost>();

            foreach (ReferrerHost host in hosts)
            {
                if (host != targethost)
                {
                    targethost.LastSource = host.LastSource;
                    targethost.LastUrl = host.LastUrl;
                    targethost.RequestCount += host.RequestCount;
                    session.Delete(host);
                }
            }

            session.Save(targethost);
            session.Flush();
        }
示例#4
0
        public ReferrerHost GetReferrerHost(ISession session)
        {
            ReferrerHost rh = null;

            if (Id == 0)
            {
                rh = session.CreateCriteria(typeof(ReferrerHost))
                    .Add(Expression.Eq("Name", Name))
                    .UniqueResult<ReferrerHost>();

                if (rh == null)
                {
                    // find whether this is a dup host
                    ReferrerHostRollup duphost =
                        session.CreateSQLQuery(
                            "SELECT {R.*} FROM ReferrerHostRollup {R}" +
                            " WHERE '" + Renderer.SqlEncode(Name) + "' LIKE Name")
                            .AddEntity("R", typeof(ReferrerHostRollup))
                            .SetMaxResults(1)
                            .UniqueResult<ReferrerHostRollup>();

                    if (duphost != null)
                    {
                        rh = session.CreateCriteria(typeof(ReferrerHost))
                            .Add(Expression.Eq("Name", duphost.Rollup))
                            .UniqueResult<ReferrerHost>();
                    }
                }

                if (rh != null)
                {
                    // found an existing host
                    rh.RequestCount += RequestCount;
                }
                else
                {
                    rh = new ReferrerHost();
                    rh.RequestCount = RequestCount;
                    rh.Name = Name;
                }
            }
            else
            {
                rh = session.Load<ReferrerHost>(Id);
                rh.RequestCount = RequestCount;
            }

            rh.LastUrl = LastUrl;
            rh.LastSource = LastSource;
            rh.Updated = DateTime.UtcNow;
            if (rh.Id == 0) rh.Created = rh.Updated;

            return rh;
        }