Input column specification
Inheritance: IComparable
示例#1
0
        // Applies a BsonValue to Bson document template.
        public static void InsertDotNotated(this BsonDocument root, DestinationColumnInfo ci, BsonValue val)
        {
            BsonDocument doc = root;

            for (int i = 0; i < ci.DocNames.Length - 1; i++)
            {
                doc = doc[ci.DocNames[i]].AsBsonDocument;
            }
            doc[ci.DocNames[ci.DocNames.Length - 1]] = val;
        }
 private BsonDocument GetParentDoc(DestinationColumnInfo col, int iLvl)
 {
     if (col.DocNames.Length == 1)
         return _root;
     else
     {
         BsonDocument doc = _root;
         for (int i = 0; i < iLvl; i++)
         {
             doc = doc[col.DocNames[i]].AsBsonDocument;
         }
         return doc;
     }
 }
示例#3
0
        public override void PreExecute()
        {
            IDTSInput100 input = ComponentMetaData.InputCollection[0];

            // Read input column information to memory
            foreach (IDTSInputColumn100 inCol in input.InputColumnCollection)
            {
                DestinationColumnInfo ci = new DestinationColumnInfo();
                ci.BufferColumnIndex = BufferManager.FindColumnByLineageID(input.Buffer, inCol.LineageID);
                ci.ColumnName        = inCol.Name;
                ci.DataType          = inCol.DataType;
                _colInfos.Add(ci);
            }
            _colInfos.Sort();
        }
示例#4
0
 private BsonDocument GetParentDoc(DestinationColumnInfo col, int iLvl)
 {
     if (col.DocNames.Length == 1)
     {
         return(_root);
     }
     else
     {
         BsonDocument doc = _root;
         for (int i = 0; i < iLvl; i++)
         {
             doc = doc[col.DocNames[i]].AsBsonDocument;
         }
         return(doc);
     }
 }
示例#5
0
        /// <summary>
        /// Higher document level first.
        /// a
        /// b
        /// c.c1
        /// c.c2
        /// d.d1.d11
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public int CompareTo(object obj)
        {
            DestinationColumnInfo other = (DestinationColumnInfo)obj;
            int otherCount = (other.ColumnName.Length - other.ColumnName.Replace(".", "").Length);
            int thisCount  = (this.ColumnName.Length - this.ColumnName.Replace(".", "").Length);

            if (otherCount > thisCount)
            {
                return(-1);
            }
            else if (thisCount > otherCount)
            {
                return(1);
            }
            else
            {
                return(this.ColumnName.CompareTo(other.ColumnName));
            }
        }
 public void TestInsertDotNotatedRoot()
 {
     BsonDocument doc = (BsonDocument)_testDoc.DeepClone();
     DestinationColumnInfo ci = new DestinationColumnInfo();
     ci.ColumnName = "dbl";
     doc.InsertDotNotated(ci, 5.66);
     Assert.AreEqual(5.66, doc["dbl"]);
 }
 public void TestInsertDotNotatedNested()
 {
     BsonDocument doc = (BsonDocument)_testDoc.DeepClone();
     DestinationColumnInfo ci = new DestinationColumnInfo();
     ci.ColumnName = "nested.n2";
     doc.InsertDotNotated(ci, 5.66);
     Assert.AreEqual(5.66, ((BsonDocument)doc["nested"])["n2"]);
 }
示例#8
0
        /// <summary>
        /// Convert SSIS value to BsonValue
        /// </summary>
        /// <param name="val">SSIS value</param>
        /// <param name="ci">Column properties</param>
        /// <returns></returns>
        private BsonValue CreateBsonValue(object val, DestinationColumnInfo ci)
        {
            BsonValue bsonVal = null;

            if (val == null)
            {
                return(BsonNull.Value);
            }
            switch (ci.DataType)
            {
            case DataType.DT_BOOL:
                bsonVal = (bool)val;
                break;

            case DataType.DT_DATE:
            case DataType.DT_DBDATE:
            case DataType.DT_DBTIME:
            case DataType.DT_DBTIME2:
            case DataType.DT_DBTIMESTAMP:
            case DataType.DT_DBTIMESTAMP2:
            case DataType.DT_DBTIMESTAMPOFFSET:
            case DataType.DT_FILETIME:
                DateTime dtVal = (DateTime)val;
                bsonVal = DateTime.SpecifyKind(dtVal, DateTimeKind.Utc);
                break;

            case DataType.DT_GUID:
                bsonVal = (Guid)val;
                break;

            case DataType.DT_IMAGE:
            case DataType.DT_BYTES:
                bsonVal = (byte[])val;
                break;

            case DataType.DT_NULL:
            case DataType.DT_EMPTY:
                bsonVal = BsonNull.Value;
                break;

            case DataType.DT_NUMERIC:
            case DataType.DT_R4:
            case DataType.DT_R8:
            case DataType.DT_DECIMAL:
                bsonVal = Convert.ToDouble(val);
                break;

            case DataType.DT_I1:
            case DataType.DT_I2:
            case DataType.DT_I4:
            case DataType.DT_UI1:
            case DataType.DT_UI2:
            case DataType.DT_UI4:
                bsonVal = (int)val;
                break;

            case DataType.DT_UI8:
            case DataType.DT_I8:
                bsonVal = (long)val;
                break;

            case DataType.DT_TEXT:
            case DataType.DT_STR:
            case DataType.DT_WSTR:
            case DataType.DT_NTEXT:
                bsonVal = (string)val;
                break;

            default:
                bool pbCancel = true;
                ComponentMetaData.FireError(0, "MongoDB Destination", "Data type " + ci.DataType.ToString() + " is not supported.", "", 0, out pbCancel);
                break;
            }
            return(bsonVal);
        }
 /// <summary>
 /// Convert SSIS value to BsonValue
 /// </summary>
 /// <param name="val">SSIS value</param>
 /// <param name="ci">Column properties</param>
 /// <returns></returns>
 private BsonValue CreateBsonValue(object val, DestinationColumnInfo ci)
 {
     BsonValue bsonVal = null;
     if (val == null)
         return BsonNull.Value;
     switch (ci.DataType)
     {
         case DataType.DT_BOOL:
             bsonVal = (bool)val;
             break;
         case DataType.DT_DATE:
         case DataType.DT_DBDATE:
         case DataType.DT_DBTIME:
         case DataType.DT_DBTIME2:
         case DataType.DT_DBTIMESTAMP:
         case DataType.DT_DBTIMESTAMP2:
         case DataType.DT_DBTIMESTAMPOFFSET:
         case DataType.DT_FILETIME:
             DateTime dtVal = (DateTime)val;
             bsonVal = DateTime.SpecifyKind(dtVal, DateTimeKind.Utc);
             break;
         case DataType.DT_GUID:
             bsonVal = (Guid)val;
             break;
         case DataType.DT_IMAGE:
         case DataType.DT_BYTES:
             bsonVal = (byte[])val;
             break;
         case DataType.DT_NULL:
         case DataType.DT_EMPTY:
             bsonVal = BsonNull.Value;
             break;
         case DataType.DT_NUMERIC:
         case DataType.DT_R4:
         case DataType.DT_R8:
         case DataType.DT_DECIMAL:
             bsonVal = Convert.ToDouble(val);
             break;
         case DataType.DT_I1:
         case DataType.DT_I2:
         case DataType.DT_I4:
         case DataType.DT_UI1:
         case DataType.DT_UI2:
         case DataType.DT_UI4:
             bsonVal = (int)val;
             break;
         case DataType.DT_UI8:
         case DataType.DT_I8:
             bsonVal = (long)val;
             break;
         case DataType.DT_TEXT:
         case DataType.DT_STR:
         case DataType.DT_WSTR:
         case DataType.DT_NTEXT:
             bsonVal = (string)val;
             break;
         default:
             bool pbCancel = true;
             ComponentMetaData.FireError(0, "MongoDB Destination", "Data type " + ci.DataType.ToString() + " is not supported.", "", 0, out pbCancel);
             break;
     }
     return bsonVal;
 }
        public override void PreExecute()
        {
            IDTSInput100 input = ComponentMetaData.InputCollection[0];

            // Read input column information to memory
            foreach (IDTSInputColumn100 inCol in input.InputColumnCollection)
            {
                DestinationColumnInfo ci = new DestinationColumnInfo();
                ci.BufferColumnIndex = BufferManager.FindColumnByLineageID(input.Buffer, inCol.LineageID);
                ci.ColumnName = inCol.Name;
                ci.DataType = inCol.DataType;
                _colInfos.Add(ci);
            }
            _colInfos.Sort();
        }
 // Applies a BsonValue to Bson document template.
 public static void InsertDotNotated(this BsonDocument root, DestinationColumnInfo ci, BsonValue val)
 {
     BsonDocument doc = root;
     for (int i = 0; i < ci.DocNames.Length - 1; i++)
     {
         doc = doc[ci.DocNames[i]].AsBsonDocument;
     }
     doc[ci.DocNames[ci.DocNames.Length - 1]] = val;
 }