예제 #1
0
        public List <ADFField> ExtractSimpleMetadata(DescribeSObjectResult sfobject)
        {
            List <ADFField> simpleFields = new List <ADFField>();

            foreach (var field in sfobject.fields)
            {
                // check to go around ADF unsupported fields
                if (field.type != fieldType.address &&
                    field.type != fieldType.location &&
                    SupportedField(field))
                {
                    var newField = new ADFField();
                    var rawField = field.type;
                    newField.name = field.name.ToLowerInvariant();
                    var cleanedField = field.type.ToString().Contains('@') ? field.type.ToString().Replace('@', ' ') : field.type.ToString();
                    var netType      = TypeMapper.SalesforceToDotNet.Where(p => p.Key == cleanedField).FirstOrDefault();
                    Debug.WriteLine(string.Concat(field.name, ", ", rawField, ", ", cleanedField, ", ", netType.Value));
                    if (netType.Key != null)
                    {
                        if (netType.Value == "int")
                        {
                            if (field.digits <= 5)
                            {
                                newField.type = "Int16";
                            }
                            if (field.digits > 5 && field.digits <= 10)
                            {
                                newField.type = "Int32";
                            }
                            if (field.digits > 10 && field.digits <= 19)
                            {
                                newField.type = "Int64";
                            }
                        }
                        else
                        {
                            newField.type = netType.Value;
                        }
                        simpleFields.Add(newField);
                    }
                }
            }
            return(simpleFields);
        }
예제 #2
0
        private string CreatePayload(SalesforceSOAP.Field[] sfFields, StringBuilder sb, ADFField field)
        {
            var sqlType = TypeMapper.DotNetToSql.Where(p => p.Key == field.type).First();

            if (sqlType.Key != null && sqlType.Value == "nvarchar")
            {
                int nvarcharSize = sfFields.First(e => e.name.ToLowerInvariant() == field.name).length;

                string size = string.Empty;

                if (nvarcharSize > 4000)
                {
                    size = "max";
                }
                if (nvarcharSize == 0)
                {
                    size = "255";
                }

                string commandFormat = string.Empty;

                if (field.name == "id")
                {
                    commandFormat = "[{0}] [{1}]({2}),";
                }
                else
                {
                    commandFormat = "[{0}] [{1}]({2}) NULL,";
                }

                sb.AppendLine(string.Format(commandFormat,
                                            field.name,
                                            string.IsNullOrEmpty(sqlType.Value) ? field.type.ToString() : sqlType.Value,
                                            !string.IsNullOrEmpty(size) ? size : nvarcharSize.ToString()));
            }
            else
            {
                sb.AppendLine(string.Format("[{0}] [{1}] NULL,", field.name, string.IsNullOrEmpty(sqlType.Value) ? field.type.ToString() : sqlType.Value));
            }
            return(sb.ToString());
        }