New tests.
[mono.git] / mcs / class / System.Data.Linq / src / DbMetal / Generator / Implementation / CodeTextGenerator / CodeGenerator.cs
index 9c36218da90568944826b8ea05f1034ae98f4b2a..690f04702f9cbd6ee48a82ca654dff81ffeea756 100644 (file)
@@ -34,9 +34,16 @@ using DbLinq.Schema.Dbml.Adapter;
 using DbLinq.Util;\r
 using Type = System.Type;\r
 \r
+#if MONO_STRICT\r
+using System.Data.Linq;\r
+#endif\r
+\r
 namespace DbMetal.Generator.Implementation.CodeTextGenerator\r
 {\r
-    public abstract partial class CodeGenerator : ICodeGenerator\r
+#if !MONO_STRICT\r
+    public\r
+#endif\r
+    abstract partial class CodeGenerator : ICodeGenerator\r
     {\r
         public abstract string LanguageCode { get; }\r
         public abstract string Extension { get; }\r
@@ -68,7 +75,9 @@ namespace DbMetal.Generator.Implementation.CodeTextGenerator
                                        ? dbSchema.ContextNamespace\r
                                        : context.Parameters.Namespace;\r
             context["database"] = dbSchema.Name;\r
-            context["generationTime"] = DateTime.Now.ToString("u");\r
+            context["generationTime"] = context.Parameters.GenerateTimestamps\r
+                ? DateTime.Now.ToString("u")\r
+                : "[TIMESTAMP]";\r
             context["class"] = dbSchema.Class;\r
 \r
             using (var codeWriter = CreateCodeWriter(textWriter))\r
@@ -84,18 +93,25 @@ namespace DbMetal.Generator.Implementation.CodeTextGenerator
                 if (string.IsNullOrEmpty(entityNamespace))\r
                     entityNamespace = dbSchema.EntityNamespace;\r
 \r
+                bool generateDataContext = true;\r
+                var types = context.Parameters.GenerateTypes;\r
+                if (types.Count > 0)\r
+                    generateDataContext = types.Contains(dbSchema.Class);\r
+\r
                 if (contextNamespace == entityNamespace)\r
                 {\r
                     using (WriteNamespace(codeWriter, contextNamespace))\r
                     {\r
-                        WriteDataContext(codeWriter, dbSchema, context);\r
+                        if (generateDataContext)\r
+                            WriteDataContext(codeWriter, dbSchema, context);\r
                         WriteClasses(codeWriter, dbSchema, context);\r
                     }\r
                 }\r
                 else\r
                 {\r
-                    using (WriteNamespace(codeWriter, contextNamespace))\r
-                        WriteDataContext(codeWriter, dbSchema, context);\r
+                    if (generateDataContext)\r
+                        using (WriteNamespace(codeWriter, contextNamespace))\r
+                            WriteDataContext(codeWriter, dbSchema, context);\r
                     using (WriteNamespace(codeWriter, entityNamespace))\r
                         WriteClasses(codeWriter, dbSchema, context);\r
                 }\r
@@ -131,10 +147,13 @@ namespace DbMetal.Generator.Implementation.CodeTextGenerator
 \r
 #if MONO_STRICT\r
             writer.WriteUsingNamespace("System.Data.Linq");\r
-            writer.WriteUsingNamespace("System.Vendor");\r
 #else\r
+            writer.WriteLine("#if MONO_STRICT");\r
+            writer.WriteUsingNamespace("System.Data.Linq");\r
+            writer.WriteLine("#else   // MONO_STRICT");\r
             writer.WriteUsingNamespace("DbLinq.Data.Linq");\r
             writer.WriteUsingNamespace("DbLinq.Vendor");\r
+            writer.WriteLine("#endif  // MONO_STRICT");\r
 #endif\r
 \r
             //            writer.WriteUsingNamespace("System");\r
@@ -158,12 +177,8 @@ namespace DbMetal.Generator.Implementation.CodeTextGenerator
                 implementation.WriteHeader(writer, context);\r
 \r
             // write namespaces for members attributes\r
-            foreach (var memberExposedAttribute in context.Parameters.MemberExposedAttributes)\r
-                WriteUsingNamespace(writer, GetNamespace(memberExposedAttribute));\r
-\r
-            // write namespaces for clases attributes\r
-            foreach (var entityExposedAttribute in context.Parameters.EntityExposedAttributes)\r
-                WriteUsingNamespace(writer, GetNamespace(entityExposedAttribute));\r
+            foreach (var memberAttribute in context.Parameters.MemberAttributes)\r
+                WriteUsingNamespace(writer, GetNamespace(memberAttribute));\r
 \r
             writer.WriteLine();\r
         }\r
@@ -205,12 +220,10 @@ namespace DbMetal.Generator.Implementation.CodeTextGenerator
 \r
 \r
             string contextBase = schema.BaseType;\r
-            var contextBaseType = TypeLoader.Load(contextBase);\r
-            // if we don't specify a base type, use the default\r
-            if (string.IsNullOrEmpty(contextBase))\r
-            {\r
-                contextBaseType = typeof(DataContext);\r
-            }\r
+            var contextBaseType = string.IsNullOrEmpty(contextBase)\r
+                ? typeof(DataContext)\r
+                : TypeLoader.Load(contextBase);\r
+\r
             // in all cases, get the literal type name from loaded type\r
             contextBase = writer.GetLiteralType(contextBaseType);\r
 \r
@@ -223,6 +236,7 @@ namespace DbMetal.Generator.Implementation.CodeTextGenerator
                 specifications |= GetSpecificationDefinition(schema.Modifier);\r
             using (writer.WriteClass(specifications, schema.Class, contextBase))\r
             {\r
+                WriteDataContextExtensibilityDeclarations(writer, schema, context);\r
                 WriteDataContextCtors(writer, schema, contextBaseType, context);\r
                 WriteDataContextTables(writer, schema, context);\r
                 WriteDataContextProcedures(writer, schema, context);\r