예제 #1
0
        ///<summary>Updates one TaskSubscription in the database.  Uses an old object to compare to, and only alters changed fields.  This prevents collisions and concurrency problems in heavily used tables.</summary>
        internal static void Update(TaskSubscription taskSubscription, TaskSubscription oldTaskSubscription)
        {
            string command = "";

            if (taskSubscription.UserNum != oldTaskSubscription.UserNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "UserNum = " + POut.Long(taskSubscription.UserNum) + "";
            }
            if (taskSubscription.TaskListNum != oldTaskSubscription.TaskListNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TaskListNum = " + POut.Long(taskSubscription.TaskListNum) + "";
            }
            if (command == "")
            {
                return;
            }
            command = "UPDATE tasksubscription SET " + command
                      + " WHERE TaskSubscriptionNum = " + POut.Long(taskSubscription.TaskSubscriptionNum);
            Db.NonQ(command);
        }
예제 #2
0
 ///<summary>Inserts one TaskSubscription into the database.  Returns the new priKey.</summary>
 public static long Insert(TaskSubscription taskSubscription)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         taskSubscription.TaskSubscriptionNum = DbHelper.GetNextOracleKey("tasksubscription", "TaskSubscriptionNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(taskSubscription, true));
             }
             catch (Oracle.ManagedDataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     taskSubscription.TaskSubscriptionNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(taskSubscription, false));
     }
 }
예제 #3
0
        ///<summary>Inserts one TaskSubscription into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(TaskSubscription taskSubscription, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO tasksubscription (";

            if (!useExistingPK && isRandomKeys)
            {
                taskSubscription.TaskSubscriptionNum = ReplicationServers.GetKeyNoCache("tasksubscription", "TaskSubscriptionNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "TaskSubscriptionNum,";
            }
            command += "UserNum,TaskListNum,TaskNum) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(taskSubscription.TaskSubscriptionNum) + ",";
            }
            command +=
                POut.Long(taskSubscription.UserNum) + ","
                + POut.Long(taskSubscription.TaskListNum) + ","
                + POut.Long(taskSubscription.TaskNum) + ")";
            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                taskSubscription.TaskSubscriptionNum = Db.NonQ(command, true, "TaskSubscriptionNum", "taskSubscription");
            }
            return(taskSubscription.TaskSubscriptionNum);
        }
예제 #4
0
        ///<summary>Inserts one TaskSubscription into the database.  Provides option to use the existing priKey.</summary>
        public static long Insert(TaskSubscription taskSubscription, bool useExistingPK)
        {
            if (!useExistingPK && PrefC.RandomKeys)
            {
                taskSubscription.TaskSubscriptionNum = ReplicationServers.GetKey("tasksubscription", "TaskSubscriptionNum");
            }
            string command = "INSERT INTO tasksubscription (";

            if (useExistingPK || PrefC.RandomKeys)
            {
                command += "TaskSubscriptionNum,";
            }
            command += "UserNum,TaskListNum,TaskNum) VALUES(";
            if (useExistingPK || PrefC.RandomKeys)
            {
                command += POut.Long(taskSubscription.TaskSubscriptionNum) + ",";
            }
            command +=
                POut.Long(taskSubscription.UserNum) + ","
                + POut.Long(taskSubscription.TaskListNum) + ","
                + POut.Long(taskSubscription.TaskNum) + ")";
            if (useExistingPK || PrefC.RandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                taskSubscription.TaskSubscriptionNum = Db.NonQ(command, true, "TaskSubscriptionNum", "taskSubscription");
            }
            return(taskSubscription.TaskSubscriptionNum);
        }
예제 #5
0
 ///<summary>Inserts one TaskSubscription into the database.  Returns the new priKey.</summary>
 internal static long Insert(TaskSubscription taskSubscription)
 {
     if(DataConnection.DBtype==DatabaseType.Oracle) {
         taskSubscription.TaskSubscriptionNum=DbHelper.GetNextOracleKey("tasksubscription","TaskSubscriptionNum");
         int loopcount=0;
         while(loopcount<100){
             try {
                 return Insert(taskSubscription,true);
             }
             catch(Oracle.DataAccess.Client.OracleException ex){
                 if(ex.Number==1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")){
                     taskSubscription.TaskSubscriptionNum++;
                     loopcount++;
                 }
                 else{
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else {
         return Insert(taskSubscription,false);
     }
 }
예제 #6
0
        ///<summary>Updates one TaskSubscription in the database.</summary>
        internal static void Update(TaskSubscription taskSubscription)
        {
            string command = "UPDATE tasksubscription SET "
                             + "UserNum            =  " + POut.Long(taskSubscription.UserNum) + ", "
                             + "TaskListNum        =  " + POut.Long(taskSubscription.TaskListNum) + " "
                             + "WHERE TaskSubscriptionNum = " + POut.Long(taskSubscription.TaskSubscriptionNum);

            Db.NonQ(command);
        }
예제 #7
0
        ///<summary>Creates a TaskSubscription.</summary>
        public static TaskSubscription CreateTaskSubscription(long userNum = 0, long taskListNum = 0, long taskNum = 0)
        {
            TaskSubscription taskSub = new TaskSubscription
            {
                UserNum     = userNum,
                TaskListNum = taskListNum,
                TaskNum     = taskNum
            };

            TaskSubscriptions.Insert(taskSub);
            return(taskSub);
        }
예제 #8
0
		///<summary>Converts a DataTable to a list of objects.</summary>
		public static List<TaskSubscription> TableToList(DataTable table){
			List<TaskSubscription> retVal=new List<TaskSubscription>();
			TaskSubscription taskSubscription;
			for(int i=0;i<table.Rows.Count;i++) {
				taskSubscription=new TaskSubscription();
				taskSubscription.TaskSubscriptionNum= PIn.Long  (table.Rows[i]["TaskSubscriptionNum"].ToString());
				taskSubscription.UserNum            = PIn.Long  (table.Rows[i]["UserNum"].ToString());
				taskSubscription.TaskListNum        = PIn.Long  (table.Rows[i]["TaskListNum"].ToString());
				retVal.Add(taskSubscription);
			}
			return retVal;
		}
예제 #9
0
 ///<summary>Inserts one TaskSubscription into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(TaskSubscription taskSubscription)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(taskSubscription, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             taskSubscription.TaskSubscriptionNum = DbHelper.GetNextOracleKey("tasksubscription", "TaskSubscriptionNum");                  //Cacheless method
         }
         return(InsertNoCache(taskSubscription, true));
     }
 }
예제 #10
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        internal static List <TaskSubscription> TableToList(DataTable table)
        {
            List <TaskSubscription> retVal = new List <TaskSubscription>();
            TaskSubscription        taskSubscription;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                taskSubscription = new TaskSubscription();
                taskSubscription.TaskSubscriptionNum = PIn.Long(table.Rows[i]["TaskSubscriptionNum"].ToString());
                taskSubscription.UserNum             = PIn.Long(table.Rows[i]["UserNum"].ToString());
                taskSubscription.TaskListNum         = PIn.Long(table.Rows[i]["TaskListNum"].ToString());
                retVal.Add(taskSubscription);
            }
            return(retVal);
        }
예제 #11
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <TaskSubscription> TableToList(DataTable table)
        {
            List <TaskSubscription> retVal = new List <TaskSubscription>();
            TaskSubscription        taskSubscription;

            foreach (DataRow row in table.Rows)
            {
                taskSubscription = new TaskSubscription();
                taskSubscription.TaskSubscriptionNum = PIn.Long(row["TaskSubscriptionNum"].ToString());
                taskSubscription.UserNum             = PIn.Long(row["UserNum"].ToString());
                taskSubscription.TaskListNum         = PIn.Long(row["TaskListNum"].ToString());
                taskSubscription.TaskNum             = PIn.Long(row["TaskNum"].ToString());
                retVal.Add(taskSubscription);
            }
            return(retVal);
        }
예제 #12
0
 ///<summary>Returns true if Update(TaskSubscription,TaskSubscription) would make changes to the database.
 ///Does not make any changes to the database and can be called before remoting role is checked.</summary>
 public static bool UpdateComparison(TaskSubscription taskSubscription, TaskSubscription oldTaskSubscription)
 {
     if (taskSubscription.UserNum != oldTaskSubscription.UserNum)
     {
         return(true);
     }
     if (taskSubscription.TaskListNum != oldTaskSubscription.TaskListNum)
     {
         return(true);
     }
     if (taskSubscription.TaskNum != oldTaskSubscription.TaskNum)
     {
         return(true);
     }
     return(false);
 }
예제 #13
0
        public void Subscribe(ISubscriber <T> s)
        {
            var ts = new TaskSubscription(s);

            task.ContinueWith(t =>
            {
                if (t.IsCompleted)
                {
                    ts.Complete(t.Result);
                }
                else
                if (t.IsFaulted)
                {
                    ts.Error(t.Exception);
                }
            }, ts.ct.Token);
        }
예제 #14
0
		///<summary>Inserts one TaskSubscription into the database.  Provides option to use the existing priKey.</summary>
		public static long Insert(TaskSubscription taskSubscription,bool useExistingPK){
			if(!useExistingPK && PrefC.RandomKeys) {
				taskSubscription.TaskSubscriptionNum=ReplicationServers.GetKey("tasksubscription","TaskSubscriptionNum");
			}
			string command="INSERT INTO tasksubscription (";
			if(useExistingPK || PrefC.RandomKeys) {
				command+="TaskSubscriptionNum,";
			}
			command+="UserNum,TaskListNum) VALUES(";
			if(useExistingPK || PrefC.RandomKeys) {
				command+=POut.Long(taskSubscription.TaskSubscriptionNum)+",";
			}
			command+=
				     POut.Long  (taskSubscription.UserNum)+","
				+    POut.Long  (taskSubscription.TaskListNum)+")";
			if(useExistingPK || PrefC.RandomKeys) {
				Db.NonQ(command);
			}
			else {
				taskSubscription.TaskSubscriptionNum=Db.NonQ(command,true);
			}
			return taskSubscription.TaskSubscriptionNum;
		}
예제 #15
0
 ///<summary>Inserts one TaskSubscription into the database.  Returns the new priKey.</summary>
 public static long Insert(TaskSubscription taskSubscription)
 {
     return(Insert(taskSubscription, false));
 }
예제 #16
0
 ///<summary>Updates one TaskSubscription in the database.  Uses an old object to compare to, and only alters changed fields.  This prevents collisions and concurrency problems in heavily used tables.</summary>
 internal static void Update(TaskSubscription taskSubscription,TaskSubscription oldTaskSubscription)
 {
     string command="";
     if(taskSubscription.UserNum != oldTaskSubscription.UserNum) {
         if(command!=""){ command+=",";}
         command+="UserNum = "+POut.Long(taskSubscription.UserNum)+"";
     }
     if(taskSubscription.TaskListNum != oldTaskSubscription.TaskListNum) {
         if(command!=""){ command+=",";}
         command+="TaskListNum = "+POut.Long(taskSubscription.TaskListNum)+"";
     }
     if(command==""){
         return;
     }
     command="UPDATE tasksubscription SET "+command
         +" WHERE TaskSubscriptionNum = "+POut.Long(taskSubscription.TaskSubscriptionNum);
     Db.NonQ(command);
 }
예제 #17
0
 ///<summary>Updates one TaskSubscription in the database.</summary>
 internal static void Update(TaskSubscription taskSubscription)
 {
     string command="UPDATE tasksubscription SET "
         +"UserNum            =  "+POut.Long  (taskSubscription.UserNum)+", "
         +"TaskListNum        =  "+POut.Long  (taskSubscription.TaskListNum)+" "
         +"WHERE TaskSubscriptionNum = "+POut.Long(taskSubscription.TaskSubscriptionNum);
     Db.NonQ(command);
 }