Exemple #1
0
        private void TableGrid_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            if (tableGrid.Updating)
            {
                return;
            }

            tableGrid.Updating = true;
            MochaData[] datas = new MochaData[tableGrid.ColumnCount];

            for (int index = 0; index < tableGrid.ColumnCount; index++)
            {
                MochaDataType dataType = Database.GetColumnDataType(TableName, tableGrid.Columns[index].HeaderText);
                if (dataType == MochaDataType.AutoInt)
                {
                    int autoIntValue =
                        Database.GetColumnAutoIntState(TableName, tableGrid.Columns[index].HeaderText);

                    tableGrid.Rows[e.RowIndex - 1].Cells[index].Value = autoIntValue + 1;
                    datas[index] = null;
                    continue;
                }

                var data = new MochaData(dataType, MochaData.TryGetData(dataType, ""));
                datas[index] = data;
                tableGrid.Rows[e.RowIndex - 1].Cells[index].Value = data.Data;
            }
            tableGrid.Tag = datas[tableGrid.CurrentCell.ColumnIndex];

            Database.AddRow(TableName, new MochaRow(datas));
            tableGrid.Updating = false;
        }
Exemple #2
0
        /// <summary>
        /// Return data if the conversion successfully, but return null if not successfully.
        /// </summary>
        /// <param name="dataType">Targeting data type.</param>
        /// <param name="data">Data to convert.</param>
        public static object TryGetData(MochaDataType dataType, object data)
        {
            if (!IsType(dataType, data))
            {
                if (dataType == MochaDataType.String || dataType == MochaDataType.Unique)
                {
                    return(string.Empty);
                }
                else if (dataType == MochaDataType.Boolean)
                {
                    return(false);
                }
                else
                {
                    return(0);
                }
            }

            if (dataType == MochaDataType.String || dataType == MochaDataType.Unique)
            {
                return(data.ToString());
            }

            return(GetDataFromString(dataType, data.ToString()));
        }
Exemple #3
0
        /// <summary>
        /// Convert value to MochaData.
        /// </summary>
        /// <param name="value">Value.</param>
        public static MochaData Parse(object value)
        {
            MochaDataType type = GetDataTypeFromType(value.GetType());

            return(new MochaData(
                       type,
                       GetDataFromString(type, value.ToString())));
        }
Exemple #4
0
 /// <summary>
 /// Check and process float value.
 /// </summary>
 /// <param name="type">DataType.</param>
 /// <param name="value">Value.</param>
 public static void CheckFloat(MochaDataType type, ref string value)
 {
     if (
         type == MochaDataType.Decimal ||
         type == MochaDataType.Double ||
         type == MochaDataType.Float)
     {
         value = value.Replace('.', ',');
     }
 }
Exemple #5
0
 /// <summary>
 /// Create new MochaColumn.
 /// </summary>
 /// <param name="name">Name of column.</param>
 /// <param name="description">Description of column.</param>
 /// <param name="dataType">Data type of column.</param>
 /// <param name="datas">Datas of column.</param>
 public MochaColumn(string name, string description = "", MochaDataType dataType = MochaDataType.String,
                    IEnumerable <MochaData> datas   = null) :
     this()
 {
     Name        = name;
     Description = description;
     DataType    = dataType;
     if (datas != null)
     {
         Datas.AddRange(datas);
     }
 }
Exemple #6
0
        /// <summary>
        /// Return the data equality to the data type.
        /// </summary>
        /// <param name="dataType">Base datatype.</param>
        /// <param name="data">Data to check.</param>
        public static bool IsType(MochaDataType dataType, object data)
        {
            if (data == null)
            {
                return(false);
            }

            try {
                object testdata = GetDataFromString(dataType, data.ToString());
                return(true);
            } catch { return(false); }
        }
Exemple #7
0
 /// <summary>
 /// Returns true if datatype is numeric, returns false if not.
 /// </summary>
 /// <param name="type">Datatype to check.</param>
 public static bool IsNumericType(MochaDataType type) =>
 type == MochaDataType.AutoInt ||
 type == MochaDataType.Bit ||
 type == MochaDataType.Byte ||
 type == MochaDataType.Decimal ||
 type == MochaDataType.Double ||
 type == MochaDataType.Float ||
 type == MochaDataType.Int16 ||
 type == MochaDataType.Int32 ||
 type == MochaDataType.Int64 ||
 type == MochaDataType.SByte ||
 type == MochaDataType.UInt16 ||
 type == MochaDataType.UInt64 ||
 type == MochaDataType.BigInteger;
Exemple #8
0
 /// <summary>
 /// Add item.
 /// </summary>
 /// <param name="name">Name of item.</param>
 /// <param name="datatype">Datatype of item.</param>
 public void Add(string name, MochaDataType datatype) =>
 Add(new MochaColumn(name, datatype));
Exemple #9
0
 /// <summary>
 /// Create new instance of <see cref="MochaData"/>.
 /// </summary>
 /// <param name="dataType">Data type of data.</param>
 /// <param name="data">Data value.</param>
 public MochaData(MochaDataType dataType, object data)
 {
     this.data = data;
     DataType  = dataType;
 }
Exemple #10
0
        /// <summary>
        /// Return the object value according to the data type from the string value.
        /// </summary>
        /// <param name="dataType">Targetting data type.</param>
        /// <param name="data">String data.</param>
        public static object GetDataFromString(MochaDataType dataType, string data)
        {
            if (data == null)
            {
                throw new NullReferenceException("Data is cannot null!");
            }

            if (dataType == MochaDataType.String || dataType == MochaDataType.Unique)
            {
                return(data);
            }
            if (dataType == MochaDataType.AutoInt || dataType == MochaDataType.Int32)
            {
                return(int.Parse(data));
            }
            if (dataType == MochaDataType.Byte)
            {
                return(byte.Parse(data));
            }
            if (dataType == MochaDataType.Char)
            {
                return(char.Parse(data));
            }
            if (dataType == MochaDataType.Decimal)
            {
                return(decimal.Parse(data));
            }
            if (dataType == MochaDataType.Double)
            {
                return(double.Parse(data));
            }
            if (dataType == MochaDataType.Float)
            {
                return(float.Parse(data));
            }
            if (dataType == MochaDataType.Int16)
            {
                return(short.Parse(data));
            }
            if (dataType == MochaDataType.Int64)
            {
                return(long.Parse(data));
            }
            if (dataType == MochaDataType.Byte)
            {
                return(byte.Parse(data));
            }
            if (dataType == MochaDataType.Boolean)
            {
                return(bool.Parse(data));
            }
            if (dataType == MochaDataType.SByte)
            {
                return(sbyte.Parse(data));
            }
            if (dataType == MochaDataType.UInt16)
            {
                return(ushort.Parse(data));
            }
            if (dataType == MochaDataType.UInt32)
            {
                return(uint.Parse(data));
            }
            if (dataType == MochaDataType.UInt64)
            {
                return(ulong.Parse(data));
            }
            if (dataType == MochaDataType.DateTime)
            {
                return(DateTime.Parse(data));
            }
            if (dataType == MochaDataType.BigInteger)
            {
                return(BigInteger.Parse(data));
            }
            return(Bit.Parse(data));
        }
Exemple #11
0
 /// <summary>
 /// Return Type object from DataType targeting data.
 /// </summary>
 /// <param name="dataType">Targeted data type.</param>
 public static Type GetTypeFromDataType(MochaDataType dataType)
 {
     if (dataType == MochaDataType.String || dataType == MochaDataType.Unique)
     {
         return(typeof(string));
     }
     if (dataType == MochaDataType.Byte)
     {
         return(typeof(byte));
     }
     if (dataType == MochaDataType.Char)
     {
         return(typeof(char));
     }
     if (dataType == MochaDataType.Decimal)
     {
         return(typeof(decimal));
     }
     if (dataType == MochaDataType.Double)
     {
         return(typeof(double));
     }
     if (dataType == MochaDataType.Float)
     {
         return(typeof(float));
     }
     if (dataType == MochaDataType.Int16)
     {
         return(typeof(short));
     }
     if (dataType == MochaDataType.Int32 || dataType == MochaDataType.AutoInt)
     {
         return(typeof(int));
     }
     if (dataType == MochaDataType.Int64)
     {
         return(typeof(long));
     }
     if (dataType == MochaDataType.Boolean)
     {
         return(typeof(bool));
     }
     if (dataType == MochaDataType.SByte)
     {
         return(typeof(sbyte));
     }
     if (dataType == MochaDataType.UInt16)
     {
         return(typeof(ushort));
     }
     if (dataType == MochaDataType.UInt32)
     {
         return(typeof(uint));
     }
     if (dataType == MochaDataType.UInt64)
     {
         return(typeof(ulong));
     }
     if (dataType == MochaDataType.DateTime)
     {
         return(typeof(DateTime));
     }
     if (dataType == MochaDataType.BigInteger)
     {
         return(typeof(BigInteger));
     }
     return(typeof(Bit));
 }
Exemple #12
0
        private void TableGrid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (tableGrid.Updating)
            {
                return;
            }

            if (e.RowIndex >= tableGrid.RowCount - 1)
            {
                return;
            }

            tableGrid.Updating = true;

#if DEBUG
            var stopwatch = new Stopwatch();
            stopwatch.Start();
#endif
            MochaDataType dataType =
                Database.GetColumnDataType(
                    TableName,
                    tableGrid.Columns[e.ColumnIndex].HeaderText);
            try {
                var value = tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
                if (value != tableGrid.Tag)
                {
                    if (
                        dataType == MochaDataType.Decimal ||
                        dataType == MochaDataType.Double ||
                        dataType == MochaDataType.Float)
                    {
                        tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = value.ToString().Replace('.', ',');
                    }
                    value = value ?? string.Empty;
                    Database.UpdateData(TableName, tableGrid.Columns[e.ColumnIndex].HeaderText,
                                        e.RowIndex, value);
                }
            } catch (Exception excep) {
                tableGrid.Updating = false;
                if (dataType == MochaDataType.AutoInt)
                {
                    if (tableGrid.Rows.Count == 1)
                    {
                        tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
                    }
                    else
                    {
                        var value = 1 + decimal.Parse(tableGrid.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString());
                        tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = value;
                    }
                }
                else
                {
                    tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = tableGrid.Tag;
                }
                errorbox.Show(excep.ToString());
            }
#if DEBUG
            stopwatch.Stop();
            Console.WriteLine("Table_CellEndEdit: " + stopwatch.ElapsedMilliseconds);
#endif
            tableGrid.Updating = false;
        }
Exemple #13
0
 /// <summary>
 /// Create new MochaColumnDataCollection.
 /// </summary>
 /// <param name="dataType">DataType of column.</param>
 public MochaColumnDataCollection(MochaDataType dataType)
 {
     collection    = new List <MochaData>();
     this.dataType = dataType;
 }
Exemple #14
0
 /// <summary>
 /// Create new MochaColumn.
 /// </summary>
 /// <param name="name">Name of column.</param>
 /// <param name="dataType">Data type of column.</param>
 public MochaColumn(string name, MochaDataType dataType, IEnumerable <MochaData> datas) :
     this(name, dataType)
 {
     Datas.AddRange(datas);
 }
Exemple #15
0
 /// <summary>
 /// Create new MochaColumn.
 /// </summary>
 /// <param name="name">Name of column.</param>
 /// <param name="dataType">Data type of column.</param>
 public MochaColumn(string name, MochaDataType dataType) :
     this(name) {
     Name     = name;
     DataType = dataType;
 }