This commit is contained in:
2020-02-27 16:20:05 +00:00
parent 1958e3fdde
commit fc604e1745
2 changed files with 7 additions and 2 deletions

View File

@@ -106,9 +106,9 @@ namespace AyaNova.Biz
bool NotUnique = true; bool NotUnique = true;
long l = 1; long l = 1;
do do
{ {
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObj.Name, l++, 255); newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObj.Name, l++, 255);
NotUnique = await ct.Widget.AnyAsync(m => m.Name == newUniqueName); NotUnique = await ct.Widget.AnyAsync(m => m.Name == newUniqueName);
} while (NotUnique); } while (NotUnique);
outObj.Name = newUniqueName; outObj.Name = newUniqueName;

View File

@@ -119,6 +119,11 @@ namespace AyaNova.Util
//Used to ensure a unique name generated by appending -nnn is within length requirements by splitting and chopping part of text to keep name //Used to ensure a unique name generated by appending -nnn is within length requirements by splitting and chopping part of text to keep name
public static string UniqueNameBuilder(string oldName, long appendValue, int maxLength) public static string UniqueNameBuilder(string oldName, long appendValue, int maxLength)
{ {
//deadman switch
if (appendValue > int.MaxValue)
{
throw new System.OverflowException($"UniqueNameBuilder: Unique name could not be generated for item \"{oldName}\" after {int.MaxValue.ToString()} attempts");
}
var appendString = "-" + appendValue.ToString(); var appendString = "-" + appendValue.ToString();
string ret = oldName + appendString; string ret = oldName + appendString;
var diff = maxLength - ret.Length; var diff = maxLength - ret.Length;