This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

I can't make the custom validator example work

Hello,

I am developing a VAF2.3 application where I need to make an ODBC connection; So I want a configuration tab in the admin to write the connection string and then validate it. That's exactly the example here : Custom-Validation .

Here are the 2 class I made: 

Configuration.cs :

using MFiles.VAF.Configuration;
using System.Runtime.Serialization;
using System.Collections.Generic;

namespace mynamespace
{
    [DataContract]
    public class Configuration : MFiles.VAF.Extensions.Configuration.ConfigurationBase
    {

        [DataMember]
        [JsonConfEditor(DefaultValue = "v_agents_responsables_h",
        Label = "Nom de la table",
        HelpText = "Nom de la table ou de la vue contenant le référentiel Agents")]
        public string tablename = "";

        [DataMember]
        [JsonConfEditor(DefaultValue = "Driver={SQL Server};Server=mf-sql.mydomain.local;Database=REF AGENTS;Uid=sa;Pwd=Admin123;",
            Label = "Chaîne de connexion ODBC",
            HelpText = "La connectionString ODBC permettant de se connecter au référentiel Agents. Elle doit faire référence à la connexion TNS créée lors de l'installation du serveur")]
        public string ConnectionString = "Driver={SQL Server};Server=mf-sql.mydomain.local;Database=REF AGENTS;Uid=sa;Pwd=Admin123;";

        [DataMember]
        public List<Mapping> mappings { get; set; }

        [DataContract]
        public class Mapping
        {
            [DataMember]
            public string colonneSQL { get; set; }

            [DataMember]
            [TextEditor(IsRequired = true)]
            public string mfilesProperty { get; set; }
        }
    }


}

VaultApplication.cs: 

using MFiles.VAF.Common;
using MFiles.VAF.Configuration;
using MFilesAPI;
using System;
using System.Collections;
using System.Collections.Generic;
using MFiles.VaultApplications.Logging;


namespace mynamespace
{
    /// <summary>
    /// The entry point for this Vault Application Framework application.
    /// </summary>
    /// <remarks>Examples and further information available on the developer portal: http://developer.m-files.com/. </remarks>
    public class VaultApplication
        : MFiles.VAF.Extensions.ConfigurableVaultApplicationBase<Configuration>
    {

        #region Overrides of ConfigurableVaultApplicationBase<Configuration>

        /// <inheritdoc />
        protected override IEnumerable<ValidationFinding> CustomValidation(Vault vault, Configuration config)
        {
            return base.CustomValidation(vault, config);
        }


        private IEnumerable<ValidationFinding> CustomValidator(Configuration configuration)
        {
            ValidationFinding finding = null;

            try
            {
                // Connect to the database to test the connection is valid.
                using (var sqlConnection = new System.Data.SqlClient.SqlConnection(configuration.ConnectionString))
                {
                    // Connect to the database.
                    sqlConnection.Open();

                    // If no exception then report okay.
                    finding = new ValidationFinding(
                        ValidationFindingType.Ok,
                        nameof(Configuration.ConnectionString),
                        "Connection successful");

                    // Disconnect.
                    sqlConnection.Close();
                }
            }
            catch (Exception e)
            {
                // Report an exception.
                finding = new ValidationFinding(
                    ValidationFindingType.Error,
                    nameof(Configuration.ConnectionString),
                    $"Exception connecting to server: {e.Message}");
            }

            // Return the finding.
            yield return finding;
        }

        #endregion

// my custom code

}}

In the admin interface, I can write anything but it will never be validated: 

I don't really understand the example. Which code do I need to conserve in the 2.3 framework?

 Thank you all for the help.

Amaury

NB : here are the librairies : 

Parents Reply Children