getFinalList() public method

public getFinalList ( List vlst ) : List
vlst List
return List
        private void valueLabelDialog()
        {

            string selectedData = "";
            string cellValue = variableGrid.CurrentCell.Text;
            string rowid = variableGrid.CurrentCell.Row.DataItem.ToString();
            // check this string colid = variableGrid.CurrentCell.Column.Header.ToString();

            IAnalyticsService analyticServ = LifetimeService.Instance.Container.Resolve<IAnalyticsService>();

            bool hasmap = false;
            bool varfound = false;//variable found in ds.Variables or not
            int varidx = 0; // for index of vaiable in ds.Variables. Which is under Scale 2 Nominal (or vice versa ) change.
            /////testing Value Lable popup /////22Sep2011
            ValueLablesDialog fm = new ValueLablesDialog();
            fm.colName = rowid;
            fm.datasetName = ds.Name;
            fm.maxfactors = ds.maxfactor;//setting maximum factor limit.
            string[] dsvals = null;//=new string[ds.Variables.Count];
            DataColumnMeasureEnum measure = DataColumnMeasureEnum.Scale;
            int i = 0;
            ValueLabelDialogMatrix vlmatrix = new ValueLabelDialogMatrix();
            foreach (var v in ds.Variables)//search for col name
            {
                if (v.Name.Equals(rowid))
                {
                    varfound = true;
                    if (v.Values != null && v.Values.Count > 0)//if colname is found
                    {
                        //find if '.' exists. Following can be temp fix. We can refine.
                        bool isdot = false;
                        bool isblank = false; //18Mar2014
                        int unwanteditems = 0;
                        foreach (var lb in v.Values)
                        {
                            if (lb.ToString().Equals("."))
                            { unwanteditems++; }
                            if (lb.ToString().Trim().Equals(""))
                            { unwanteditems++; }
                        }
                        //if(isdot)
                        dsvals = new string[v.Values.Count - unwanteditems];// '.' & '' is excluded
                        //else
                        //    dsvals = new string[v.Values.Count];// '.' does not exists. no need to exclude


                        //dsvals = new string[v.Values.Count-1];// '.' is excluded
                        foreach (var lbls in v.Values)//get value lables for a column
                        {
                            if (!lbls.ToString().Equals(".") && !lbls.ToString().Trim().Equals("")) // dot should be shown in value lable dialog
                            {
                                dsvals[i] = lbls.ToString();
                                vlmatrix.addLevel(lbls.ToString(), i, true);

                                //right now we only support converting first Scale to N/O and then from that N/O to S
                                //Using following 'if' and may be couple fixes we may be able to convert first N/O to scale and then backwards
                                //02feb2014. When converting from Nominal/Ordinal to scale very first time.
                                //Originally variable was Nominal/Ordinal and first time we want to change it to scale.
                                //if (v.factormapList.Count < v.Values.Count)
                                //{
                                //    v.factormapList = new List<FactorMap>();
                                //    FactorMap fmp = null;
                                //    fmp = new FactorMap();
                                //    fmp.labels = lbls.ToString();
                                //    fmp.textbox = lbls.ToString();
                                //    v.factormapList.Add(fmp);
                                //}
                            }
                            i++;
                        }
                        measure = v.Measure;

                        fm.ValueLableListBoxValues = dsvals;//setting in popup
                        fm.oldfactcount = dsvals.Length;

                        //17Apr2014 // for retrieveing stored factor map
                        if (v.factormapList.Count > 0)
                            hasmap = true;
                        //break;
                    }
                    break;
                }
                if (!varfound)
                    varidx++;
            }


            fm.colMeasure = measure;
            fm.changeFrom = measure.ToString();//this 'changeFrom' should not change till dialog is closed(OK/CANCEL)
            fm.OKclicked = false;
            fm.modified = false; // modification done or not
            fm.vlmatrix = vlmatrix; // sending refrence of matrix.
            fm.ShowDialog();


            bool isOkclick = fm.OKclicked;
            bool ismodified = fm.modified;


            if (hasmap && fm.changeTo=="Scale")//17Apr2014 retrieveing stored factor map 
            {
                foreach (FactorMap fcm in ds.Variables[varidx].factormapList)
                {
                    FactorMap cpyfm = new FactorMap();
                    cpyfm.labels = fcm.textbox; //reversing textbox and labels
                    cpyfm.textbox = fcm.labels;
                    fm.factormapList.Add(cpyfm);
                }
            }
            List<FactorMap> fctmaplst = fm.factormapList;
            measure = fm.colMeasure;//retrieve new Measure from Value Lable Dialog
            bool OK_subdialog=false;
            if (isOkclick)
            {
                if (fctmaplst != null && fctmaplst.Count <= DS.maxfactor)//OK from main dailog. Sub dialog will appear now.
                {
                    fm.Close();//release resources held by this popup
                    //show sub dialog
                    ValueLabelsSubDialog vlsd=null;
                    if(fm.changeFrom == "Scale")
                        vlsd = new ValueLabelsSubDialog(fctmaplst, "Existing Values", "New Labels");
                    else
                        vlsd = new ValueLabelsSubDialog(fctmaplst, "Existing Values", "New Labels");// reverse text and labels

                    vlsd.ShowDialog();
                    OK_subdialog = vlsd.OKclicked;
                    fctmaplst = vlsd.factormap;
                    vlsd.Close(); //release resources held by this popup
                    if (OK_subdialog)//ok from sub-dialog
                    {
                        //ds.Variables[varidx].factormapList.Clear();
                        if (fm.changeFrom == "Scale")
                        {
                            //// read changes from UI and set UI vars to take changes //// Update UI side datasource
                            List<string> vlst = new List<string>();
                            foreach (FactorMap newlvl in fctmaplst)//get value lables for a column
                            {
                                if (!newlvl.textbox.Trim().Equals(""))//blanks are ignored from sub-dialog
                                    vlst.Add(newlvl.textbox);
                            }
                            updateVargridValuesCol(rowid, measure, vlst); // update Values Col using common function


                            //17Apr2014 Saving factormap along with other col porps of DataSourceVariable
                            int varcount = ds.Variables.Count;
                            //for (int idx = 0; idx < varcount; idx++)// v in ds.Variables)//no need of 'for' when varidx can do the job
                            //{
                            if (ds.Variables[varidx].Name.Equals(rowid) && ds.Variables[varidx].Values!=null && ds.Variables[varidx].Values.Count > 0)//if colname is found
                                {
                                    ds.Variables[varidx].factormapList.Clear();
                                    foreach (FactorMap fcm in fctmaplst)
                                    {
                                        FactorMap copyfm = new   FactorMap();
                                        copyfm.labels = fcm.labels;
                                        copyfm.textbox = fcm.textbox;

                                        ds.Variables[varidx].factormapList.Add(copyfm);
                                    }
                                    //break; //no need of break, when 'for' is commented out.
                                }
                            //}
                        }
                        else
                            updateVargridValuesCol(rowid, measure, null); // update Values Col using common function
                        if (fm.changeFrom == "Scale" && (fm.changeTo == "Nominal" || fm.changeTo == "Ordinal"))
                        {
                            if (OK_subdialog)//ok from sub-dialog
                            {
                                analyticServ.ChangeScaleToNominalOrOrdinal(rowid, fctmaplst, fm.changeTo, ds.Name);
                            }
                        }
                        else if ((fm.changeFrom == "Nominal" || fm.changeFrom == "Ordinal") && fm.changeTo == "Scale")// Nom, Ord to Scale
                        {
                            //MessageBox.Show("Nom Ord to Scale ");
                            if (OK_subdialog)//ok from sub-dialog
                            {
                                analyticServ.ChangeNominalOrOrdinalToScale(rowid, fctmaplst, fm.changeTo, ds.Name);
                            }
                        }
                    }//OK from sub-dialog
                }

                else // Nominal -> Ordinal  /  Ordinal -> Nominal. No sub dialog, as if now.
                {
                    //check if values are changed and then set ds.Changed = true;
                    if (ismodified)//values changed
                    {
                        ////setting UI side vars and datasets////
                        //measure = fm.colMeasure;//retrieve new Measure from Value Lable Dialog. shifted above for common access
                        List<string> vlst = new List<string>();

                        foreach (string newlvl in fm.ValueLableListBoxValues)//get value lables for a column
                        {
                            vlst.Add(newlvl);
                        }
                        List<ValLvlListItem> finalList = vlmatrix.getFinalList(vlst); 
                         updateVargridValuesCol(rowid, measure, vlst); // update Values Col using common function
                        //set this new list of levels to R for update.
                         analyticServ.ChangeColumnLevels(rowid, finalList, ds.Name);
                    }//if modified
                }//else .. n2s n2o o2n o2s
            }//if OK on main dialog

            fm.Close();//release resources held by this popup

            ////refreshing datagrid. if Main dialog modified or if ok is clicked from sub-dialog
            if (ismodified || OK_subdialog)
            {
                //sortcolnames = null; //10May2014 removesort icon from the already sorted col if its measure is changed.
                refreshDataGrid();
                variableGrid.Refresh();
            }
        }