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); }
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()); }