Example #1
0
        private CoreGenDescription CreateCoreGenFile(string path, EPropAssoc assoc)
        {
            CoreGenDescription cdesc = new CoreGenDescription(path);

            cdesc.FromProject(this, assoc);
            return(cdesc);
        }
Example #2
0
        public static string GetSql_QueryRecord(this CoreGenDescription desc)
        {
            Contract.Requires(desc != null);
            if (desc.SelectCommand == null)
            {
                throw new InvalidOperationException("no select command");
            }

            var sb = new StringBuilder();

            sb.Append("SELECT ");
            sb.Append(string.Join(", ",
                                  typeof(PerformanceRecord).GetProperties().Select(_ => _.Name)));
            sb.Append(" FROM ");
            sb.AppendLine(desc.GetSql_TableName());
            sb.Append("WHERE ");
            var pairs = new List <string>();

            foreach (var setcmd in desc.SetCommands)
            {
                pairs.Add(setcmd.AttrName + "=" + WrapSqlValue(setcmd.AttrValue, setcmd.CILType));
            }
            foreach (var csetcmd in desc.CSetCommands)
            {
                pairs.Add(csetcmd.AttrName + "=" + WrapSqlValue(csetcmd.AttrValue, csetcmd.CILType));
            }
            sb.AppendLine(string.Join(" AND ", pairs));
            sb.AppendLine(";");
            return(sb.ToString());
        }
Example #3
0
 public PerformanceRecord QueryPerformanceRecord(CoreGenDescription desc)
 {
     using (var conn = Connect())
     {
         EnsureCreateTable(conn, desc);
         return(QueryPerformanceRecord(conn, desc));
     }
 }
Example #4
0
        private void UpdatePerformanceRecord(SQLiteConnection conn, CoreGenDescription desc, PerformanceRecord prec)
        {
            var cmd = conn.CreateCommand();

            cmd.CommandText = desc.GetSql_UpdateRecord(prec);
            if (cmd.ExecuteNonQuery() < 0)
            {
                throw new IPDatabaseException("unable to update performance record");
            }
        }
Example #5
0
        private void EnsureCreateTable(SQLiteConnection conn, CoreGenDescription desc)
        {
            var cmd = conn.CreateCommand();

            cmd.CommandText = desc.GetSql_CreateTable();
            if (cmd.ExecuteNonQuery() < 0)
            {
                throw new IPDatabaseException("Unable to create table");
            }
        }
Example #6
0
 public void UpdatePerformanceRecord(CoreGenDescription desc, PerformanceRecord prec)
 {
     using (var conn = Connect())
     {
         EnsureCreateTable(conn, desc);
         if (QueryPerformanceRecord(conn, desc) == null)
         {
             InsertPerformanceRecord(conn, desc, prec);
         }
         else
         {
             UpdatePerformanceRecord(conn, desc, prec);
         }
     }
 }
Example #7
0
        public static string GetSql_CreateTable(this CoreGenDescription desc)
        {
            Contract.Requires(desc != null);
            if (desc.SelectCommand == null)
            {
                throw new InvalidOperationException("no select command");
            }

            var sb = new StringBuilder();

            sb.Append("CREATE TABLE IF NOT EXISTS ");
            sb.Append(desc.GetSql_TableName());
            sb.Append(" (");
            var primkeys = new List <string>();

            foreach (var setcmd in desc.SetCommands)
            {
                sb.Append(setcmd.AttrName);
                sb.Append(" ");
                string type = GetSqlTypeOfCoregenProp(setcmd.CILType);
                sb.Append(type);
                sb.AppendLine(" NOT NULL, ");
                primkeys.Add(setcmd.AttrName);
            }
            foreach (var csetcmd in desc.CSetCommands)
            {
                sb.Append(csetcmd.AttrName);
                sb.Append(" ");
                string type = GetSqlTypeOfCoregenProp(csetcmd.CILType);
                sb.Append(type);
                sb.AppendLine(" NOT NULL, ");
                primkeys.Add(csetcmd.AttrName);
            }
            var prprops = typeof(PerformanceRecord).GetProperties();

            foreach (var pi in prprops)
            {
                sb.Append(pi.Name);
                sb.Append(" ");
                sb.Append(GetSqlTypeOfCoregenProp(pi.PropertyType));
                sb.AppendLine(", ");
            }
            sb.Append("PRIMARY KEY (");
            sb.Append(string.Join(", ", primkeys));
            sb.Append(")");
            sb.AppendLine(");");
            return(sb.ToString());
        }
Example #8
0
        public static string GetSql_InsertRecord(this CoreGenDescription desc, PerformanceRecord prec)
        {
            Contract.Requires(desc != null);
            Contract.Requires(prec != null);
            if (desc.SelectCommand == null)
            {
                throw new InvalidOperationException("no select command");
            }

            var sb = new StringBuilder();

            sb.Append("INSERT INTO ");
            sb.Append(desc.GetSql_TableName());
            var keys   = new List <string>();
            var values = new List <string>();

            foreach (var setcmd in desc.SetCommands)
            {
                keys.Add(setcmd.AttrName);
                values.Add(WrapSqlValue(setcmd.AttrValue, setcmd.CILType));
            }
            foreach (var csetcmd in desc.CSetCommands)
            {
                keys.Add(csetcmd.AttrName);
                values.Add(WrapSqlValue(csetcmd.AttrValue, csetcmd.CILType));
            }
            var prprops = typeof(PerformanceRecord).GetProperties();

            foreach (var pi in prprops)
            {
                keys.Add(pi.Name);
                values.Add(WrapSqlValue(pi.GetValue(prec, new object[0])));
            }
            sb.Append(" (");
            sb.Append(string.Join(", ", keys));
            sb.Append(") VALUES(");
            sb.Append(string.Join(", ", values));
            sb.AppendLine(");");
            return(sb.ToString());
        }
Example #9
0
        /// <summary>
        /// Adds a new core generator script to the project.
        /// </summary>
        /// <param name="name">name of the component</param>
        /// <param name="cgProj">out parameter to receive the core generator project (.cgp)</param>
        /// <param name="xco">out parameter to receive the core generator script (.xco)</param>
        public void AddNewCoreGenDescription(string name, out CoreGenDescription cgProj, out CoreGenDescription xco)
        {
            string cgprojPath = MakeFullPath(name + ".cgp");

            cgProj = CreateCoreGenFile(cgprojPath, EPropAssoc.CoreGenProj);
            cgProj.Store();

            string xcoFile = name + ".xco";

            AddFile(xcoFile);
            string xcoPath = MakeFullPath(xcoFile);
            var    cdesc   = CreateCoreGenFile(xcoPath, EPropAssoc.CoreGen);

            AddFileAttribute(xcoFile, cdesc);
            xco = cdesc;

            if (TwinProject != null)
            {
                string vhdFile = name + ".vhd";
                TwinProject.AddFile(vhdFile);
            }
        }
Example #10
0
        private PerformanceRecord QueryPerformanceRecord(SQLiteConnection conn, CoreGenDescription desc)
        {
            var cmd = conn.CreateCommand();

            cmd.CommandText = desc.GetSql_QueryRecord();
            var reader = cmd.ExecuteReader();

            if (reader.Read())
            {
                var result = new PerformanceRecord();
                var props  = typeof(PerformanceRecord).GetProperties();
                foreach (var pi in props)
                {
                    object value = SqlCommands.UnwrapSqlValue(reader[pi.Name], pi.PropertyType);
                    pi.SetValue(result, value, new object[0]);
                }
                return(result);
            }
            else
            {
                return(null);
            }
        }
Example #11
0
 public static string GetSql_TableName(this CoreGenDescription desc)
 {
     return(Regex.Replace(desc.SelectCommand.Selection, "[^a-zA-Z0-9_]+", "", RegexOptions.Compiled));
 }
Example #12
0
 public void Fetch(CoreGenDescription cgd)
 {
 }
Example #13
0
 public void Fetch(CoreGenDescription cgd)
 {
 }