private void ReplaceUsingStatements() { HashSet <string> alreadyAddedUsingStatements = new HashSet <string>(); IEnumerable <UsingDirectiveSyntax> usingDirectiveNodes = tree.GetRoot().DescendantNodes().OfType <UsingDirectiveSyntax>(); foreach (UsingDirectiveSyntax oldUsingDirectiveNode in usingDirectiveNodes) // iterate over all qualified names in the file { var oldNamespace = oldUsingDirectiveNode.Name.GetText().ToString(); List <namespace_map> namespaces = NSMappingSQLConnector.GetInstance().GetNamespaceMapsFromOldNamespace(TransformProject.sdkId, oldNamespace); if (namespaces != null) { foreach (namespace_map nsMap in namespaces) { var newNamespace = nsMap.new_namespace; if (!alreadyAddedUsingStatements.Contains(newNamespace)) { alreadyAddedUsingStatements.Add(newNamespace); NameSyntax newIdentifierNode = IdentifierName(newNamespace); var newUsingDirectiveNode = oldUsingDirectiveNode.WithName(newIdentifierNode); documentEditor.InsertAfter(oldUsingDirectiveNode, newUsingDirectiveNode); } } documentEditor.RemoveNode(oldUsingDirectiveNode); } } }
private void ReplaceImportStatements() { HashSet <string> alreadyAddedImportsStatements = new HashSet <string>(); IEnumerable <ImportsStatementSyntax> importsStatementNodes = tree.GetRoot().DescendantNodes().OfType <ImportsStatementSyntax>(); foreach (ImportsStatementSyntax oldImportsStatementNode in importsStatementNodes) // iterate over all qualified names in the file { // could be problems if this import statement isn't simple, however even if an alias is used in the import it's still simple SimpleImportsClauseSyntax oldSimpleImportsNode = oldImportsStatementNode.DescendantNodes().OfType <SimpleImportsClauseSyntax>().First(); var oldNamespace = oldSimpleImportsNode.WithoutTrivia().Name.GetText().ToString(); List <namespace_map> namespaces = NSMappingSQLConnector.GetInstance().GetNamespaceMapsFromOldNamespace(TransformProject.sdkId, oldNamespace); if (namespaces != null) { foreach (namespace_map nsMap in namespaces) { var newNamespace = nsMap.new_namespace; if (!alreadyAddedImportsStatements.Contains(newNamespace)) { alreadyAddedImportsStatements.Add(newNamespace); NameSyntax newIdentifierNode = IdentifierName(newNamespace); var newSimpleImportsNode = oldSimpleImportsNode.WithName(newIdentifierNode); SeparatedSyntaxList <ImportsClauseSyntax> simpleImportsList = new SeparatedSyntaxList <ImportsClauseSyntax>().Add(newSimpleImportsNode); ImportsStatementSyntax newImportsStatementNode = ImportsStatement(simpleImportsList).WithTriviaFrom(oldImportsStatementNode); newImportsStatementNode = newImportsStatementNode.WithImportsKeyword(oldImportsStatementNode.ImportsKeyword); documentEditor.InsertAfter(oldImportsStatementNode, newImportsStatementNode); } } documentEditor.RemoveNode(oldImportsStatementNode); } } }
public void Setup() { name = Guid.NewGuid().ToString(); SDKSQLConnector.GetInstance().SaveSDK(name, ""); id = SDKSQLConnector.GetInstance().GetByName(name).id; instance = NSMappingSQLConnector.GetInstance(); }
public void TestAssemblyMappingSQLConnectorGetAllOldDllPathsTest() { var nsMap = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "A"); AssertAditional.SetEquals(new HashSet <string> { }, instance.GetAllOldDllPaths(id), "initial value"); var mapA = instance.GetOrCreateOldAssemblyMap(id, "path"); var mapB = instance.GetOrCreateOldAssemblyMap(id, "path"); AssertAditional.SetEquals(new HashSet <string> { "path" }, instance.GetAllOldDllPaths(id), "added entry"); instance.GetOrCreateOldAssemblyMap(id, "path2"); AssertAditional.SetEquals(new HashSet <string> { "path", "path2" }, instance.GetAllOldDllPaths(id), "added second entry"); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "A", "A", nsMap, mapA); var targetA = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "A"); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "B", "B", nsMap, mapA); var targetB = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "B"); instance.UpdateAssemblyMapping(mapA, targetA, "pathNew", "name"); instance.UpdateAssemblyMapping(mapB, targetB, "pathNew2", "name2"); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetA, "A"); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetA, "B"); AssertAditional.SetEquals(new HashSet <string> { "path", "path2" }, instance.GetAllOldDllPaths(id), "double count of first entry"); }
public void TestSDKMappingSQLConnectorUpdateSDKMapping() { var nsMapA = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space"); var asMapA = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path"); var nsMapB = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space2"); var asMapB = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path2"); var expectedA = new sdk_map2 { namespace_map_id = nsMapA.id, assembly_map_id = asMapA.id, model_identifier = "modelA", old_classname = "clazz", sdk_id = id, new_classname = "clazzNew" }; var expectedB = new sdk_map2 { namespace_map_id = nsMapB.id, assembly_map_id = asMapB.id, model_identifier = "modelB", old_classname = "clazz2", sdk_id = id, new_classname = "clazzNew2", }; instance.SaveOldSDKMapping(id, "modelA", "clazz", nsMapA, asMapA); instance.UpdateSDKMapping(instance.GetSDKMappingByIdentifiers(id, "modelA"), "clazzNew"); AssertAditional.SDKMapEquals(expectedA, instance.GetSDKMappingByIdentifiers(id, "modelA"), ""); instance.SaveOldSDKMapping(id, "modelB", "clazz2", nsMapB, asMapB); instance.UpdateSDKMapping(instance.GetSDKMappingByIdentifiers(id, "modelB"), "clazzNew2"); AssertAditional.SDKMapEquals(expectedA, instance.GetSDKMappingByIdentifiers(id, "modelA"), ""); AssertAditional.SDKMapEquals(expectedB, instance.GetSDKMappingByIdentifiers(id, "modelB"), ""); }
public void TestAssemblyMappingSQLConnectorGetAllNewDllPathsWithFullNameTest() { var nsMap = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "A"); AssertAditional.DictionaryEquals(new Dictionary <string, string> { }, instance.GetAllNewDllPathsWithFullName(id), "initial value"); var mapA = instance.GetOrCreateOldAssemblyMap(id, "path"); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "A", "A", nsMap, mapA); var targetA = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "A"); AssertAditional.DictionaryEquals(new Dictionary <string, string> { }, instance.GetAllNewDllPathsWithFullName(id), "null entry"); var mapB = instance.GetOrCreateOldAssemblyMap(id, "path2"); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "B", "B", nsMap, mapA); var targetB = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "B"); instance.UpdateAssemblyMapping(mapB, targetB, "pathNew", "name"); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "B"); AssertAditional.DictionaryEquals(new Dictionary <string, string> { { "pathNew", "name" } }, instance.GetAllNewDllPathsWithFullName(id), "first entry"); var mapC = instance.GetOrCreateOldAssemblyMap(id, "path3"); var mapD = instance.GetOrCreateOldAssemblyMap(id, "path3"); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "C", "C", nsMap, mapA); var targetC = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "C"); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "D", "D", nsMap, mapA); var targetD = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "D"); instance.UpdateAssemblyMapping(mapC, targetC, "pathNew2", "name2"); instance.UpdateAssemblyMapping(mapD, targetD, "pathNew3", "name3"); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "C"); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "D"); AssertAditional.DictionaryEquals(new Dictionary <string, string> { { "pathNew", "name" }, { "pathNew2", "name2" }, { "pathNew3", "name3" } }, instance.GetAllNewDllPathsWithFullName(id), "repeat old name"); var mapE = instance.GetOrCreateOldAssemblyMap(id, "path4"); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "E", "E", nsMap, mapA); var targetE = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "E"); instance.UpdateAssemblyMapping(mapE, targetE, "pathNew", "name"); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "E"); AssertAditional.DictionaryEquals(new Dictionary <string, string> { { "pathNew", "name" }, { "pathNew2", "name2" }, { "pathNew3", "name3" } }, instance.GetAllNewDllPathsWithFullName(id), "dupplicate new entry"); }
private void SaveEntry(sdk_map2 map) { var id = SDKSQLConnector.GetInstance().GetByName(sdkNameId).id; var ns = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, map.namespace_map.old_namespace); var assem = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, map.assembly_map.old_path); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, map.model_identifier, map.old_classname, ns, assem); var entry = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, map.model_identifier); NSMappingSQLConnector.GetInstance().UpdateOrCreateNSMapping(ns, entry, map.namespace_map.new_namespace); AssemblyMappingSQLConnector.GetInstance().UpdateAssemblyMapping(assem, entry, map.assembly_map.new_path, map.assembly_map.name); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(entry, map.new_classname); }
public void TestSDKMappingSQLConnectorGetSDKMappingByIdentifiers() { Assert.IsNull(instance.GetSDKMappingByIdentifiers(-1, "a"), "shouldn't have gotten something from invalid id -1"); var nsMapA = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space"); var asMapA = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path"); var nsMapB = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space2"); var asMapB = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path2"); var expectedA = new sdk_map2 { namespace_map_id = nsMapA.id, assembly_map_id = asMapA.id, model_identifier = "modelA", old_classname = "clazz", sdk_id = id, }; var expectedB = new sdk_map2 { namespace_map_id = nsMapB.id, assembly_map_id = asMapB.id, model_identifier = "modelB", old_classname = "clazz2", sdk_id = id, }; Assert.IsNull(instance.GetSDKMappingByIdentifiers(id, "modelA"), "value should be initially null"); Assert.IsNull(instance.GetSDKMappingByIdentifiers(id, "modelB"), "value should be initially null"); instance.SaveOldSDKMapping(id, "modelA", "clazz", nsMapA, asMapA); AssertAditional.SDKMapEquals(expectedA, instance.GetSDKMappingByIdentifiers(id, "modelA"), ""); Assert.IsNull(instance.GetSDKMappingByIdentifiers(id, "ab"), "value shouldn't exist yet"); instance.SaveOldSDKMapping(id, "modelB", "clazz2", nsMapB, asMapB); AssertAditional.SDKMapEquals(expectedA, instance.GetSDKMappingByIdentifiers(id, "modelA"), ""); AssertAditional.SDKMapEquals(expectedB, instance.GetSDKMappingByIdentifiers(id, "modelB"), ""); }
public void DoStuff(string dllPath, bool isOld, int sdkId) { var assem = Assembly.LoadFrom(dllPath); string assemFullName = assem.FullName; Console.WriteLine("Read from " + dllPath); var types = assem.GetTypes(); // the types will tell you if there are custom data attributes foreach (var type in types) // itereate over old dll to find custom attributes { foreach (var attr in type.CustomAttributes) { if (attr.AttributeType.Name.Equals(ReadProject.CustomAttributeName)) { string modelIdentifier = (string)attr.ConstructorArguments.First().Value; if (isOld) { namespace_map nsMap = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(sdkId, type.Namespace); assembly_map asMap = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(sdkId, dllPath); SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(sdkId, modelIdentifier, type.Name, nsMap, asMap); } else { sdk_map2 sdkMap = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(sdkId, modelIdentifier); if (sdkMap != null) { NSMappingSQLConnector.GetInstance().UpdateOrCreateNSMapping(sdkMap.namespace_map, sdkMap, type.Namespace); AssemblyMappingSQLConnector.GetInstance().UpdateAssemblyMapping(sdkMap.assembly_map, sdkMap, dllPath, assemFullName); SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(sdkMap, type.Name); } } } } } }
public void TestSDKMappingSQLConnectorSaveOldSDKMapping() { var nsMapA = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space"); var asMapA = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path"); var nsMapB = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space2"); var asMapB = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path2"); var mapA = new sdk_map2 { namespace_map_id = nsMapA.id, assembly_map_id = asMapA.id, model_identifier = "A", old_classname = "oldA", sdk_id = id }; var mapB = new sdk_map2 { namespace_map_id = nsMapA.id, assembly_map_id = asMapB.id, model_identifier = "B", old_classname = "oldB", sdk_id = id }; var mapC = new sdk_map2 { namespace_map_id = nsMapB.id, assembly_map_id = asMapA.id, model_identifier = "C", old_classname = "oldC", sdk_id = id }; var mapD = new sdk_map2 { namespace_map_id = nsMapB.id, assembly_map_id = asMapB.id, model_identifier = "D", old_classname = "oldD", sdk_id = id }; var expected = new List <sdk_map2>(); AssertDatabaseState(expected, "initial value"); instance.SaveOldSDKMapping(id, "A", "oldA", nsMapA, asMapA); expected.Add(mapA); AssertDatabaseState(expected, "first value"); instance.SaveOldSDKMapping(id, "B", "oldB", nsMapA, asMapB); expected.Add(mapB); AssertDatabaseState(expected, "second value"); instance.SaveOldSDKMapping(id, "C", "oldC", nsMapB, asMapA); expected.Add(mapC); AssertDatabaseState(expected, "third value"); instance.SaveOldSDKMapping(id, "D", "oldD", nsMapB, asMapB); expected.Add(mapD); AssertDatabaseState(expected, "fourth value"); }
public void TestSDKMappingSQLConnectorGetSDKMapFromClassAndNamespace() { var nsMapA = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space"); var asMapA = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path"); var nsMapB = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "space2"); var asMapB = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path2"); var mapA = new sdk_map2 { namespace_map_id = nsMapA.id, assembly_map_id = asMapA.id, model_identifier = "A", old_classname = "oldA", sdk_id = id }; var mapB = new sdk_map2 { namespace_map_id = nsMapA.id, assembly_map_id = asMapB.id, model_identifier = "B", old_classname = "oldB", sdk_id = id }; var mapC = new sdk_map2 { namespace_map_id = nsMapB.id, assembly_map_id = asMapA.id, model_identifier = "C", old_classname = "oldC", sdk_id = id }; var mapD = new sdk_map2 { namespace_map_id = nsMapB.id, assembly_map_id = asMapB.id, model_identifier = "D", old_classname = "oldD", sdk_id = id }; instance.SaveOldSDKMapping(id, "A", "oldA", nsMapA, asMapA); AssertAditional.SDKMapEquals(mapA, instance.GetSDKMapFromClassAndNamespace(id, "space", "oldA"), "first value"); instance.SaveOldSDKMapping(id, "B", "oldB", nsMapA, asMapB); AssertAditional.SDKMapEquals(mapA, instance.GetSDKMapFromClassAndNamespace(id, "space", "oldA"), "invalid change"); AssertAditional.SDKMapEquals(mapB, instance.GetSDKMapFromClassAndNamespace(id, "space", "oldB"), "second value"); instance.SaveOldSDKMapping(id, "C", "oldC", nsMapB, asMapA); AssertAditional.SDKMapEquals(mapA, instance.GetSDKMapFromClassAndNamespace(id, "space", "oldA"), "invalid change"); AssertAditional.SDKMapEquals(mapB, instance.GetSDKMapFromClassAndNamespace(id, "space", "oldB"), "invalid change"); AssertAditional.SDKMapEquals(mapC, instance.GetSDKMapFromClassAndNamespace(id, "space2", "oldC"), "third value"); instance.SaveOldSDKMapping(id, "D", "oldD", nsMapB, asMapB); AssertAditional.SDKMapEquals(mapA, instance.GetSDKMapFromClassAndNamespace(id, "space", "oldA"), "invalid change"); AssertAditional.SDKMapEquals(mapB, instance.GetSDKMapFromClassAndNamespace(id, "space", "oldB"), "invalid change"); AssertAditional.SDKMapEquals(mapC, instance.GetSDKMapFromClassAndNamespace(id, "space2", "oldC"), "invalid change"); AssertAditional.SDKMapEquals(mapD, instance.GetSDKMapFromClassAndNamespace(id, "space2", "oldD"), "fourth value"); }