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