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