Exemple #1
0
        private void LoadAllVariableMetadata(string sql, DatabaseObject databaseObject, IDictionary variables)
        {
            foreach (Variable v in variables.Values)
            {
                v.Metadata = new VariableMetadata();
            }

            using (var cn = OpenConnection())
            {
                using (var cmd = new NpgsqlCommand(sql, cn))
                {
                    cmd.Parameters.Add("@schemaName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.SchemaName;
                    cmd.Parameters.Add("@objectName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.ObjectName;

                    using (var dr = cmd.ExecuteReader())
                    {
                        string           variablename = null;
                        VariableMetadata meta         = null;

                        while (dr.Read())
                        {
                            string name  = dr.GetString(0);
                            string value = dr.GetString(1);

                            if (name != variablename)
                            {
                                meta         = (VariableMetadata)((Variable)variables[name]).Metadata;
                                variablename = name;
                            }
                            meta.Summary = value;
                        }
                    }
                }
            }
        }
		/// <summary>
		///     Adds the replacement <paramref name="expression" /> for the <paramref name="variable" />, causing the
		///     <paramref name="variable" /> to be replaced by <paramref name="expression" /> in all future replacement operations.
		/// </summary>
		/// <param name="variable">The variable that should be replaced by <paramref name="expression" />.</param>
		/// <param name="expression">The expression that <paramref name="variable" /> should be replaced with.</param>
		public void AddVariableReplacement(VariableMetadata variable, Expression expression)
		{
			Requires.NotNull(variable, () => variable);
			Requires.NotNull(expression, () => expression);
			Requires.That(!_replacedVariables.ContainsKey(variable), () => variable, "The variable has already been added.");

			_replacedVariables.Add(variable, expression);
		}
Exemple #3
0
        private void LoadAllVariableMetadata(string sql, DatabaseObject databaseObject, IDictionary variables)
        {
            // Make sure all will be marked as loaded
            foreach (Variable v in variables.Values)
            {
                v.Metadata = new VariableMetadata();
            }

            using (var cn = OpenConnection())
            {
                using (var cmd = new SqlCommand(sql, cn))
                {
                    cmd.Parameters.Add("@schemaName", SqlDbType.NVarChar).Value = databaseObject.SchemaName;
                    cmd.Parameters.Add("@objectName", SqlDbType.NVarChar).Value = databaseObject.ObjectName;

                    using (var dr = cmd.ExecuteReader())
                    {
                        string           variablename = null;
                        VariableMetadata meta         = null;

                        while (dr.Read())
                        {
                            string name     = dr.GetString(0);
                            string metaname = dr.GetString(1);
                            string value    = dr.GetString(2);

                            if (name != variablename)
                            {
                                meta         = (VariableMetadata)((Variable)variables[name]).Metadata;
                                variablename = name;
                            }

                            switch (metaname)
                            {
                            case Constants.MetaSummary:
                                meta.Summary = value;
                                break;

                            case Constants.MetaContent:
                                meta.Content = value;
                                break;

                            case Constants.MetaUnit:
                                meta.Unit = value;
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
        }
		/// <summary>
		///     Classifies the operations performed on the <paramref name="variable" /> within the <paramref name="node" />.
		/// </summary>
		/// <param name="node">The node of a bound tree the <paramref name="variable" /> should be classified for.</param>
		/// <param name="variable">The variable that should be classified.</param>
		public static VariableOperations Classify(BoundNode node, VariableMetadata variable)
		{
			Requires.NotNull(node, () => node);
			Requires.NotNull(variable, () => variable);

			_instance._writeContext = 0;
			_instance._operations = VariableOperations.None;
			_instance._variable = variable;
			_instance.Visit(node);

			Assert.That(_instance._writeContext == 0, "Unbalanced write context operations.");
			return _instance._operations;
		}
        /// <summary>
        /// Gets specified version of the schema for the variable describing its structure.
        /// </summary>
        public override VariableSchema GetSchema(SchemaVersion version)
        {
            if (HasChanges)
            {
                if (version == SchemaVersion.Committed)
                {
                    return(changes.InitialSchema);
                }

                // Making a schema for proposed version of the variable

                string name = changes.Name == null ? this.name : changes.Name;
                ReadOnlyDimensionList roDims   = new ReadOnlyDimensionList(changes.Dimensions == null ? dims : changes.Dimensions);
                VariableMetadata      metadata = this.metadata.Clone();

                CoordinateSystemCollection cs        = changes.Cs == null ? csystems : changes.Cs;
                CoordinateSystemSchema[]   csSchemas = new CoordinateSystemSchema[cs.Count];
                for (int i = 0; i < csSchemas.Length; i++)
                {
                    csSchemas[i] = cs[i].GetSchema();
                }

                VariableSchema schema = new VariableSchema(name,
                                                           TypeOfData,
                                                           roDims,
                                                           csSchemas,
                                                           metadata);
                return(schema);
            }
            else
            {
                if (version == SchemaVersion.Proposed)
                {
                    throw new Exception("Variable is commited and has no changes.");
                }

                CoordinateSystemSchema[] csSchemas = new CoordinateSystemSchema[csystems.Count];
                for (int i = 0; i < csSchemas.Length; i++)
                {
                    csSchemas[i] = csystems[i].GetSchema();
                }

                VariableSchema schema = new VariableSchema(
                    name, TypeOfData,
                    new ReadOnlyDimensionList(dimensions),
                    csSchemas,
                    metadata.Clone());

                return(schema);
            }
        }
Exemple #6
0
        protected override void LoadAllParameterMetadata(DatabaseObject databaseObject)
        {
            var sql = @"SELECT  pgd.description,proargnames
FROM pg_catalog.pg_namespace n
INNER JOIN pg_catalog.pg_proc p ON p.pronamespace = n.oid
INNER JOIN pg_catalog.pg_description pgd ON (pgd.objoid=p.oid)
WHERE nspname = @schemaName and proname= @objectName;";

            var variables = ((IParameters)databaseObject).Parameters;

            foreach (Variable v in variables.Values)
            {
                v.Metadata = new VariableMetadata();
            }

            using (var cn = OpenConnection())
            {
                using (var cmd = new NpgsqlCommand(sql, cn))
                {
                    cmd.Parameters.Add("@schemaName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.SchemaName;
                    cmd.Parameters.Add("@objectName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.ObjectName;

                    using (var dr = cmd.ExecuteReader())
                    {
                        VariableMetadata meta = null;

                        while (dr.Read())
                        {
                            string value     = dr.GetString(0);
                            var    paramname = dr.GetValue(1) as string[];
                            if (paramname.Count() > 0)
                            {
                                var paramlist = paramname;

                                foreach (var v in paramlist)
                                {
                                    meta         = (VariableMetadata)((Variable)variables[v]).Metadata;
                                    meta.Summary = value;
                                }
                            }
                        }
                    }
                }
            }
        }
		/// <summary>
		///   Transforms the <paramref name="variable" />.
		/// </summary>
		private static Ssm.Var Transform(VariableMetadata variable)
		{
			return Ssm.Var.NewLocal(variable.Name, Transform(variable.Type));
		}
Exemple #8
0
		/// <summary>
		///     Generates a new, uniquely-named local replacement variable for <paramref name="variable" />.
		/// </summary>
		private VariableMetadata ReplaceWithNewLocalVariable(VariableMetadata variable)
		{
			var uniqueName = _nameScope.MakeUnique(variable.Name);
			var replacingVariable = new VariableMetadata(uniqueName, variable.Type, isParameter: false);

			_localVariables.Add(replacingVariable);
			_variableReplacer.AddVariableReplacement(variable, new VariableExpression(replacingVariable));

			return replacingVariable;
		}