Beispiel #1
0
        private async Task PoblarDtgv()
        {
            List <Aspect> aspectos = await AspectosPersonalizadosStatic.ObtenerAspectosPersonalizados(modelo.Name);

            dtgviewDatos.AutoGenerateColumns = false;
            dtgviewDatos.DataSource          = aspectos;
            dtgviewDatos.Columns["clmNombreTipo"].DataPropertyName = "Name";
            dtgviewDatos.Columns["clmEtiquetaPresentacionTipo"].DataPropertyName = "Title";
            dtgviewDatos.Columns["clmPadreTipo"].DataPropertyName = "ParentName";
        }
Beispiel #2
0
        private async Task CargarAspectos(Model modeloSeleccioado)
        {
            List <Aspect> aspectos = await AspectosPersonalizadosStatic.ObtenerAspectosPersonalizados(modeloSeleccioado.Name);

            cmbxTipoAspecto.Items.Clear();
            cmbxPropiedad.Items.Clear();
            foreach (var item in aspectos)
            {
                cmbxTipoAspecto.Items.Add(item);
            }
        }
Beispiel #3
0
        private async Task cargarCmbxPadres()
        {
            cmbxPadre.Items.Clear();
            List <Aspect> aspectosActivos = await AspectosPersonalizadosStatic.ObtenerAspectosActivos();

            foreach (var aspecto in aspectosActivos)
            {
                cmbxPadre.Items.Add(aspecto.PrefixedName);
            }
            cmbxPadre.Items.Add("gd2:editingInGoogle");
            cmbxPadre.Items.Add("gd2:sharedInGoogle");
            cmbxPadre.Items.Add("Ninguno");
        }
Beispiel #4
0
        /// <summary>
        /// Mapea Aspectos y sus propiedades de un Nodo JSON a los Aspectos y sus propiedades de un Objeto Nodo
        /// </summary>
        /// <param name="propiedadesDeserializadas">Nodo JSON con metadatos de descarga</param>
        /// <param name="nodoListo">Objeto Nodo, deserializado pero aun sin Aspectos. Se le añadirá sus Aspectos</param>
        private static async Task AñadirAspectos(dynamic propiedadesDeserializadas, Nodo nodoListo)
        {
            List <string> nodoAspectnames = (List <string>)nodoListo.AspectNames;

            List <Aspect> aspectosNodo        = new List <Aspect>();
            List <Aspect> aspectosDisponibles = Aspect.Aspects();

            foreach (var aspecto in nodoAspectnames)
            {
                foreach (var aspectoDisponible in aspectosDisponibles)
                {
                    if (aspectoDisponible.Name.Equals(aspecto))
                    {
                        aspectosNodo.Add(aspectoDisponible);
                        break;
                    }
                }
            }


            //Mapeo de aspectos personalizados
            List <Aspect> aspectosFaltantes = new List <Aspect>();

            foreach (var aspectoNoMap in nodoAspectnames)
            {
                if (aspectosNodo.Find(x => x.Name == aspectoNoMap) is null)
                {
                    string prefijoModelodesdeAspecto = aspectoNoMap.Split(':')[0];
                    string nombreAspecto             = aspectoNoMap.Split(':')[1];

                    if ((await ModelosPersonalizadosStatic.ObtenerModeloPersonalizadoxPrefijo(prefijoModelodesdeAspecto) is null))
                    {
                        continue;
                    }
                    Model modelo = await ModelosPersonalizadosStatic.ObtenerModeloPersonalizadoxPrefijo(prefijoModelodesdeAspecto);

                    Aspect aspectoPersonalizado = await AspectosPersonalizadosStatic.ObtenerAspectoPersonalizado(modelo.Name, nombreAspecto);

                    aspectoPersonalizado.Showable = true;
                    aspectosFaltantes.Add(aspectoPersonalizado);
                }
            }

            if (aspectosFaltantes.Count != 0)
            {
                aspectosNodo.AddRange(aspectosFaltantes);
            }

            //Properties de Aspectos:
            AñadirPropsAspectos(propiedadesDeserializadas, aspectosNodo, nodoListo);
        }
 private async Task PoblarDtgv()
 {
     if (proveniente == "ASPECTOS")
     {
         subModelo = await AspectosPersonalizadosStatic.ObtenerAspectoPersonalizado(modelo.Name, subModelo.Name);
     }
     if (proveniente == "TIPOS")
     {
         subModelo = await TiposPersonalizadosStatic.ObtenerTipoPersonalizado(modelo.Name, subModelo.Name);
     }
     dtgviewDatos.AutoGenerateColumns = false;
     dtgviewDatos.DataSource          = subModelo.Properties;
     dtgviewDatos.Columns["clmNombreTipo"].DataPropertyName = "Name";
     dtgviewDatos.Columns["clmEtiquetaPresentacionTipo"].DataPropertyName = "Title";
     dtgviewDatos.Columns["clmTipoDato"].DataPropertyName     = "DataType";
     dtgviewDatos.Columns["clmRequisito"].DataPropertyName    = "Mandatory";
     dtgviewDatos.Columns["clmValorDefault"].DataPropertyName = "DefaultValue";
 }
Beispiel #6
0
        private async Task CargarPropiedades(Model modelo, dynamic aspectoTipo)
        {
            List <Property> propiedades = new List <Property>();

            if (radioBtnAspecto.Checked)
            {
                propiedades = (await AspectosPersonalizadosStatic.ObtenerAspectoPersonalizado(modelo.Name, aspectoTipo.Name)).Properties;
            }
            else if (radioBtnTipo.Checked)
            {
                propiedades = (await TiposPersonalizadosStatic.ObtenerTipoPersonalizado(modelo.Name, aspectoTipo.Name)).Properties;
            }
            cmbxPropiedad.Items.Clear();
            foreach (var item in propiedades)
            {
                cmbxPropiedad.Items.Add(item);
            }
        }
Beispiel #7
0
        private async Task pruebaUnitaria()
        {
            //prueba unitaria
            Model modelo = await ModelosPersonalizadosStatic.ObtenerModeloPersonalizado("testModelNueva");

            Console.WriteLine("N " + modelo.Name);
            Console.WriteLine("M " + modelo.Author);
            Console.WriteLine("S " + modelo.Status);
            //Console.WriteLine("Types: "+modelo.Types.Count);

            List <Modelos.CMM.Type> tipos = await TiposPersonalizadosStatic.ObtenerTiposPersonalizados("testModelNueva");

            foreach (var item in tipos)
            {
                Console.WriteLine("********TIPOS*******");
                Console.WriteLine("Nombre: " + item.Name);
                Console.WriteLine("Descripción: " + item.Description);
                Console.WriteLine("Título" + item.Title);
                foreach (var prop in item.Properties)
                {
                    Console.WriteLine("----*Propiedades*");
                    Console.WriteLine("----Nombre:" + prop.Name);
                    Console.WriteLine("----Título: " + prop.Title);
                    if (prop.Constraints is null)
                    {
                    }
                    else
                    {
                        foreach (var constr in prop.Constraints)
                        {
                            Console.WriteLine("-----------*Constraint*: " + constr.Name);
                            Console.WriteLine("-----------Const PrefixedName:  " + constr.PrefixedName);
                            Console.WriteLine("-------------------*Params*");
                            foreach (var param in constr.Parameters)
                            {
                                Console.WriteLine("----------------- key: " + param.Name + " valor: " + param.SimpleValue);
                            }
                        }
                    }
                }
            }
            List <Aspect> aspectos = await AspectosPersonalizadosStatic.ObtenerAspectosPersonalizados("testModelNueva");

            foreach (var aspecto in aspectos)
            {
                Console.WriteLine();
                Console.WriteLine("********ASPECTOS*******");
                Console.WriteLine("Nombre: " + aspecto.Name);
                foreach (var prop in aspecto.Properties)
                {
                    Console.WriteLine("----*Propiedades*");
                    Console.WriteLine("-----Nombre: " + prop.Name);
                    Console.WriteLine("-----Descripción: " + prop.Description);
                    Console.WriteLine("-----Título: " + prop.Title);
                    Console.WriteLine("-----Tipo de dato: " + prop.Datatype);
                    Console.WriteLine("-----Valor por defecto: " + prop.DefaultValue);
                    Console.WriteLine("-----Prefixed Name:" + prop.PrefixedName);
                    Console.WriteLine("-----Indexación" + prop.IndexTokenisationMode);
                    Console.WriteLine("-----Multivalorado:" + prop.MultiValued);
                    foreach (var constraint in prop.Constraints)
                    {
                        Console.WriteLine("-----------*Constraint*: " + constraint.Name);
                        Console.WriteLine("------------Prefijo: " + constraint.PrefixedName);
                        Console.WriteLine("------------Tipo " + constraint.Type);
                        Console.WriteLine("-------------------*Params*");
                        foreach (var param in constraint.Parameters)
                        {
                            Console.WriteLine("------------------Nombre:" + param.Name);
                            Console.WriteLine("------------------Valor simple:" + param.SimpleValue);
                        }
                    }
                }
            }
        }
        private async Task CrearActualizarPropiedad()
        {
            if (btnAceptar.Text == "Crear")
            {
                List <Modelos.CMM.Constraint> constraints = new List <Modelos.CMM.Constraint>();
                cmbxIndexacion.SelectedItem = "Ninguno";
                Property propiedadCrear = new Property();
                propiedadCrear.Name        = txtNombre.Text;
                propiedadCrear.Description = txtDescripcion.Text;
                propiedadCrear.Title       = txtTitulo.Text;
                propiedadCrear.Datatype    = cmbxTipoDato.SelectedItem.ToString();
                propiedadCrear.MultiValued = false;

                string tipoDatoCrear = cmbxTipoDato.SelectedItem.ToString();
                if (tipoDatoCrear == "d:int" || tipoDatoCrear == "d:float" || tipoDatoCrear == "d:double" || tipoDatoCrear == "d:long" || tipoDatoCrear == "d:mltext" || tipoDatoCrear == "d:text")
                {
                    propiedadCrear.DefaultValue = txtValorPredeterminad.Text;    //////
                }
                else if (tipoDatoCrear == "d:boolean")
                {
                    if (cmbxValorPredeterminado.SelectedItem.ToString() == "Verdadero")
                    {
                        propiedadCrear.DefaultValue = "true";
                    }
                    else if (cmbxValorPredeterminado.SelectedItem.ToString() == "Falso")
                    {
                        propiedadCrear.DefaultValue = "false";
                    }
                }
                else if (tipoDato == "date")
                {
                    propiedadCrear.DefaultValue = dtpValorPredeterminado.Value.ToString("yyyy-MM-dd");
                }

                if (cmbxRequerido.SelectedItem.ToString() == "Opcional")
                {
                    propiedadCrear.Mandatory = false;
                }
                else
                {
                    propiedadCrear.Mandatory = true;
                }

                if (cmbxRestriccion.SelectedItem.ToString() == "Ninguno")
                {
                    propiedadCrear.Constraints = null;
                }
                else if (cmbxRestriccion.SelectedItem.ToString() == "Expresión Regular")
                {
                    if (!string.IsNullOrEmpty(txtExpresionRegular.Text))
                    {
                        if (!VerificarExpresioRegular(txtExpresionRegular.Text))
                        {
                            MessageBox.Show("Ingrese una Expresión Regular válida", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            txtExpresionRegular.Clear();
                            return;
                        }
                        else
                        {
                            Modelos.CMM.Constraint constraintRegex = new Modelos.CMM.Constraint("");
                            constraintRegex.Type = "REGEX";
                            List <Parameter> parameters = new List <Parameter>();
                            Parameter        parameter1 = new Parameter();
                            parameter1.Name        = "expression";
                            parameter1.SimpleValue = txtExpresionRegular.Text;
                            parameters.Add(parameter1);

                            Parameter parameter2 = new Parameter();
                            parameter2.Name        = "requiresMatch";
                            parameter2.SimpleValue = "true";
                            parameters.Add(parameter2);
                            constraintRegex.Parameters = parameters;

                            constraints.Add(constraintRegex);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Ingrese una Expresión Regular", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
                else if (cmbxRestriccion.SelectedItem.ToString() == "Longitud Mínima/Máxima")
                {
                    Modelos.CMM.Constraint constraintRegex = new Modelos.CMM.Constraint("");
                    constraintRegex.Type = "LENGTH";
                    List <Parameter> parameters = new List <Parameter>();
                    Parameter        parameter1 = new Parameter();
                    parameter1.Name        = "minLength";
                    parameter1.SimpleValue = txtRestriccionInf.Text;
                    parameters.Add(parameter1);

                    Parameter parameter2 = new Parameter();
                    parameter2.Name        = "maxLength";
                    parameter2.SimpleValue = txtRestriccionSup.Text;
                    parameters.Add(parameter2);
                    constraintRegex.Parameters = parameters;

                    constraints.Add(constraintRegex);
                }
                else if (cmbxRestriccion.SelectedItem.ToString() == "Valor Mínimo/Máximo")
                {
                    if (Int32.Parse(txtValorPredeterminad.Text) >= Int32.Parse(txtRestriccionInf.Text) && Int32.Parse(txtValorPredeterminad.Text) <= Int32.Parse(txtRestriccionSup.Text))
                    {
                        Modelos.CMM.Constraint constraintRegex = new Modelos.CMM.Constraint("");
                        constraintRegex.Type = "MINMAX";
                        List <Parameter> parameters = new List <Parameter>();
                        Parameter        parameter1 = new Parameter();
                        parameter1.Name        = "minValue";
                        parameter1.SimpleValue = txtRestriccionInf.Text;
                        parameters.Add(parameter1);

                        Parameter parameter2 = new Parameter();
                        parameter2.Name        = "maxValue";
                        parameter2.SimpleValue = txtRestriccionSup.Text;
                        parameters.Add(parameter2);
                        constraintRegex.Parameters = parameters;

                        constraints.Add(constraintRegex);
                    }
                    else
                    {
                        MessageBox.Show("Valor predeterminado no corresponde a la restricción Valor Mínimo/Máximo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }

                if (cmbxIndexacion.SelectedItem.ToString() == "Ninguno")
                {
                    propiedadCrear.Facetable             = "UNSET";
                    propiedadCrear.IndexTokenisationMode = "TRUE";
                    propiedadCrear.Indexed           = false;
                    propiedadCrear.MandatoryEnforced = false;
                }
                else if (cmbxIndexacion.SelectedItem.ToString() == "Texto libre")
                {
                    propiedadCrear.Facetable             = "FALSE";
                    propiedadCrear.IndexTokenisationMode = "TRUE";
                    propiedadCrear.Indexed           = true;
                    propiedadCrear.MandatoryEnforced = false;
                }

                propiedadCrear.Constraints = constraints;

                List <Property> propiedadesCrear = new List <Property>();
                propiedadesCrear.Add(propiedadCrear);
                PropertiesBodyUpdate propertiesBodyCreate = new PropertiesBodyUpdate(subModelo.Name, propiedadesCrear);
                if (proveniente == "ASPECTOS")
                {
                    await AspectosPersonalizadosStatic.AñadirPropiedadeAspecto(
                        modelo.Name,
                        subModelo.Name,
                        propertiesBodyCreate);

                    MessageBox.Show("Propiedad creada exitosamente");
                }
                if (proveniente == "TIPOS")
                {
                    fgestorModelos.AbrirAspectos(modelo);
                }
                await PoblarDtgv();

                NuevaPlantilla();
            }
            else if (btnAceptar.Text == "Editar")
            {
                if (modelo.Status == "DRAFT")
                {
                    Property propiedadEditar = new Property();
                    propiedadEditar.Name        = txtNombre.Text;
                    propiedadEditar.Description = txtDescripcion.Text;
                    propiedadEditar.Title       = txtTitulo.Text;
                    propiedadEditar.Datatype    = cmbxTipoDato.SelectedItem.ToString();

                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    string tipoDatoEditar = cmbxTipoDato.SelectedItem.ToString();
                    if (tipoDatoEditar == "d:int" || tipoDatoEditar == "d:float" || tipoDatoEditar == "d:double" || tipoDatoEditar == "d:long" || tipoDatoEditar == "d:mltext" || tipoDatoEditar == "d:text")
                    {
                        propiedadEditar.DefaultValue = txtValorPredeterminad.Text;
                    }
                    else if (tipoDato == "d:boolean")
                    {
                        if (cmbxValorPredeterminado.SelectedItem.ToString() == "Verdadero")
                        {
                            propiedadEditar.DefaultValue = "true";
                        }
                        else if (cmbxValorPredeterminado.SelectedItem.ToString() == "Falso")
                        {
                            propiedadEditar.DefaultValue = "false";
                        }
                    }
                    else if (tipoDato == "d:date")
                    {
                        propiedadEditar.DefaultValue = dtpValorPredeterminado.Value.ToString();
                    }

                    if (cmbxRequerido.SelectedItem.ToString() == "Opcional")
                    {
                        propiedadEditar.Mandatory = false;
                    }
                    else
                    {
                        propiedadEditar.Mandatory = true;
                    }
                    if (cmbxRequerido.SelectedItem.ToString() == "Ninguno")
                    {
                        propiedadEditar.Constraints = null;
                    }
                    else
                    {
                    }
                    if (cmbxIndexacion.SelectedItem.ToString() == "Ninguno")
                    {
                        propiedadEditar.Facetable             = "UNSET";
                        propiedadEditar.IndexTokenisationMode = "TRUE";
                        propiedadEditar.Indexed           = false;
                        propiedadEditar.MandatoryEnforced = false;
                    }
                    List <Property> propiedades = new List <Property>();
                    propiedades.Add(propiedadEditar);
                    PropertiesBodyUpdate propertiesBodyUpdate = new PropertiesBodyUpdate(subModelo.Name, propiedades);

                    if (proveniente == "ASPECTOS")
                    {
                        await AspectosPersonalizadosStatic.ActualizarPropiedadAspecto(
                            modelo.Name,
                            subModelo.Name,
                            propiedadEditar.Name,
                            propertiesBodyUpdate);

                        MessageBox.Show("Propiedad actualizada exitosamente");
                    }
                    if (proveniente == "TIPOS")
                    {
                        fgestorModelos.AbrirAspectos(modelo);
                    }

                    await PoblarDtgv();

                    NuevaPlantilla();
                }
                else
                {
                    MessageBox.Show("Para Editar una propiedad el modelo debe estar desactivado");
                }
            }
        }