/// <summary>
            /// Creates a new instance of the IDTSOutputColumn enccapsualted in the MetadataSolumn
            /// </summary>
            /// <param name="output">Output where the new OutputColumn should be created</param>
            /// <returns></returns>
            public static RowNumberColumn CreateNewInstance(IDTSOutput output)
            {
                IDTSOutputColumn col = output.OutputColumnCollection.New();

                col.Name = Resources.RowNumberDefaultColumnName + col.ID.ToString();

                RowNumberTransformation.SetRowNumberColumnProperties(col);

                RowNumberColumn c = new RowNumberColumn(col);

                return(c);
            }
Esempio n. 2
0
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        currentSite = SiteContext.CurrentSite;
        currentUser = MembershipContext.AuthenticatedUser;

        // Check 'Manage' permission
        var manageBlogs = currentUser.IsAuthorizedPerResource("cms.blog", "Manage");

        // There is no sense to display (ALL) in blogs DDL when
        // user does not have manage blogs permission
        if (!manageBlogs)
        {
            DisplayAllRecord = false;
        }

        var condition = new WhereCondition().WhereEquals("NodeSiteID", currentSite.SiteID);

        if (!currentUser.IsGlobalAdministrator && !manageBlogs)
        {
            condition.Where(BlogHelper.GetBlogsWhere(currentUser.UserID, currentUser.UserName, null));
        }

        // Culture priority column to handle duplicities
        var culturePriority = new RowNumberColumn("CulturePriority", "BlogID");

        culturePriority.PartitionBy = "NodeID";

        // Init Blog selector
        uniSelector.DisplayNameFormat    = "{%BlogName%}";
        uniSelector.SelectionMode        = SelectionModeEnum.SingleDropDownList;
        uniSelector.WhereCondition       = condition.ToString(true);
        uniSelector.ReturnColumnName     = "BlogID";
        uniSelector.AdditionalColumns    = culturePriority.ToString();
        uniSelector.ObjectType           = "cms.blog";
        uniSelector.ResourcePrefix       = "unisiteselector";
        uniSelector.AllowEmpty           = false;
        uniSelector.AllowAll             = false;
        uniSelector.OnAfterRetrieveData += uniSelector_OnAfterRetrieveData;

        // Preselect my blogs
        if (IsInMydesk && !RequestHelper.IsPostBack())
        {
            uniSelector.Value = "##MYBLOGS##";
        }
    }
 private void propOutputColumn_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
 {
     if (e.ChangedItem.Label == "DataType")
     {
         RowNumberColumn col = (RowNumberColumn)propOutputColumn.SelectedObject;
         RowNumberColumn.RowNumberDataTypeType oldType = (RowNumberColumn.RowNumberDataTypeType)e.OldValue;
         if (oldType != col.DataType) //Reasign SelectedObject to reflect REaOnly Attirbute Change on Precision and Scale
         {
             propOutputColumn.SelectedObject = propOutputColumn.SelectedObject;
         }
     }
     else if (propOutputColumn.SelectedObject is RowNumberColumn && ((RowNumberColumn)propOutputColumn.SelectedObject).DataType == RowNumberColumn.RowNumberDataTypeType.DT_NUMERIC &&
              (e.ChangedItem.Label == "Precision" || e.ChangedItem.Label == "Scale")) //reasign SelectedObject to reflect eventual chagne in the InitialValue or IncrementBy
     {
         propOutputColumn.SelectedObject = propOutputColumn.SelectedObject;
     }
 }
        /// <summary>
        /// Processes rows in the inpuyt buffer
        /// </summary>
        /// <param name="inputID">ID of the input to process the input rows</param>
        /// <param name="buffer">Pipeline bufere with rows to process</param>
        public override void ProcessInput(int inputID, PipelineBuffer buffer)
        {
            if (!buffer.EndOfRowset)
            {
                while (buffer.NextRow())
                {
                    if (rowNumberColumns.Count == 0)
                    {
                        continue;
                    }

                    //foreach (RowNumberColumn col in rowNumberColumns)
                    for (int i = 0; i < rowNumberColumns.Count; i++)
                    {
                        RowNumberColumn col = rowNumberColumns[i];
                        switch (col.DataType)
                        {
                        case DataType.DT_DBDATE:
                            buffer.SetDate(col.Index, col.InitialValue);
                            DateTime val = col.InitialValue;
                            switch (col.IncrementType)
                            {
                            case IncrementByType.Day:
                                val = val.AddDays(col.IncrementBy);
                                break;

                            case IncrementByType.Week:
                                val = val.AddDays(col.IncrementBy * 7);
                                break;

                            case IncrementByType.Month:
                                val = val.AddMonths(col.IncrementBy);
                                break;

                            case IncrementByType.Year:
                                val = val.AddYears(col.IncrementBy);
                                break;
                            }
                            col.InitialValue = val;
                            continue;

                        case DataType.DT_I1:
                            buffer.SetSByte(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_I2:
                            buffer.SetInt16(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_I4:
                            buffer.SetInt32(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_I8:
                            buffer.SetInt64(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_NUMERIC:
                            buffer.SetDecimal(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_R4:
                        case DataType.DT_R8:
                            buffer.SetDouble(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_UI1:
                            buffer.SetByte(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_UI2:
                            buffer.SetUInt16(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_UI4:
                            buffer.SetUInt32(col.Index, col.InitialValue);
                            break;

                        case DataType.DT_UI8:
                            buffer.SetUInt64(col.Index, col.InitialValue);
                            break;

                        default:
                            throw new Exception("Unsupported Data Type");
                        }

                        col.InitialValue += col.IncrementBy;
                    }
                }
            }
        }
        /// <summary>
        /// PreExecute Phase for initialization of internal runtime structures
        /// </summary>
        public override void PreExecute()
        {
            base.PreExecute();
            IDTSInput input = ComponentMetaData.InputCollection[0];

            for (int i = 0; i < input.InputColumnCollection.Count; i++)
            {
                IDTSInputColumn column = input.InputColumnCollection[i];
            }

            IDTSOutput output = ComponentMetaData.OutputCollection[0];

            rowNumberColumns = new List <RowNumberColumn>();

            //Iterate thorough OutputColumns collection and generate and prepare RowNumberColumns
            foreach (IDTSOutputColumn col in output.OutputColumnCollection)
            {
                if (col.CustomPropertyCollection.Count == 2)
                {
                    RowNumberColumn numCol = new RowNumberColumn();
                    numCol.Index    = BufferManager.FindColumnByLineageID(input.Buffer, col.LineageID);
                    numCol.DataType = col.DataType;


                    foreach (IDTSCustomProperty prop in col.CustomPropertyCollection)
                    {
                        switch (prop.Name)
                        {
                        case "IncrementBy":
                            if (col.DataType == DataType.DT_DATE || col.DataType == DataType.DT_DBDATE)
                            {
                                string pv = prop.Value.ToString();
                                char   ch = pv[pv.Length - 1];
                                switch (ch)
                                {
                                case 'd':
                                    numCol.IncrementType = IncrementByType.Day;
                                    break;

                                case 'w':
                                    numCol.IncrementType = IncrementByType.Week;
                                    break;

                                case 'm':
                                    numCol.IncrementType = IncrementByType.Month;
                                    break;

                                case 'y':
                                    numCol.IncrementType = IncrementByType.Year;
                                    break;
                                }
                                numCol.IncrementBy = int.Parse(pv.Substring(0, pv.Length - 1));
                            }
                            else
                            {
                                numCol.IncrementBy   = prop.Value;
                                numCol.IncrementType = IncrementByType.Value;
                            }
                            break;

                        case "InitialValue":
                            numCol.InitialValue = prop.Value;
                            break;

                        default:
                            break;
                        }
                    }
                    rowNumberColumns.Add(numCol);
                }
            }
        }
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        currentSite = SiteContext.CurrentSite;
        currentUser = MembershipContext.AuthenticatedUser;

        // Check 'Manage' permission
        var manageBlogs = currentUser.IsAuthorizedPerResource("cms.blog", "Manage");

        // There is no sense to display (ALL) in blogs DDL when
        // user does not have manage blogs permission
        if (!manageBlogs)
        {
            DisplayAllRecord = false;
        }

        var condition = new WhereCondition().WhereEquals("NodeSiteID", currentSite.SiteID);
        if (!currentUser.IsGlobalAdministrator && !manageBlogs)
        {
            condition.Where(BlogHelper.GetBlogsWhere(currentUser.UserID, currentUser.UserName, null));
        }

        // Culture priority column to handle duplicities
        var culturePriority = new RowNumberColumn("CulturePriority", "BlogID");
        culturePriority.PartitionBy = "NodeID";

        // Init Blog selector
        uniSelector.DisplayNameFormat = "{%BlogName%}";
        uniSelector.SelectionMode = SelectionModeEnum.SingleDropDownList;
        uniSelector.WhereCondition = condition.ToString(true);
        uniSelector.ReturnColumnName = "BlogID";
        uniSelector.AdditionalColumns = culturePriority.ToString();
        uniSelector.ObjectType = "cms.blog";
        uniSelector.ResourcePrefix = "unisiteselector";
        uniSelector.AllowEmpty = false;
        uniSelector.AllowAll = false;
        uniSelector.OnAfterRetrieveData += uniSelector_OnAfterRetrieveData;

        // Preselect my blogs
        if (IsInMydesk && !RequestHelper.IsPostBack())
        {
            uniSelector.Value = "##MYBLOGS##";
        }
    }