Beispiel #1
0
        public Dasm(MessageAdapter messages, bool verboseMode)
        {
            this.messages    = messages;
            this.verboseMode = verboseMode;

            CheckILDasmPath();
        }
Beispiel #2
0
 public SchemaGenerator(Class c, NDOMapping mappings, DataSet dsSchema, MessageAdapter messages, Hashtable allSortedFields, ClassHashtable allPersistentClasses, bool verboseMode)
 {
     this.mappings        = mappings;
     this.messages        = messages;
     this.dsSchema        = dsSchema;
     this.allSortedFields = allSortedFields;
     this.c = c;
     this.allPersistentClasses = allPersistentClasses;
     this.verboseMode          = verboseMode;
 }
Beispiel #3
0
        public void Generate(DataSet dsSchema, DataSet dsBak, string filename, NDOMapping mappings, MessageAdapter messages)
        {
            this.mappings = mappings;
            this.messages = messages;

            string   diffFileName  = filename.Replace(".ndo.sql", ".ndodiff." + mappings.SchemaVersion + ".xml");
            bool     isNewDiffFile = !File.Exists(diffFileName);
            XElement rootElement   = null;
            string   newSchema     = null;

            if (isNewDiffFile)
            {
                rootElement = new XElement("NdoSchemaTransitions");
                rootElement.Add(new XComment("NDO accumulates all schema changes in this diff file. Note: If you change the mapping schema version, a new diff file will be created. You can change the mapping schema version in the NDO configuration dialog. Don't use the Mapping Tool to change the schema information, because it will be overwritten by the value set in the configuration. For automatic builds set the schema version value in the .ndoproj file."));
                newSchema = mappings.SchemaVersion + ".1";
                rootElement.Add(new XAttribute("schemaVersion", newSchema));
            }
            else
            {
                rootElement = XElement.Load(diffFileName);
                string schemaVersion = rootElement.Attribute("schemaVersion").Value;
                int    p             = schemaVersion.LastIndexOf('.');
                int    v             = 1;
                int.TryParse(schemaVersion.Substring(p + 1), out v);
                if (p > -1)
                {
                    newSchema = mappings.SchemaVersion + "." + (v + 1);
                }
                else
                {
                    newSchema = mappings.SchemaVersion + ".1";
                }

                rootElement.Attribute("schemaVersion").Value = newSchema;
            }

            XElement transElement = new XElement("NdoSchemaTransition", new XAttribute("schemaVersion", newSchema));

            rootElement.Add(transElement);

            if (GenerateInternal(dsSchema, dsBak, transElement))
            {
                rootElement.Save(diffFileName);
            }
        }
Beispiel #4
0
 public GenericSqlGenerator(ISqlGenerator concreteGenerator, MessageAdapter messages, NDO.Mapping.NDOMapping mappings) : base(concreteGenerator, messages, mappings)
 {
 }
Beispiel #5
0
        public void Generate(string scriptLanguage, bool utf8Encoding, DataSet dsSchema, DataSet dsBak, string filename, NDOMapping mappings, MessageAdapter messages)
        {
            string       diffFile      = filename.Replace(".ndo.sql", ".ndodiff." + mappings.SchemaVersion + ".sqltemp");
            bool         isNewDiffFile = !File.Exists(diffFile.Replace(".sqltemp", ".sql"));
            StreamWriter sw            = new StreamWriter(diffFile, true, utf8Encoding ? System.Text.Encoding.UTF8 : System.Text.Encoding.Default);
            long         initialLength = 0;

            if (isNewDiffFile)
            {
                sw.WriteLine(@"-- NDO accumulates all schema changes in this diff file.
-- Note: If you change the mapping schema version, a new diff file will be created.
-- You can change the mapping schema version in the NDO configuration dialog.
-- Don't use the Mapping Tool to change the schema information, because it will be
-- overwritten by the value set in the configuration. For automatic builds set
-- the schema version value in the .ndoproj file.
");
                sw.Flush();
                initialLength = sw.BaseStream.Length;
            }
            ISqlGenerator concreteGenerator = null;

            if (scriptLanguage == string.Empty)
            {
                messages.WriteLine("NDOEnhancer: No script language selected");
                return;
            }

            if (!NDOProviderFactory.Instance.Generators.ContainsKey(scriptLanguage))
            {
                // The error message should have been written by the Sql generator
                messages.WriteLine("NDOEnhancer: No Sql code generator for script language '" + scriptLanguage + "' found");
                return;
            }
            concreteGenerator = (ISqlGenerator)NDOProviderFactory.Instance.Generators[scriptLanguage];

            new GenericDiffGenerator(concreteGenerator, messages, mappings).Generate(dsSchema, dsBak, sw);
            sw.Close();
            bool delete = false;

            if (isNewDiffFile)
            {
                FileStream fs = new FileStream(diffFile, FileMode.Open, FileAccess.Read);
                delete = fs.Length < initialLength + 2L;
                fs.Close();
            }
            if (delete)
            {
                File.Delete(diffFile);
            }
            else
            {
                File.Copy(diffFile, diffFile.Replace(".sqltemp", ".sql"), true);
            }
        }
Beispiel #6
0
        public void Generate(string scriptLanguage, bool utf8Encoding, DataSet dsSchema, DataSet dsOld, string filename, NDOMapping mappings, MessageAdapter messages, TypeManager typeManager, bool generateConstraints)
        {
            StreamWriter  sw = new StreamWriter(filename, false, utf8Encoding ? System.Text.Encoding.UTF8 : System.Text.Encoding.Default);
            ISqlGenerator concreteGenerator = null;

            if (scriptLanguage == string.Empty)
            {
                messages.WriteLine("NDOEnhancer: No script language selected");
                return;
            }

            concreteGenerator = (ISqlGenerator)NDOProviderFactory.Instance.Generators[scriptLanguage];
            if (concreteGenerator == null)
            {
                messages.WriteLine("NDOEnhancer: No Sql code generator for script language '" + scriptLanguage + "' found");
                return;
            }


            new GenericSqlGenerator(concreteGenerator, messages, mappings).Generate(dsSchema, dsOld, sw, typeManager, generateConstraints);
            sw.Close();
        }
Beispiel #7
0
 public GenericSqlGeneratorBase(ISqlGenerator concreteGenerator, MessageAdapter messages, NDOMapping mappings)
 {
     this.concreteGenerator = concreteGenerator;
     this.messages          = messages;
     this.mappings          = mappings;
 }
Beispiel #8
0
        public void Generate(string scriptLanguage, DataSet dsSchema, string filename, NDOMapping mappings, MessageAdapter messages)
        {
            StreamWriter  sr = new StreamWriter(filename, false, System.Text.Encoding.Default);
            ISqlGenerator concreteGenerator = null;

            if (scriptLanguage == string.Empty)
            {
                messages.WriteLine("NDOEnhancer: No script language selected");
                return;
            }

            concreteGenerator = GeneratorFactory.Instance[scriptLanguage];
            if (concreteGenerator == null)
            {
                messages.WriteLine("NDOEnhancer: No provider for script language '" + scriptLanguage + "' found");
                return;
            }


            new GenericSqlGenerator(concreteGenerator, messages).Generate(dsSchema, sr, mappings);
            sr.Close();
        }
Beispiel #9
0
 public GenericSqlGenerator(ISqlGenerator concreteGenerator, MessageAdapter messages)
 {
     this.concreteGenerator = concreteGenerator;
     this.messages          = messages;
 }
Beispiel #10
0
 public GenericDiffGenerator(ISqlGenerator concreteGenerator, MessageAdapter messages, NDO.Mapping.NDOMapping mappings) : base(concreteGenerator, messages, mappings)
 {
     provider = NDOProviderFactory.Instance[concreteGenerator.ProviderName];
 }
 public SearchPersistentClasses(MessageAdapter messages)
 {
     this.messages = messages;
 }