示例#1
0
        private string MakeParametersList(ParameterListSyntax syntax)
        {
            var args = syntax.Parameters;
            StringBuilder str = new StringBuilder();
            if (args.Count > 0)
            {
                var fstArg = args[0];
                if (fstArg.IsExtensionParameter())
                    this.AppendCompileIssue(syntax, IssueType.Error, IssueId.ExtensionMethodNotSupport);

                foreach (var arg in args)
                {
                    var info = _semanticModel.GetDeclaredSymbol(arg);
                    if (!info.Type.IsScriptSymbol())
                    {
                        this.AppendCompileIssue(syntax, IssueType.Error, IssueId.UseNonScript, info.Type);
                    }

                    if (arg.Default != null)
                    {
                        this.AppendCompileIssue(syntax, IssueType.Error, IssueId.DefaultParamNotSupport);
                    }

                    str.Append(_semanticModel.GetParameterSymbolName(arg)).Append(", ");
                }
                str.RemoveEnd(", ");
            }
            return str.ToString();
        }
示例#2
0
 public override StringBuilder BuildInsertColumns(MappingInfo.IObjectMapInfo map, object entity)
 {
     StringBuilder b = new StringBuilder();
     foreach (var pmi in map.PropertyMaps)
     {
         b.Append(_tr.GetEscapedColumnName(pmi.ColumnName)).Append(_tr.ColumnDelimiter);
     }
     b.RemoveEnd(_tr.ColumnDelimiter);
     return b;
 }
 public virtual StringBuilder BuildSelectColumns(IObjectMapInfo map)
 {
     StringBuilder b = new StringBuilder();
     foreach (var pmi in map.PropertyMaps)
     {
         b.Append(_tr.GetEscapedColumnName(pmi.ColumnName)).Append(_tr.ColumnDelimiter);
     }
     b.RemoveEnd(_tr.ColumnDelimiter);
     return b;
 }
示例#4
0
 public virtual StringBuilder BuildOrderSelectColumns(OrderCollection order, IEnumerable<SingleEntityView> svList)
 {
     _str = new StringBuilder();
     foreach (var o in order)
     {
         _str.Append(_oev.GetOrderByClause(o.OrderExpression, svList));
         _str.Append(_tr.ColumnDelimiter);
     }
     _str.RemoveEnd(_tr.ColumnDelimiter);
     return _str;
 }
        public virtual StringBuilder BuildInsertColumns(IObjectMapInfo map, object entity)
        {
            StringBuilder b = new StringBuilder();
            foreach (var pmi in map.PropertyMaps)
            {
                if (map.PrimaryKeyGenerate == PrimaryKeyGenerate.Auto && map.PrimaryKeyMaps.Contains(pmi))
                    continue;

                b.Append(_tr.GetEscapedColumnName(pmi.ColumnName)).Append(_tr.ColumnDelimiter);
            }
            b.RemoveEnd(_tr.ColumnDelimiter);
            return b;
        }
 public virtual StringBuilder BuildUpdateSets(IObjectMapInfo map, object entity)
 {
     StringBuilder b = new StringBuilder();
     IReflector r = Reflector.Bind(entity);
     foreach (var pmi in map.NonPKPropertyMaps)
     {
         b.Append(_tr.GetEscapedColumnName(pmi.ColumnName));
         b.Append(_tr.Equal).Append(_tr.GetValueString(r.GetPropertyValue(pmi.PropertyName)));
         b.Append(_tr.ColumnDelimiter);
     }
     b.RemoveEnd(_tr.ColumnDelimiter);
     return b;
 }
示例#7
0
        public string ToJsonString(object instance)
        {
            var list = instance as IEnumerable;
            StringBuilder str = new StringBuilder();
            foreach (var item in list)
            {
                str.Append(item.ToJsonString()).Append(",");
            }
            if (str.Length > 0)
                str.RemoveEnd(',');

            return str.Bracketing(StringPair.SquareBracket).ToString();
        }
示例#8
0
        public string ToJsonString(object instance)
        {
            var dict = instance as IEnumerable;
            StringBuilder str = new StringBuilder();
            foreach (dynamic kvp in dict)
            {
                str.AppendFormat("\"{0}\":{1},", kvp.Key, JsonExtension.ToJsonString(kvp.Value));
            }
            if (str.Length > 0)
                str.RemoveEnd(',');

            return str.Bracketing(StringPair.CurlyBracket).ToString();
        }
示例#9
0
        private string MakeInterfacesList(ClassDeclarationSyntax syntax)
        {
            var interfaces = _semanticModel.GetDeclaredSymbol(syntax).Interfaces;

            StringBuilder str = new StringBuilder();
            foreach (var info in interfaces)
            {
                if (!info.IsScriptSymbol())
                {
                    this.AppendCompileIssue(syntax, IssueType.Error, IssueId.UseNonScript, info);
                }
                str.AppendFormat("{0}, ", info.GetTypeSymbolName());
            }
            if (interfaces.Count() > 0)
                str.RemoveEnd(", ");

            return str.ToString();
        }
示例#10
0
        public override StringBuilder BuildInsertValues(MappingInfo.IObjectMapInfo map, object entity)
        {
            StringBuilder b = new StringBuilder();
            IReflector r = Reflector.Bind(entity);
            foreach (var pmi in map.PropertyMaps)
            {
                if (map.PrimaryKeyGenerate == PrimaryKeyGenerate.Customized && map.PrimaryKeyMaps.Contains(pmi))
                {
                    string sequenceName = map.PKGenerateString.RemoveBegin(ConstantString.SEQ_Prefix);
                    b.Append(sequenceName).Append(_tr.MemberAccess).Append(ConstantString.SEQ_NextVal).Append(_tr.ColumnDelimiter);
                    continue;
                }

                b.Append(_tr.GetValueString(r.GetPropertyValue(pmi.PropertyName))).Append(_tr.ColumnDelimiter);
            }
            b.RemoveEnd(_tr.ColumnDelimiter);
            return b;
        }
        public virtual StringBuilder BuildInsertValues(IObjectMapInfo map, object entity)
        {
            StringBuilder b = new StringBuilder();
            IReflector r = Reflector.Bind(entity);
            foreach (var pmi in map.PropertyMaps)
            {
                if (map.PrimaryKeyGenerate == PrimaryKeyGenerate.Auto && map.PrimaryKeyMaps.Contains(pmi))
                    continue;

                //Note:special handling Guid when insert, must use '*', not same as WHERE {Guid{*}}
                object val = r.GetPropertyValue(pmi.PropertyName);
                if (val is Guid)
                    b.Append(_tr.GetValueString(val.ToString())).Append(_tr.ColumnDelimiter);
                else
                    b.Append(_tr.GetValueString(val)).Append(_tr.ColumnDelimiter);
            }
            b.RemoveEnd(_tr.ColumnDelimiter);
            return b;
        }
示例#12
0
        public override StringBuilder BuildInsertValues(MappingInfo.IObjectMapInfo map, object entity)
        {
            StringBuilder b = new StringBuilder();
            IReflector    r = Reflector.Bind(entity);

            foreach (var pmi in map.PropertyMaps)
            {
                if (map.PrimaryKeyGenerate == PrimaryKeyGenerate.Customized && map.PrimaryKeyMaps.Contains(pmi))
                {
                    string sequenceName = map.PKGenerateString.RemoveBegin(ConstantString.SEQ_Prefix);
                    b.Append(sequenceName).Append(_tr.MemberAccess).Append(ConstantString.SEQ_NextVal).Append(_tr.ColumnDelimiter);
                    continue;
                }

                b.Append(_tr.GetValueString(r.GetPropertyValue(pmi.PropertyName))).Append(_tr.ColumnDelimiter);
            }
            b.RemoveEnd(_tr.ColumnDelimiter);
            return(b);
        }
示例#13
0
        private string MakeInterfacesList(ClassDeclarationSyntax syntax)
        {
            var interfaces = _semanticModel.GetDeclaredSymbol(syntax).Interfaces;

            StringBuilder str = new StringBuilder();

            foreach (var info in interfaces)
            {
                if (!info.IsScriptSymbol())
                {
                    this.AppendCompileIssue(syntax, IssueType.Error, IssueId.UseNonScript, info);
                }
                str.AppendFormat("{0}, ", info.GetTypeSymbolName());
            }
            if (interfaces.Count() > 0)
            {
                str.RemoveEnd(", ");
            }

            return(str.ToString());
        }
示例#14
0
        public virtual StringBuilder BuildWherePrimaryKey(IObjectMapInfo map, object entity)
        {
            StringBuilder b = new StringBuilder();
            IReflector    r = Reflector.Bind(entity);

            foreach (var pki in map.PrimaryKeyMaps)
            {
                b.Append(_tr.GetEscapedColumnName(pki.ColumnName));
                object right = r.GetPropertyValue(pki.PropertyName);
                if (right == null)
                {
                    b.Append(_tr.Is);
                }
                else
                {
                    b.Append(_tr.Equal);
                }
                b.Append(_tr.GetValueString(right));
                b.Append(_tr.And);
            }
            b.RemoveEnd(_tr.And);
            return(b);
        }
        public static StringBuilder FCBuilder(StringBuilder FCString, StringBuilder funbuilder = null)
        {
            if (FCString == null)
            {
                return(null);
            }

            var noWildOrs  = new string[] { "~_or_", "~_~_", "~,_" };
            var wildOrs    = new string[] { ",_", "_~_", "_or_" };
            var noWildAnds = new string[] { "~_&&_", "~_and_" };
            var wildAnds   = new string[] { "_&&_", "_and_" };
            var abbyAlts   = new string[] { "abbybot", "abby_kaioken" };

            FCString.Replace(" ", "_").Replace(abbyAlts, "abigail_williams");
            if (FCString.Length > 0)
            {
                if (!FCString.EndsWith('~'))
                {
                    FCString.Append("*");
                }
                else
                {
                    FCString.RemoveEnd(1);
                }
            }
            if (FCString.Contains(wildOrs))
            {
                FCString.AppendStartEnd("{", "}");
                FCString.Replace(noWildOrs, " ~ ").Replace(wildOrs, "* ~ ");
            }
            FCString.Replace(noWildAnds, " ").Replace(wildAnds, "* ");
            while (FCString.Contains("**"))
            {
                FCString.Replace("**", "*");
            }
            return(FCString);
        }
 public virtual StringBuilder BuildWherePrimaryKey(IObjectMapInfo map, object entity)
 {
     StringBuilder b = new StringBuilder();
     IReflector r = Reflector.Bind(entity);
     foreach (var pki in map.PrimaryKeyMaps)
     {
         b.Append(_tr.GetEscapedColumnName(pki.ColumnName));
         object right = r.GetPropertyValue(pki.PropertyName);
         if (right == null)
             b.Append(_tr.Is);
         else
             b.Append(_tr.Equal);
         b.Append(_tr.GetValueString(right));
         b.Append(_tr.And);
     }
     b.RemoveEnd(_tr.And);
     return b;
 }
示例#17
0
        protected override void WndProc(ref Message m)
        {
            var      message = (Utils.ControlExtensions.WindowsMessage)m.Msg;
            Graphics graphics;
            Keys     key;

            System.Drawing.SizeF size;
            System.Drawing.Point point;
            RectangleF           rect;
            SolidBrush           brush;
            Brush        fontBrush;
            StringFormat stringFormat;

            switch (message)
            {
            case ControlExtensions.WindowsMessage.CREATE:

                using (graphics = this.CreateGraphics())
                {
                    tm = graphics.GetTextMetrics(this.Font);
                }

                nCharX         = tm.tmAveCharWidth;
                nCharY         = tm.tmHeight;
                this.BackColor = SystemColors.Window;

                builder = new StringBuilder();

                break;

            case ControlExtensions.WindowsMessage.SIZE:

                var loHigh = m.LParam.ToLowHiWord();

                nWindowX      = loHigh.Low;
                nWindowCharsX = Math.Max(1, nWindowX / nCharX);

                nWindowY      = loHigh.High;
                nWindowCharsY = Math.Max(1, nWindowY / nCharY);

                if (caret != null)
                {
                    caret.Position = new System.Drawing.Point(0, 0);
                }

                break;

            case ControlExtensions.WindowsMessage.KEYDOWN:

                key = (Keys)m.WParam;

                switch (key)
                {
                case Keys.Home:
                    nCaretPosX = 0;
                    break;

                case Keys.End:
                    nCaretPosX = nWindowCharsX - 1;
                    break;

                case Keys.PageUp:
                    nCaretPosY = 0;
                    break;

                case Keys.PageDown:
                    nCaretPosY = nWindowCharsY - 1;
                    break;

                case Keys.Left:
                    nCaretPosX = Math.Max(nCaretPosX - 1, 0);
                    break;

                case Keys.Right:
                    nCaretPosX = Math.Min(nCaretPosX + 1, nWindowCharsX - 1);
                    break;

                case Keys.Up:
                    nCaretPosY = Math.Max(nCaretPosY - 1, 0);
                    break;

                case Keys.Down:
                    nCaretPosY = Math.Min(nCaretPosY + 1, nWindowCharsY - 1);
                    break;

                case Keys.Delete:

                    if (builder.Length > 0)
                    {
                        builder.RemoveEnd(1);

                        caret.Hide();

                        using (graphics = this.CreateGraphics())
                        {
                            brush        = new SolidBrush(this.BackColor);
                            fontBrush    = SystemBrushes.WindowText;
                            stringFormat = new StringFormat(StringFormatFlags.MeasureTrailingSpaces);

                            size  = graphics.MeasureString(this.Text, this.Font, int.MaxValue, stringFormat);
                            rect  = new RectangleF(0, 0, size.Width, size.Height);
                            point = new System.Drawing.Point((int)rect.Right, (int)rect.Top);

                            graphics.FillRectangle(brush, this.ClientRectangle);

                            graphics.DrawString(this.Text, this.Font, fontBrush, rect.Location);

                            brush.Dispose();
                        }

                        caret.Position = point;
                        caret.Show();
                    }

                    return;
                }

                break;

            case ControlExtensions.WindowsMessage.CHAR:

                var ch = (char)m.WParam;

                key = ch.ToKey();

                switch (key)
                {
                case Keys.Back:

                    this.SendMessage(ControlExtensions.WindowsMessage.KEYDOWN, (int)Keys.Delete, 1L);
                    break;

                case Keys.Tab:

                    do
                    {
                        this.SendMessage(ControlExtensions.WindowsMessage.CHAR, ' ', 1L);
                    }while (nCaretPosX % 4 != 0);

                    break;

                case Keys.Return:

                    nCaretPosX = 0;

                    if (++nCaretPosY == nWindowCharsY)
                    {
                        nCaretPosY = 0;
                    }

                    break;

                case Keys.Escape:
                case Keys.LineFeed:

                    this.Beep(ControlExtensions.BeepType.OK);
                    break;

                default:

                    builder.Append(key.ToAscii());

                    caret.Hide();

                    using (graphics = this.CreateGraphics())
                    {
                        brush        = new SolidBrush(this.BackColor);
                        fontBrush    = SystemBrushes.WindowText;
                        stringFormat = new StringFormat(StringFormatFlags.MeasureTrailingSpaces);

                        size  = graphics.MeasureString(this.Text, this.Font, int.MaxValue, stringFormat);
                        rect  = new RectangleF(0, 0, size.Width, size.Height);
                        point = new System.Drawing.Point((int)rect.Right, (int)rect.Top);

                        graphics.FillRectangle(brush, this.ClientRectangle);

                        graphics.DrawString(this.Text, this.Font, fontBrush, rect.Location);

                        brush.Dispose();
                    }

                    caret.Position = point;
                    caret.Show();

                    break;
                }

                break;

            case ControlExtensions.WindowsMessage.PAINT:

                break;

            case ControlExtensions.WindowsMessage.SETFOCUS:

                caret          = new Caret(this, 0, this.Height);
                caret.Position = new System.Drawing.Point(0, 0);
                caret.Show();

                break;

            case ControlExtensions.WindowsMessage.KILLFOCUS:

                if (caret != null)
                {
                    caret.Dispose();
                }

                break;
            }

            base.WndProc(ref m);
        }
示例#18
0
 public virtual StringBuilder BuildSelectColumns(View view)
 {
     Visit(view);
     return(_str.RemoveEnd(_tr.ColumnDelimiter));
 }
示例#19
0
        //Note:Json standard only support 6 data types (Null, Boolean, Number, String, Object and Array)
        public static string ToJsonString(this object instance)
        {
            if (instance == null)
            {
                return(JsonConstant.Null);
            }

            //Note:As the instance!=null, we don't need check Nullable<T>
            Type t = instance.GetType();
            //Note:before go to normal, check if the customized extend converter can handle it.
            IExtendConverter cvt = ExtendConverter.Instance();

            if (cvt.CanConvert(t))
            {
                try
                {
                    return(cvt.ToJsonString(instance));
                }
                catch (Exception ex)
                {
                    throw ex.CreateWrapException <JsonExtendConverterException>();
                }
            }

            TypeCode code = Type.GetTypeCode(t);

            switch (code)
            {
            case TypeCode.Boolean:
                return(instance.ToString().ToLower());

            case TypeCode.Int16:
            case TypeCode.Int32:
            case TypeCode.Int64:
            case TypeCode.UInt16:
            case TypeCode.UInt32:
            case TypeCode.UInt64:
            case TypeCode.Decimal:
            case TypeCode.Double:
            case TypeCode.Single:
            case TypeCode.Byte:
            case TypeCode.SByte:
                return(instance.ToString());

            case TypeCode.String:
            case TypeCode.Char:
                return(((string)instance).Bracketing(StringPair.DoubleQuote));
            }

            StringBuilder str = new StringBuilder();

            if (!t.IsArray)//Note:Object
            {
                IReflector r = Reflector.Bind(instance, ReflectorPolicy.InstancePublicIgnoreCase);
                foreach (PropertyInfo propertyInfo in r.FindAllProperties())
                {
                    if (propertyInfo.Name == "Item")//Extend:Item is special name for indexer, not support currently.
                    {
                        continue;
                    }

                    string name = char.ToLower(propertyInfo.Name[0]) + propertyInfo.Name.Substring(1);
                    str.Append(name.Bracketing(StringPair.DoubleQuote));

                    str.Append(JsonConstant.Colon);
                    str.Append(r.GetPropertyValue(propertyInfo.Name).ToJsonString());
                    str.Append(JsonConstant.Comma);
                }
                str.RemoveEnd(JsonConstant.Comma);

                str.Bracketing(StringPair.CurlyBracket);
                return(str.ToString());
            }
            else//Note:Array
            {
                Array array = instance as Array;
                if (array.Length > 0)
                {
                    foreach (object element in array)
                    {
                        str.Append(element.ToJsonString());
                        str.Append(JsonConstant.Comma);
                    }
                    str.RemoveEnd(JsonConstant.Comma);
                }

                str.Bracketing(StringPair.SquareBracket);
                return(str.ToString());
            }
        }