C2019-026 Compare the library document we are importing with one of same name in current database to see if we can use the exiting instead of creating a new one.
C2019-026 Move a byte array comparer function to the Volian.Base.Libary and made it static C2019-026 Took a byte array comparer function from ROFSTExt.cs and made it static
This commit is contained in:
parent
fa61b9c2a4
commit
a0dadf2f9a
@ -4820,10 +4820,22 @@ namespace VEPROMS
|
||||
DateTime dts = DateTime.Parse(xn.Attributes.GetNamedItem("dts").InnerText);
|
||||
if (libtitle != "")
|
||||
{
|
||||
// B2019-035 better memory management. Prior logic would eat up memory (and not free it).
|
||||
string libkey = libtitle + "_" + dts.ToString();
|
||||
if (ExistingLibDocs.ContainsKey(libkey))
|
||||
d = Document.Get(ExistingLibDocs[libkey]); // found library document in existing database
|
||||
// C2019-026 if the lib doc title exists in the current database, compare it with the contents of what we
|
||||
// are importing. If the same, use it, else enter a new lib doc appending the date/time
|
||||
byte[] doccontent = Convert.FromBase64String(xn.Attributes.GetNamedItem("doccontent").InnerText);
|
||||
if (ExistingLibDocs.ContainsKey(libtitle))
|
||||
{
|
||||
d = Document.Get(ExistingLibDocs[libtitle]);
|
||||
if (!ByteArrayCompare.DoCompare(d.DocContent,doccontent))
|
||||
d = null;
|
||||
}
|
||||
if (d == null)
|
||||
{
|
||||
// B2019-035 better memory management. Prior logic would eat up memory (and not free it).
|
||||
string libkey = libtitle + "_" + dts.ToString();
|
||||
if (ExistingLibDocs.ContainsKey(libkey))
|
||||
d = Document.Get(ExistingLibDocs[libkey]); // found library document in existing database
|
||||
}
|
||||
}
|
||||
if (d == null) // not found in existing database, create it
|
||||
{
|
||||
|
@ -982,9 +982,9 @@ namespace VEPROMS.CSLA.Library
|
||||
int size = Convert.ToInt32(roicfg.Image_Size);
|
||||
byte[] tmpb = ROImageInfo.Decompress(roii.Content, size);
|
||||
|
||||
if (ByteArrayCompare(roii.Content, cmpFileContents))
|
||||
if (ByteArrayCompare.DoCompare(roii.Content, cmpFileContents))
|
||||
return imgId;
|
||||
if (ByteArrayCompare(tmpb, fileContents))
|
||||
if (ByteArrayCompare.DoCompare(tmpb, fileContents))
|
||||
return imgId;
|
||||
}
|
||||
}
|
||||
@ -993,14 +993,6 @@ namespace VEPROMS.CSLA.Library
|
||||
return 0;
|
||||
}
|
||||
|
||||
private bool ByteArrayCompare(byte[] ba1, byte[] ba2)
|
||||
{
|
||||
// we wrote our own byte array comparinson because the system's 'equals' did not work!
|
||||
if (ba1.Length != ba2.Length) return false;
|
||||
for (int i = 0; i < ba1.Length; i++)
|
||||
if (ba1[i] != ba2[i]) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private ROImageInfo GetMyImage(Dictionary<string, ROImageInfo> myImages, string imgname, DateTime dts)
|
||||
{
|
||||
|
22
PROMS/Volian.Base.Library/ByteArrayCompare.cs
Normal file
22
PROMS/Volian.Base.Library/ByteArrayCompare.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Volian.Base.Library
|
||||
{
|
||||
public static class ByteArrayCompare
|
||||
{
|
||||
// C2019-026 Took this from ROFSTExt.cs so that we can also use when importing procedures with library documents
|
||||
public static bool DoCompare(byte[] ba1, byte[] ba2)
|
||||
{
|
||||
// we wrote our own byte array comparison because the system's 'equals' did not work!
|
||||
if (ba1.Length != ba2.Length) return false;
|
||||
for (int i = 0; i < ba1.Length; i++)
|
||||
if (ba1[i] != ba2[i]) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user