public static void SetPartialMatches(DAL mergeDB, MergeTableCommandBuilder cmdBldr) { List <string> matchSources = new List <string>(); if (cmdBldr.DoNaturalMatch) { matchSources.Add("SELECT MergeRowID, NaturalMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE NaturalMatch IS NOT NULL AND MatchRowID IS NULL"); //matchSources.Add("SELECT MergeRowID, NaturalMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + // " WHERE NaturalMatch IS NOT NULL AND (NaturalMatch != RowIDMatch OR NaturalMatch != GUIDMatch)"); } if (cmdBldr.DoKeyMatch) { matchSources.Add("SELECT MergeRowID, RowIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE RowIDMatch IS NOT NULL AND MatchRowID IS NULL"); } if (cmdBldr.DoGUIDMatch) { matchSources.Add("SELECT MergeRowID, GUIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE GUIDMatch IS NOT NULL AND MatchRowID IS NULL"); } string selectPartialMatches = "SELECT MergeRowID, group_concat(PartialMatch, ',') AS PartialMatch FROM ( " + string.Join(" UNION ", matchSources.ToArray()) + " ) GROUP BY MergeRowID;"; List <MergeObject> partialMatchs = mergeDB.Query <MergeObject>(selectPartialMatches, (object[])null).ToList(); foreach (MergeObject mRec in partialMatchs) { mergeDB.Execute($"UPDATE {cmdBldr.MergeTableName} SET PartialMatch = @p1 WHERE MergeRowID = @p2;", mRec.PartialMatch, mRec.MergeRowID); } }
public static void SetMasterRowVersion(DAL master, MergeTableCommandBuilder cmdBldr) { string setMasterRowVersion = "UPDATE " + cmdBldr.MergeTableName + " SET MasterRowVersion = " + "(SELECT RowVersion FROM " + cmdBldr.ClientTableName + " AS client WHERE client.RowID = MatchRowID);"; master.Execute(setMasterRowVersion); }
public static void ProcessMergeTable(DAL master, MergeTableCommandBuilder commandBuider, IEnumerable <ComponentFile> components, IMergeLog log) { log?.PostStatus("Processing " + commandBuider.MergeTableName); //run various comparisons ProcessComparisons(master, commandBuider); //ProcessInvalidMatchs(mergeDB, commandBuider); ProcessFullMatchs(master, commandBuider); SetPartialMatches(master, commandBuider); IdentifySiblingRecords(master, commandBuider); FindNaturalSiblingMatches(master, commandBuider); if (commandBuider.HasRowVersion) { SetMasterRowVersion(master, commandBuider);//master row version is used to determine which file has the changes in the case where the master can update the component. } if (commandBuider.MergeNewFromMaster) { ProcessMasterNew(master, commandBuider, components);//add merge records for records that are new on the master side } }
public static void ProcessComparisons(DAL master, MergeTableCommandBuilder cmdBldr) { if (cmdBldr.DoKeyMatch) { foreach (MergeObject item in master.Query <MergeObject>(cmdBldr.SelectRowIDMatches).ToList()) { master.Execute($"UPDATE {cmdBldr.MergeTableName} SET RowIDMatch = @p1 WHERE MergeRowID = @p2;", item.RowIDMatch, item.MergeRowID); } } if (cmdBldr.DoNaturalMatch) { foreach (MergeObject mRec in master.Query <MergeObject>(cmdBldr.SelectNaturalMatches).ToList()) { master.Execute($"UPDATE {cmdBldr.MergeTableName} SET NaturalMatch = @p1 WHERE MergeRowID = @p2;", mRec.NaturalMatch, mRec.MergeRowID); } } if (cmdBldr.HasGUIDKey) { var rowIDLookUp = new Dictionary <Guid, long>(); foreach (var pair in master.Query <GuidRowID>($"Select {cmdBldr.ClientGUIDFieldName} AS Guid, {cmdBldr.ClientPrimaryKey.Name} AS RecID FROM main.{cmdBldr.ClientTableName} WHERE {cmdBldr.ClientGUIDFieldName} IS NOT NULL AND {cmdBldr.ClientGUIDFieldName} NOT LIKE '';", (object[])null)) { var guid = pair.Guid; if (guid != Guid.Empty) { rowIDLookUp.Add(guid, pair.RecID); } } foreach (var mrgRec in master.Query <GuidRowID>($"Select MergeRowID AS RecID, ComponentRowGUID AS Guid FROM {cmdBldr.MergeTableName} WHERE ComponentRowGUID IS NOT NULL;")) { try { if (rowIDLookUp.ContainsKey(mrgRec.Guid)) { var match = rowIDLookUp[mrgRec.Guid]; string setGuidMatch = $"UPDATE {cmdBldr.MergeTableName} SET GUIDMatch = {match} WHERE MergeRowID = {mrgRec.RecID};"; master.Execute(setGuidMatch); } } catch { continue; } } //List <MergeObject> guidMatches = master.Query<MergeObject>(cmdBldr.SelectGUIDMatches); //this._workInCurrentJob += guidMatches.Count; //string setGuidMatch = "UPDATE " + cmdBldr.MergeTableName + " SET GUIDMatch = ? WHERE MergeRowID = ?;"; //foreach (MergeObject mRec in guidMatches) //{ // CheckWorkerStatus(); // master.Execute(setGuidMatch, mRec.GUIDMatch, mRec.MergeRowID); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); //} } }
public static void ProcessMasterNew(DAL master, MergeTableCommandBuilder cmdBldr, IEnumerable <ComponentFile> components) { foreach (ComponentFile comp in components) { foreach (MergeObject mRec in master.Query <MergeObject>(cmdBldr.SelectMissingMatches(comp), (object[])null)) { master.Execute($"INSERT INTO {cmdBldr.MergeTableName} (MatchRowID, ComponentID) VALUES (@p1,@p2);", mRec.MatchRowID, comp.Component_CN); } } }
//private void ProcessMissingRecords(DAL mergeDB, MergeTableCommandBuilder commandBuider) //{ // //check records in master against records in merge table, for missing matches // //create merge record where component row id and component GUID is null // List<MergeObject> missing = mergeDB.Query<MergeObject>( // commandBuider.MissingRecords); // this._workInCurrentJob += missing.Count; // this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Missing Records", null); // string insertMissingCommand = String.Format("INSERT INTO Merge{0} (RowIDMatch, IsDeleted) VALUES (?, 1);", commandBuider.ClientTableName); // foreach (MergeObject item in missing) // { // CheckWorkerStatus(); // mergeDB.Execute(insertMissingCommand, item.RowIDMatch); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); // } //} public static void ProcessFullMatchs(DAL master, MergeTableCommandBuilder cmdBldr) { List <MergeObject> matches = master.Query <MergeObject>(cmdBldr.SelectFullMatches).ToList(); string setMatches = $"UPDATE {cmdBldr.MergeTableName} SET MatchRowID = @p1 WHERE MergeRowID = @p2;"; foreach (MergeObject item in matches) { master.Execute(setMatches, cmdBldr.GetMatchRowID(item), item.MergeRowID); } }
public static void FindNaturalSiblingMatches(DAL mergeDB, MergeTableCommandBuilder cmdBldr) { List <MergeObject> naturalSiblings = mergeDB.Query <MergeObject>( "SELECT CompoundNaturalKey, NaturalSiblings FROM (" + "SELECT CompoundNaturalKey, group_concat(MergeRowID, ',') as NaturalSiblings, count(1) as size FROM " + cmdBldr.MergeTableName + " GROUP BY CompoundNaturalKey) WHERE size > 1;", (object[])null).ToList(); string setNaturalSiblings = "UPDATE " + cmdBldr.MergeTableName + " SET NaturalSiblings = @p1 WHERE CompoundNaturalKey = @p2;"; foreach (MergeObject groups in naturalSiblings) { mergeDB.Execute(setNaturalSiblings, groups.NaturalSiblings, groups.CompoundNaturalKey); } }
public static void IdentifySiblingRecords(DAL master, MergeTableCommandBuilder cmdBldr) { List <string> matchSources = new List <string>(); if (cmdBldr.DoNaturalMatch) { matchSources.Add("SELECT MergeRowID, NaturalMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE NaturalMatch IS NOT NULL"); } if (cmdBldr.DoKeyMatch) { matchSources.Add("SELECT MergeRowID, RowIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE RowIDMatch IS NOT NULL"); } if (cmdBldr.DoGUIDMatch) { matchSources.Add("SELECT MergeRowID, GUIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE GUIDMatch IS NOT NULL"); } string selectSiblings = "SELECT SiblingRecords FROM (SELECT PartialMatch , group_concat(MergeRowID, ',') as SiblingRecords, count(1) as size FROM ( " + string.Join(" UNION ", matchSources.ToArray()) + " ) GROUP BY PartialMatch) where size > 1;"; var siblingsGroups = master.Query <MergeObject>(selectSiblings).ToArray(); string setSiblingsformat = "UPDATE " + cmdBldr.MergeTableName + " SET SiblingRecords = ifnull(SiblingRecords, '') || @p1 WHERE MergeRowID in ({0});"; foreach (MergeObject mRec in siblingsGroups) { string setSiblings = String.Format(setSiblingsformat, mRec.SiblingRecords); master.Execute(setSiblings, mRec.SiblingRecords); } //List<MergeObject> matchConflicts = master.Query<MergeObject>(cmdBldr.SelectSiblingRecords); //this._workInCurrentJob += matchConflicts.Count; //this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Duplicate Match Conflicts", null); //string setMatchConflicts = "UPDATE " + cmdBldr.MergeTableName + " SET SiblingRecords = ? WHERE PartialMatch IS NOT NULL;"; //foreach(MergeObject item in matchConflicts) //{ // CheckWorkerStatus(); // master.Execute(setMatchConflicts, item.SiblingRecords, item.PartialMatch); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); //} }
private void ProcessMergeTable(DAL mergeDB, MergeTableCommandBuilder commandBuider) { this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing " + commandBuider.MergeTableName, null); //run various comparisons ProcessComparisons(mergeDB, commandBuider); //ProcessInvalidMatchs(mergeDB, commandBuider); ProcessFullMatchs(mergeDB, commandBuider); SetPartialMatches(mergeDB, commandBuider); IdentifySiblingRecords(mergeDB, commandBuider); FindNaturalSiblingMatches(mergeDB, commandBuider); //set match row id on valid matches //if (commandBuider.RecordsUniqueAccrossComponents) //{ // ProcessCrossComponentConflicts(mergeDB, commandBuider); // IdentifySiblingRecords(mergeDB, commandBuider); //} if (commandBuider.HasRowVersion) { SetMasterRowVersion(mergeDB, commandBuider); } //if (commandBuider.MergeNewFromComponent) //{ // SetIncomingPlaceholder(mergeDB, commandBuider); //} if (commandBuider.MergeNewFromMaster) { ProcessMasterNew(mergeDB, commandBuider); } }
public List<MergeObject> ListMatches(MergeTableCommandBuilder cmdBldr) { return this.MasterDB.Query<MergeObject>("SELECT * FROM " + cmdBldr.MergeTableName + " WHERE " + cmdBldr.FindMatchesBase + ";"); }
public List<MergeObject> ListConflicts(MergeTableCommandBuilder cmdBldr) { return this.MasterDB.Query<MergeObject>("SELECT * FROM " + cmdBldr.MergeTableName + cmdBldr.FindConflictsFilter + ";"); }
private void ResetComponentRowVersion(ComponentFileVM comp, long componentRowID, MergeTableCommandBuilder commBldr) { comp.Database.Execute("UPDATE " + commBldr.ClientTableName + " SET RowVersion = 0 WHERE RowID = ?;", componentRowID); }
public long CountUpdateActions(MergeTableCommandBuilder cmdBldr) { return Master.GetRowCount(cmdBldr.MergeTableName, "WHERE " + cmdBldr.FindMatchesBase); }
public ViewDataLink(MergeTableCommandBuilder bldr) { this.CmdBldr = bldr; }
//private void ProcessExistingMasterRecordsWithoutGuids(DAL mergeDB, MergeTableCommandBuilder commandBuider) //{ // List<MergeObject> matchs = mergeDB.Query<MergeObject>( // commandBuider.SelectNaturalAndCNMatches); // this._progressInCurrentJob = 0; // this._workInCurrentJob = matchs.Count + 1; // this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Records Without GUIDs", null); // String updateCommand = "UPDATE " + commandBuider.MergeTableName + " SET MasterRowID = ?, MasterRowVersion = ? WHERE MergeRowID = ?;"; // foreach (MergeObject c in matchs) // { // CheckWorkerStatus(); // mergeDB.Execute(updateCommand, c.MasterRowID, c.MasterRowVersion, c.MergeRowID); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); // } //} //private void ProcessExistingRecords(DAL mergeDB, MergeTableCommandBuilder commandBuider) //{ // //match records in master with records in component and set Master row id // List<MergeObject> matches = mergeDB.Query<MergeObject>( // commandBuider.SelectGUIDMatches); // this._progressInCurrentJob = 0; // this._workInCurrentJob = matches.Count + 1; // this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Existing Records", null); // String updateCommand = String.Format("UPDATE {0} SET MasterRowID = ?, MasterRowVersion = ? WHERE MergeRowID = ?;", commandBuider.MergeTableName); // foreach (MergeObject item in matches) // { // CheckWorkerStatus(); // mergeDB.Execute(updateCommand, item.MasterRowID, item.MasterRowVersion, item.MergeRowID); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); // } //} //private void ProcessCrossComponentConflicts(DAL mergeDB, MergeTableCommandBuilder commandBuider) //{ // //check other merge records to see if there are any conflicts with other records being merged // List<MergeObject> matches = mergeDB.Query<MergeObject>( // commandBuider.NaturalCrossComponentConflictsCommand); // this._workInCurrentJob += matches.Count; // this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Cross Component Conflicts", null); // String updateCommand = "UPDATE " + commandBuider.MergeTableName + " SET ComponentConflict = ? WHERE MergeRowID = ?;"; // foreach (MergeObject c in matches) // { // CheckWorkerStatus(); // mergeDB.Execute(updateCommand, c.ComponentConflict, c.MergeRowID); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); // } //} private void FindNaturalSiblingMatches(DAL mergeDB, MergeTableCommandBuilder cmdBldr) { List<MergeObject> naturalSiblings = mergeDB.Query<MergeObject>( "SELECT CompoundNaturalKey, NaturalSiblings FROM (" + "SELECT CompoundNaturalKey, group_concat(MergeRowID, ',') as NaturalSiblings, count(1) as size FROM " + cmdBldr.MergeTableName + " GROUP BY CompoundNaturalKey) WHERE size > 1;"); string setNaturalSiblings = "UPDATE " + cmdBldr.MergeTableName + " SET NaturalSiblings = ? WHERE CompoundNaturalKey = ?;"; foreach (MergeObject groups in naturalSiblings) { mergeDB.Execute(setNaturalSiblings, groups.NaturalSiblings, groups.CompoundNaturalKey); } }
private void SetMasterRowVersion(DAL master, MergeTableCommandBuilder cmdBldr) { string setMasterRowVersion = "UPDATE " + cmdBldr.MergeTableName + " SET MasterRowVersion = " + "(SELECT RowVersion FROM " + cmdBldr.ClientTableName + " AS client WHERE client.RowID = MatchRowID);"; master.Execute(setMasterRowVersion); }
private void SetPartialMatches(DAL mergeDB, MergeTableCommandBuilder cmdBldr) { List<string> matchSources = new List<string>(); if (cmdBldr.DoNaturalMatch) { matchSources.Add("SELECT MergeRowID, NaturalMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE NaturalMatch IS NOT NULL AND MatchRowID IS NULL"); //matchSources.Add("SELECT MergeRowID, NaturalMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + // " WHERE NaturalMatch IS NOT NULL AND (NaturalMatch != RowIDMatch OR NaturalMatch != GUIDMatch)"); } if (cmdBldr.DoKeyMatch) { matchSources.Add("SELECT MergeRowID, RowIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE RowIDMatch IS NOT NULL AND MatchRowID IS NULL"); } if (cmdBldr.DoGUIDMatch) { matchSources.Add("SELECT MergeRowID, GUIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE GUIDMatch IS NOT NULL AND MatchRowID IS NULL"); } string selectPartialMatches = "SELECT MergeRowID, group_concat(PartialMatch, ',') AS PartialMatch FROM ( " + string.Join(" UNION ", matchSources.ToArray()) + " ) GROUP BY MergeRowID;"; List<MergeObject> partialMatchs = mergeDB.Query<MergeObject>(selectPartialMatches); string setPartialMatch = "UPDATE " + cmdBldr.MergeTableName + " SET PartialMatch = ? WHERE MergeRowID = ?;"; foreach (MergeObject mRec in partialMatchs) { mergeDB.Execute(setPartialMatch, mRec.PartialMatch, mRec.MergeRowID); } }
//private void ProcessInvalidMatchs(DAL master, MergeTableCommandBuilder cmdBldr) //{ // string setConflict = "UPDATE " + cmdBldr.MergeTableName + // " SET MatchConflict = 'invalid match' " + // "WHERE MergeRowID IN (" + cmdBldr.SelectInvalidMatchs +");"; // master.Execute(setConflict); //} private void IdentifySiblingRecords(DAL master, MergeTableCommandBuilder cmdBldr) { List<string> matchSources = new List<string>(); if (cmdBldr.DoNaturalMatch) { matchSources.Add("SELECT MergeRowID, NaturalMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE NaturalMatch IS NOT NULL"); } if (cmdBldr.DoKeyMatch) { matchSources.Add("SELECT MergeRowID, RowIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE RowIDMatch IS NOT NULL"); } if (cmdBldr.DoGUIDMatch) { matchSources.Add("SELECT MergeRowID, GUIDMatch AS PartialMatch FROM " + cmdBldr.MergeTableName + " WHERE GUIDMatch IS NOT NULL"); } string selectSiblings = "SELECT SiblingRecords FROM (SELECT PartialMatch , group_concat(MergeRowID, ',') as SiblingRecords, count(1) as size FROM ( " + string.Join(" UNION ", matchSources.ToArray()) + " ) GROUP BY PartialMatch) where size > 1;"; List<MergeObject> siblingsGroups = master.Query<MergeObject>(selectSiblings); string setSiblingsformat = "UPDATE " + cmdBldr.MergeTableName + " SET SiblingRecords = ifnull(SiblingRecords, '') || ? WHERE MergeRowID in ({0});"; foreach (MergeObject mRec in siblingsGroups) { string setSiblings = String.Format(setSiblingsformat, mRec.SiblingRecords); master.Execute(setSiblings, mRec.SiblingRecords); } //List<MergeObject> matchConflicts = master.Query<MergeObject>(cmdBldr.SelectSiblingRecords); //this._workInCurrentJob += matchConflicts.Count; //this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Duplicate Match Conflicts", null); //string setMatchConflicts = "UPDATE " + cmdBldr.MergeTableName + " SET SiblingRecords = ? WHERE PartialMatch IS NOT NULL;"; //foreach(MergeObject item in matchConflicts) //{ // CheckWorkerStatus(); // master.Execute(setMatchConflicts, item.SiblingRecords, item.PartialMatch); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); //} }
//public long CountUpdateComponentActions(MergeTableCommandBuilder cmdBldr) //{ // return Master.GetRowCount(cmdBldr.MergeTableName, cmdBldr.FindMasterToCompUpdates); //} public long CountAddRecordActions(MergeTableCommandBuilder cmdBldr) { return Master.GetRowCount(cmdBldr.MergeTableName, cmdBldr.FindNewRecords); }
private void MakeMergeTable(MergeTableCommandBuilder table) { this.CheckWorkerStatus(); StartJob("Create " + table.MergeTableName); MasterDB.Execute("DROP TABLE IF EXISTS " + table.MergeTableName + ";"); MasterDB.Execute(table.MakeMergeTableCommand); EndJob(); }
public void PullNew(MergeTableCommandBuilder cmdBldr, ComponentFileVM comp) { StartJob("Pull New From " + cmdBldr.ClientTableName); List<MergeObject> mergeRecords = cmdBldr.ListNewRecords(Master, comp); foreach (MergeObject mRec in mergeRecords) { CheckWorkerStatus(); DataObject newFromComp = cmdBldr.ReadSingleRow(comp.Database, mRec.ComponentRowID.Value); Master.Insert(newFromComp, OnConflictOption.Fail); this.ResetComponentRowVersion(comp, mRec.ComponentRowID.Value, cmdBldr); } EndJob(); }
private void PopulateMergeTable(DAL masterDB, MergeTableCommandBuilder table, ComponentFileVM comp) { CheckWorkerStatus(); masterDB.Execute(table.GetPopulateMergeTableCommand(comp)); masterDB.Execute(table.GetPopulateDeletedRecordsCommand(comp)); }
private void ResetRowVersion(ComponentFileVM comp, long masterRowID, long componentRowID, MergeTableCommandBuilder commBldr) { Master.Execute("UPDATE " + commBldr.ClientTableName + " SET RowVersion = 0 WHERE RowID = ?;", masterRowID); ResetComponentRowVersion(comp, componentRowID, commBldr); }
//private void ProcessMasterConflicts(DAL mergeDB, MergeTableCommandBuilder commandBuider) //{ // //check merge records agains master table for conflicts // List<MergeObject> conflicts = mergeDB.Query<MergeObject>( // commandBuider.MasterConflicts); // this._progressInCurrentJob = 0; // this._workInCurrentJob = conflicts.Count + 1; // this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Master Conflicts", null); // String updateCommand = String.Format("UPDATE {0} SET MasterConflict = ? WHERE MergeRowID = ?;", commandBuider.MergeTableName); // foreach (MergeObject item in conflicts) // { // CheckWorkerStatus(); // mergeDB.Execute(updateCommand, item.MasterConflict, item.MergeRowID); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); // } //} private void ProcessComparisons(DAL master, MergeTableCommandBuilder cmdBldr) { if (cmdBldr.DoKeyMatch) { List<MergeObject> keyMatches = master.Query<MergeObject>(cmdBldr.SelectRowIDMatches); this._workInCurrentJob += keyMatches.Count; string setKeyMatch = "UPDATE " + cmdBldr.MergeTableName + " SET RowIDMatch = ? WHERE MergeRowID = ?;"; foreach (MergeObject item in keyMatches) { CheckWorkerStatus(); master.Execute(setKeyMatch, item.RowIDMatch, item.MergeRowID); this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); } } if (cmdBldr.DoNaturalMatch) { List<MergeObject> natMatches = master.Query<MergeObject>(cmdBldr.SelectNaturalMatches); this._workInCurrentJob += natMatches.Count; string setNatMatch = "UPDATE " + cmdBldr.MergeTableName + " SET NaturalMatch = ? WHERE MergeRowID = ?;"; foreach (MergeObject mRec in natMatches) { CheckWorkerStatus(); master.Execute(setNatMatch, mRec.NaturalMatch, mRec.MergeRowID); this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); } } if (cmdBldr.HasGUIDKey) { List<MergeObject> guidMatches = master.Query<MergeObject>(cmdBldr.SelectGUIDMatches); this._workInCurrentJob += guidMatches.Count; string setGuidMatch = "UPDATE " + cmdBldr.MergeTableName + " SET GUIDMatch = ? WHERE MergeRowID = ?;"; foreach (MergeObject mRec in guidMatches) { CheckWorkerStatus(); master.Execute(setGuidMatch, mRec.GUIDMatch, mRec.MergeRowID); this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); } } }
public List<MergeObject> ListDeleted(MergeTableCommandBuilder cmdBldr) { return this.MasterDB.Query<MergeObject>("SELECT * FROM " + cmdBldr.MergeTableName + " WHERE IsDeleted = 1;"); }
//private void ProcessMissingRecords(DAL mergeDB, MergeTableCommandBuilder commandBuider) //{ // //check records in master against records in merge table, for missing matches // //create merge record where component row id and component GUID is null // List<MergeObject> missing = mergeDB.Query<MergeObject>( // commandBuider.MissingRecords); // this._workInCurrentJob += missing.Count; // this.NotifyProgressChanged(this._progressInCurrentJob, false, "Processing Missing Records", null); // string insertMissingCommand = String.Format("INSERT INTO Merge{0} (RowIDMatch, IsDeleted) VALUES (?, 1);", commandBuider.ClientTableName); // foreach (MergeObject item in missing) // { // CheckWorkerStatus(); // mergeDB.Execute(insertMissingCommand, item.RowIDMatch); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); // } //} private void ProcessFullMatchs(DAL master, MergeTableCommandBuilder cmdBldr) { List<MergeObject> matches = master.Query<MergeObject>(cmdBldr.SelectFullMatches); this._workInCurrentJob += matches.Count; string setMatches = "UPDATE " + cmdBldr.MergeTableName + " SET MatchRowID = ? WHERE MergeRowID = ?;"; foreach (MergeObject item in matches) { CheckWorkerStatus(); master.Execute(setMatches, cmdBldr.GetMatchRowID(item), item.MergeRowID); this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); } }
public List<MergeObject> ListNew(MergeTableCommandBuilder cmdBldr) { return this.MasterDB.Query<MergeObject>("SELECT * FROM " + cmdBldr.MergeTableName + cmdBldr.FindNewRecords + ";"); }
//private void SetIncomingPlaceholder(DAL master, MergeTableCommandBuilder cmdBldr) //{ // List<MergeObject> incomming = master.Query<MergeObject>("SELECT * FROM " + cmdBldr.MergeTableName + // " WHERE MatchRowID IS NULL AND MatchConflict IS NULL" + // " GROUP BY " + String.Join(", ", cmdBldr.ClientUniqueFieldNames) + // " ORDER BY ComponentID;"); // this._workInCurrentJob += incomming.Count; // string setplaceHolder = "UPDATE " + cmdBldr.MergeTableName + " SET IncomingPlaceholder = ? WHERE MergeRowID = ?;"; // long placeHolderCounter = 0; // foreach (MergeObject mRec in incomming) // { // CheckWorkerStatus(); // master.Execute(setplaceHolder, placeHolderCounter++, mRec.MergeRowID); // this.NotifyProgressChanged(this._progressInCurrentJob++, false, null, null); // } //} private void ProcessMasterNew(DAL master, MergeTableCommandBuilder cmdBldr) { foreach (ComponentFileVM comp in this.Components) { List<MergeObject> missingMatches = master.Query<MergeObject>(cmdBldr.SelectMissingMatches(comp)); string insertMissingMatch = "INSERT INTO " + cmdBldr.MergeTableName + " (MatchRowID, ComponentID) " + "VALUES (?,?);"; foreach (MergeObject mRec in missingMatches) { master.Execute(insertMissingMatch, mRec.MatchRowID, comp.Component_CN); } } }