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);
                }
            }
        }
예제 #3
0
 public void Setup()
 {
     name = Guid.NewGuid().ToString();
     SDKSQLConnector.GetInstance().SaveSDK(name, "");
     id       = SDKSQLConnector.GetInstance().GetByName(name).id;
     instance = NSMappingSQLConnector.GetInstance();
 }
예제 #4
0
        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");
        }
예제 #5
0
        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"), "");
        }
예제 #6
0
        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");
        }
예제 #7
0
        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);
        }
예제 #8
0
        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"), "");
        }
예제 #9
0
        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);
                            }
                        }
                    }
                }
            }
        }
예제 #10
0
        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");
        }
예제 #11
0
        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");
        }