Ejemplo n.º 1
0
        private DataComparer ConfigureComparer()
        {
            DataComparer comparer = this.DimensionProperty.Comparer;

            //Si no esta definido el tipo de orden por defecto hace falta segun que tipos aplicar
            //un tipo por defecto
            if (this.OrderDimensionProperty == OrderTypeEnum.NotDefined)
            {
                switch (this.DimensionProperty.DisplayType)
                {
                case VariableTypeEnum.Discrete:
                    //ordenar ascendente
                    return(comparer);

                case VariableTypeEnum.Continuous:
                    //ordenar ascendente
                    return(comparer);

                case VariableTypeEnum.Nominal:
                    //nada
                    return(null);

                case VariableTypeEnum.Ordinal:
                    //todo: aqui entraria un enumerado (¿y puede que un string???), ordenar por el enumerado
                    //Este no tiene ordenacion por defecto, es parecido al nominal
                    return(comparer);

                default:
                    throw new NotSupportedException();
                }
            }
            else
            {
                if (this.OrderDimensionProperty == OrderTypeEnum.Descending)
                {
                    comparer.Descending = true;
                }

                switch (this.DimensionProperty.DisplayType)
                {
                case VariableTypeEnum.Discrete:
                    return(comparer);

                case VariableTypeEnum.Continuous:
                    return(comparer);

                case VariableTypeEnum.Nominal:
                    return(comparer);

                case VariableTypeEnum.Ordinal:
                    //todo: aqui entraria un enumerado (¿y puede que un string???), ordenar por el enumerado
                    return(comparer);

                default:
                    throw new NotSupportedException();
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Esta funcion se encarga de ordenar los datos de salida segun la configuracion indicada a traves del
        /// objeto comparador
        /// </summary>
        /// <param name="output"></param>
        /// <param name="comparer"></param>
        private void SortOutputData(OutputSeries outputSeries, DataComparer comparer)
        {
            //var a1 =output.VariableData;
            //var a2 = output.DimensionData;
            //var a3 = output.ZVariableData;
            object auxVariable  = null;
            object auxDimension = null;
            object auxZVariable = null;

            //la z puede o no aparecer
            bool checkZ  = (outputSeries.ZVariableData != null && (outputSeries.DimensionData.Length == outputSeries.ZVariableData.Length));
            bool ordered = true;

            do
            {
                ordered = true;
                for (int i = 0; i < outputSeries.DimensionData.Length - 1; ++i)
                {
                    if (comparer.Compare(outputSeries.DimensionData[i], outputSeries.DimensionData[i + 1]) > 0)
                    {
                        ordered     = false;
                        auxVariable = outputSeries.VariableData[i];
                        outputSeries.VariableData[i]     = outputSeries.VariableData[i + 1];
                        outputSeries.VariableData[i + 1] = auxVariable;

                        auxDimension = outputSeries.DimensionData[i];
                        outputSeries.DimensionData[i]     = outputSeries.DimensionData[i + 1];
                        outputSeries.DimensionData[i + 1] = auxDimension;

                        if (checkZ)
                        {
                            auxZVariable = outputSeries.ZVariableData[i];
                            outputSeries.ZVariableData[i]     = outputSeries.ZVariableData[i + 1];
                            outputSeries.ZVariableData[i + 1] = outputSeries.ZVariableData[i];
                        }
                    }
                }
            } while (ordered == false);
        }