/// <summary> Converts the properties to sql. </summary> /// <param name="instance"> The properties. </param> /// <returns> The given data converted to a sql. </returns> public QueryBuilder ConvertToSql(object instance) { var flattener = new Flattener(); var properties = flattener.GetPropertiesWithDefaultValues <KeyAttribute>(instance); return(ConvertToSql(properties)); }
internal void DeleteSecurityGroup(SecurityContext context, int groupId) { // delete from Groups SecurityGroup group; if (this.Groups.TryGetValue(groupId, out group)) { // getting support lists var allUsers = Flattener.GetAllUserIds(group); var allParents = Flattener.GetAllParentGroupIdsInclusive(group); // remove references foreach (var g in group.Groups) { g.ParentGroups.Remove(group); } foreach (var g in group.ParentGroups) { g.Groups.Remove(group); } this.Groups.Remove(groupId); // refresh flattening with support lists Flattener.DeleteGroup(group, allUsers, allParents, this.Groups, this.Membership); } // delete Aces & emtpy Acls SecurityEntity.RemoveIdentityRelatedAces(context, groupId); }
public void Flattens_6_Level_Nested_List() { var nestedList = new List <object> { 1, new List <object> { 2, new List <object> { new List <object> { 3 } }, new List <object> { 4, new List <object> { new List <object> { 5 } } }, 6, 7 }, 8 }; Assert.Equal(new List <int> { 1, 2, 3, 4, 5, 6, 7, 8 }, Flattener.Flatten(nestedList).Cast <int>()); }
public void Flattens_5_Level_Nested_List() { var nestedList = new List <object> { 0, 2, new List <object> { new List <object> { 2, 3 }, 8, 100, 4, new List <object> { new List <object> { new List <object> { 50 } } }, -2 } }; Assert.Equal(new List <int> { 0, 2, 2, 3, 8, 100, 4, 50, -2 }, Flattener.Flatten(nestedList).Cast <int>()); }
public void Flattens_6_Level_Nested_List() { var nestedList = new List <object> { 1, new List <object> { 2, new List <object> { new List <object> { 3 } }, new List <object> { 4, new List <object> { new List <object> { 5 } } }, 6, 7 }, 8 }; Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List <object> { 1, 2, 3, 4, 5, 6, 7, 8 })); }
public void Flattens_5_Level_Nested_List() { var nestedList = new List <object> { 0, 2, new List <object> { new List <object> { 2, 3 }, 8, 100, 4, new List <object> { new List <object> { new List <object> { 50 } } }, -2 } }; Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List <object> { 0, 2, 2, 3, 8, 100, 4, 50, -2 })); }
private void ReplaceWith(FlattenerNode node) { if (_Parent != null) { if (_Parent._left == this) { _Parent._left = node; } else { _Parent._right = node; } if (node != null) { node._Parent = _Parent; } _Parent = null; } else { node._Parent = null; if (_treeFlattener == null) { return; } node._treeFlattener = _treeFlattener; _treeFlattener = null; node._treeFlattener._root = node; } }
public void DebugTest() { using (var originalStream = GetMergerTestFileStreamByFileName("onlv.xsd")) { var merger = new SimpleMerger(originalStream, GetMergerTestFileStreamByFileName); using (var mergeResult = merger.MergeSchemas()) { var flattener = new Flattener(mergeResult); var groupsToFlatten = new List <string> { "ontext.Inline.mix", "ontext.Inline.class", "ontext.InlPres.class", "ontext.List.class", "ontext.Flow.mix", "ontext.Block.class", "ontext.BlkSpecial.class", "ontext.Table.class", }; using (var flattenedresult = flattener.FlattenGroups(groupsToFlatten)) { using (var strmRdr = new StreamReader(flattenedresult)) { var text = strmRdr.ReadToEnd(); Assert.False(string.IsNullOrWhiteSpace(text)); } } } } }
public void NonIntElementsThrow() { var array = new dynamic[] { 1, "2" }; var sut = new Flattener(); Assert.Throws <InvalidOperationException>(() => sut.Flatten(array)); }
public void Flattens_A_Nested_List() { var nestedList = new List <object> { new List <object>() }; Assert.That(Flattener.Flatten(nestedList), Is.Empty); }
/// <summary> Updates the builder described by item. </summary> /// <param name="item"> The item. </param> /// <returns> . </returns> public Persist Update(object item, string name = null) { var flattener = new Flattener(); var values = flattener.GetNamesAndValues(item); var tableName = name ?? item.GetType().Name; return(Update(tableName, item, values)); }
// We don't want to run this one often since it adds an extra 7-8 seconds to the test run public void LargeNumberOfElementsGetsProcessed() { var expected = new int[10000000]; var sut = new Flattener(); var result = sut.Flatten(expected); Assert.Equal(expected, result); }
public void ShouldBeFlattenCorrectly() { var input = Input(); var expected = Expected(); SourceNode result = new Flattener(input).Do(); SourceNodeEqualityAsserter.AssertNode(expected, result); }
static void Main(string[] args) { //Console.ReadLine(); try { var argumentOptions = new HashSet<string>(new string[] { "-out" }); Dictionary<string, string> options; List<string> positional; ParseArgs(args, argumentOptions, out options, out positional); string sourceFile = positional[0]; bool is64Bit = options.ContainsKey("-64"); TextWriter outWriter; string outFile; var version = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location); Console.WriteLine("StructFlattener v. " + version.ProductVersion); Console.WriteLine("Input file: {0}, source files: {1}", sourceFile, String.Join(", ", positional.Skip(1))); if (options.TryGetValue("-out", out outFile)) { DateTime thisTime = File.GetLastWriteTimeUtc(Assembly.GetExecutingAssembly().Location); DateTime dstTime = DateTime.MinValue; if (File.Exists(outFile)) dstTime = File.GetLastWriteTimeUtc(outFile); DateTime srcTime = File.GetLastWriteTimeUtc(sourceFile); if (dstTime >= srcTime && dstTime >= thisTime && !options.ContainsKey("-force")) { Console.WriteLine("File already up to date (use -force to override)"); return; } outWriter = new StreamWriter(outFile, false); } else outWriter = Console.Out; Flattener flattener = new Flattener(sourceFile, is64Bit); for (int i = 1; i < positional.Count; i++) flattener.AddFile(positional[i]); string code = flattener.FlattenStructsInFile(); outWriter.WriteLine("// Generated by StructFlattener v. " + version.ProductVersion); outWriter.WriteLine("// Based on " + sourceFile); outWriter.WriteLine("// Commandline: " + Environment.CommandLine); outWriter.WriteLine("// CHANGES TO THIS FILE WILL BE LOST. Modify the input file, or improve StructFlattener if necessary. "); outWriter.WriteLine(is64Bit ? "#if X64" : "#if X86"); outWriter.WriteLine(code); outWriter.WriteLine("#endif"); outWriter.Flush(); } catch (Exception e) { Console.WriteLine(e); } }
public void NestedElements() { var array = new dynamic[] { 1, 2, new dynamic[] { 3, 6, new[] { 7, 7, 7 } }, 4, 5 }; var expected = new[] { 1, 2, 3, 6, 7, 7, 7, 4, 5 }; var sut = new Flattener(); var result = sut.Flatten(array); Assert.Equal(expected, result); }
public void EmptyArray() { var array = new int[0]; var expected = new int[0]; var sut = new Flattener(); var result = sut.Flatten(array); Assert.Equal(expected, result); }
public void SingleAndMultiElements() { var array = new dynamic[] { 1, 2, new[] { 3, 6 }, 4, 5 }; var expected = new[] { 1, 2, 3, 6, 4, 5 }; var sut = new Flattener(); var result = sut.Flatten(array); Assert.Equal(expected, result); }
public void SingleElementsOnly() { var array = new int[] { 1, 2, 3, 4, 5 }; var expected = new int[] { 1, 2, 3, 4, 5 }; var sut = new Flattener(); var result = sut.Flatten(array); Assert.Equal(expected, result); }
public void EmptyArrayElementsInMiddle() { var array = new dynamic[] { 1, 2, new string[] {}, 4, 5 }; var expected = new[] { 1, 2, 4, 5 }; var sut = new Flattener(); var result = sut.Flatten(array); Assert.Equal(expected, result); }
internal void RemoveMembers(int groupId, IEnumerable <int> groupIds, IEnumerable <int> userIds, IEnumerable <int> parentGroupIds) { SecurityGroup group; if (!this.Groups.TryGetValue(groupId, out group)) { return; } if (userIds != null) { foreach (var userId in userIds) { group.UserMemberIds.Remove(userId); Flattener.RemoveUserFromGroup(userId, group, this.Membership, this.Groups); } } // support list for refreshing flattened membership List <int> allUsers; List <int> allParents; if (groupIds != null) { var memberGroups = group.Groups.Where(x => groupIds.Contains(x.Id)).ToArray(); foreach (var memberGroup in memberGroups) { allUsers = Flattener.GetAllUserIds(memberGroup); allParents = Flattener.GetAllParentGroupIdsInclusive(memberGroup); memberGroup.ParentGroups.Remove(group); group.Groups.Remove(memberGroup); // refresh flattening Flattener.DeleteGroup(memberGroup, allUsers, allParents, this.Groups, this.Membership); } } if (parentGroupIds != null) { var parentGroups = group.ParentGroups.Where(x => parentGroupIds.Contains(x.Id)).ToArray(); foreach (var parentGroup in parentGroups) { allUsers = Flattener.GetAllUserIds(parentGroup); allParents = Flattener.GetAllParentGroupIdsInclusive(parentGroup); parentGroup.Groups.Remove(group); group.ParentGroups.Remove(parentGroup); // refresh flattening Flattener.DeleteGroup(parentGroup, allUsers, allParents, this.Groups, this.Membership); } } }
public void Test3() { Flattener f = new Flattener(); object[] testArray = new object[] { 1, new object[] { }, 3, 4 }; var rc = f.Flatten(testArray); Assert.True(rc.Length == 3, "Length is incorrect, should be 3"); }
public void Test1() { Flattener f = new Flattener(); object[] testArray = new object[] {}; var rc = f.Flatten(testArray); Assert.True(rc.Length == 0, "Length is incorrect, should be 0"); }
public void Test4() { Flattener f = new Flattener(); object[] testArray = new object[] { 1, new object[] { 2, 3, new object[] { 6, 7, 8 } }, 4, 5 }; var rc = f.Flatten(testArray); Assert.True(rc.Length == 8, "Length is incorrect, should be 8"); }
public void Flattens_2_Level_Nested_List() { var nestedList = new List <object> { 1, new List <object> { 2, 3, 4 }, 5 }; Assert.Equal(new List <int> { 1, 2, 3, 4, 5 }, Flattener.Flatten(nestedList).Cast <int>()); }
public void Flattens_2_Level_Nested_List() { var nestedList = new List <object> { 1, new List <object> { 2, 3, 4 }, 5 }; Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List <object> { 1, 2, 3, 4, 5 })); }
internal void DeleteUser(SecurityContext context, int userId) { // refresh flattening Flattener.DeleteUser(userId, Membership); // delete from Groups foreach (var group in Groups.Values) { group.UserMemberIds.Remove(userId); } // delete ACEs & empty ACLs EntityManager.RemoveIdentityRelatedAces(userId); }
internal void DeleteUser(SecurityContext context, int userId) { // refresh flattening Flattener.DeleteUser(userId, this.Membership); // delete from Groups foreach (var group in this.Groups.Values) { group.UserMemberIds.Remove(userId); } // delete Aces & emtpy Acls SecurityEntity.RemoveIdentityRelatedAces(context, userId); }
internal bool IsInGroup(int memberId, int groupId) { // if it is a user: first look for the id in the flattened user --> groups collection if (Membership.TryGetValue(memberId, out var flattenedGroups)) { return(flattenedGroups.Contains(groupId)); } // if it is a group: search in the group graph if (Groups.TryGetValue(memberId, out var group)) { return(Flattener.GetAllParentGroupIdsExclusive(group).Contains(groupId)); } return(false); }
/// <summary> Generates a sql. </summary> /// <param name="item"> The item. </param> /// <param name="name"> The name. </param> /// <returns> The sql. </returns> private static Persist GenerateSql(object item, string name) { IKeysDefined[] keysDefineds = { new HasPrimaryKeys(), new PrimaryKeysNotDefined() }; var flattener = new Flattener(); var primaryKeys = flattener.GetPropertiesWithDefaultValues <KeyAttribute>(item).ToList(); var properties = flattener.GetNamesAndValues(item).ToList(); var nameTable = name ?? GetTableNameByType(item); var primaryKeysExists = primaryKeys.Any(); var first = keysDefineds.First(k => k.PrimaryKeysExist == primaryKeysExists); var sql = first.GenerateSql(nameTable, item, primaryKeys, properties); return(sql); }
internal void AddUserToGroups(int userId, IEnumerable <int> parentGroupIds) { if (parentGroupIds == null) { return; } // place the new relations, skip old ones. foreach (var parentGroupId in parentGroupIds) { var parentGroup = EnsureGroup(parentGroupId); if (!parentGroup.UserMemberIds.Contains(userId)) { parentGroup.UserMemberIds.Add(userId); } Flattener.AddUserToGroup(userId, parentGroup, Membership); } }
internal void RemoveUserFromGroups(int userId, IEnumerable <int> parentGroupIds) { if (parentGroupIds == null) { return; } foreach (var parentGroupId in parentGroupIds) { if (Groups.TryGetValue(parentGroupId, out var group)) { var allUsers = Flattener.GetAllUserIds(group); var allParents = Flattener.GetAllParentGroupIdsInclusive(group); group.UserMemberIds.Remove(userId); // refresh flattening Flattener.DeleteGroup(group, allUsers, allParents, Groups, Membership); } } }
/// <summary> Converts the properties to sql. </summary> /// <param name="instance"> The properties. </param> /// <returns> The given data converted to a sql. </returns> public string ConvertToSql(object instance) { Flattener flattener = new Flattener(); var properties = flattener.GetPropertiesWithDefaultValues<PrimaryKeyAttribute>(instance); return ConvertToSql(properties); }