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