public ParameterMetadata(OrdinalParameterDescriptor[] ordinalDescriptors,
			IDictionary<string, NamedParameterDescriptor> namedDescriptorMap)
		{
			if (ordinalDescriptors == null)
			{
				this.ordinalDescriptors = EmptyOrdinals;
			}
			else
			{
				OrdinalParameterDescriptor[] copy = new OrdinalParameterDescriptor[ordinalDescriptors.Length];
				Array.Copy(ordinalDescriptors, 0, copy, 0, ordinalDescriptors.Length);
				this.ordinalDescriptors = copy;
			}

			if (namedDescriptorMap == null)
				this.namedDescriptorMap = new Dictionary<string, NamedParameterDescriptor>();
			else
				this.namedDescriptorMap = new Dictionary<string, NamedParameterDescriptor>(namedDescriptorMap);
		}
Beispiel #2
0
        private static ParameterMetadata BuildParameterMetadata(IParameterTranslations parameterTranslations, string hql)
        {
            long start = DateTime.Now.Ticks;
            ParamLocationRecognizer recognizer = ParamLocationRecognizer.ParseLocations(hql);
            long end = DateTime.Now.Ticks;

            if (log.IsDebugEnabled)
            {
                log.Debug("HQL param location recognition took " + (end - start) + " mills (" + hql + ")");
            }

            int ordinalParamCount = parameterTranslations.OrdinalParameterCount;

            int[] locations = recognizer.OrdinalParameterLocationList.ToArray();
            if (parameterTranslations.SupportsOrdinalParameterMetadata && locations.Length != ordinalParamCount)
            {
                throw new HibernateException("ordinal parameter mismatch");
            }
            ordinalParamCount = locations.Length;
            OrdinalParameterDescriptor[] ordinalParamDescriptors = new OrdinalParameterDescriptor[ordinalParamCount];
            for (int i = 1; i <= ordinalParamCount; i++)
            {
                ordinalParamDescriptors[i - 1] =
                    new OrdinalParameterDescriptor(i,
                                                   parameterTranslations.SupportsOrdinalParameterMetadata
                                                                        ? parameterTranslations.GetOrdinalParameterExpectedType(i)
                                                                        : null, locations[i - 1]);
            }

            Dictionary <string, NamedParameterDescriptor> namedParamDescriptorMap = new Dictionary <string, NamedParameterDescriptor>();

            foreach (KeyValuePair <string, ParamLocationRecognizer.NamedParameterDescription> entry in recognizer.NamedParameterDescriptionMap)
            {
                string name = entry.Key;
                ParamLocationRecognizer.NamedParameterDescription description = entry.Value;
                namedParamDescriptorMap[name] =
                    new NamedParameterDescriptor(name, parameterTranslations.GetNamedParameterExpectedType(name),
                                                 description.BuildPositionsArray(), description.JpaStyle);
            }
            return(new ParameterMetadata(ordinalParamDescriptors, namedParamDescriptorMap));
        }
        public ParameterMetadata(OrdinalParameterDescriptor[] ordinalDescriptors,
                                 IDictionary <string, NamedParameterDescriptor> namedDescriptorMap)
        {
            if (ordinalDescriptors == null)
            {
                this.ordinalDescriptors = EmptyOrdinals;
            }
            else
            {
                OrdinalParameterDescriptor[] copy = new OrdinalParameterDescriptor[ordinalDescriptors.Length];
                Array.Copy(ordinalDescriptors, 0, copy, 0, ordinalDescriptors.Length);
                this.ordinalDescriptors = copy;
            }

            if (namedDescriptorMap == null)
            {
                this.namedDescriptorMap = new Dictionary <string, NamedParameterDescriptor>();
            }
            else
            {
                this.namedDescriptorMap = new Dictionary <string, NamedParameterDescriptor>(namedDescriptorMap);
            }
        }
        private ParameterMetadata BuildNativeSQLParameterMetadata(string sqlString)
        {
            ParamLocationRecognizer recognizer = ParamLocationRecognizer.ParseLocations(sqlString);

            var ordinalDescriptors = new OrdinalParameterDescriptor[recognizer.OrdinalParameterLocationList.Count];

            for (int i = 0; i < recognizer.OrdinalParameterLocationList.Count; i++)
            {
                int position = recognizer.OrdinalParameterLocationList[i];
                ordinalDescriptors[i] = new OrdinalParameterDescriptor(i, null);
            }

            IDictionary <string, NamedParameterDescriptor> namedParamDescriptorMap = new Dictionary <string, NamedParameterDescriptor>();

            foreach (KeyValuePair <string, ParamLocationRecognizer.NamedParameterDescription> entry in recognizer.NamedParameterDescriptionMap)
            {
                string name = entry.Key;
                ParamLocationRecognizer.NamedParameterDescription description = entry.Value;
                namedParamDescriptorMap[name] =
                    new NamedParameterDescriptor(name, null, description.JpaStyle);
            }

            return(new ParameterMetadata(ordinalDescriptors, namedParamDescriptorMap));
        }
	    public ParameterMetadata BuildParameterMetadata()
	    {
            var parameterTranslations = GetParameterTranslations();

            var ordinalDescriptors = new OrdinalParameterDescriptor[parameterTranslations.OrdinalParameterCount];

            for (var i = 1; i <= ordinalDescriptors.Length; i++)
            {
                ordinalDescriptors[i - 1] =
                    new OrdinalParameterDescriptor(i,
                                                   parameterTranslations.SupportsOrdinalParameterMetadata
                                                       ? parameterTranslations.GetOrdinalParameterExpectedType(i)
                                                       : null, parameterTranslations.GetOrdinalParameterSqlLocation(i));
            }

            var namedDescriptorMap = new Dictionary<string, NamedParameterDescriptor>();
            foreach (var name in parameterTranslations.GetNamedParameterNames())
            {
                namedDescriptorMap[name] =
                    new NamedParameterDescriptor(name, parameterTranslations.GetNamedParameterExpectedType(name),
                                                 parameterTranslations.GetNamedParameterSqlLocations(name), false);// description.JpaStyle);

            }

            return new ParameterMetadata(ordinalDescriptors, namedDescriptorMap);
	    }
		private ParameterMetadata BuildNativeSQLParameterMetadata(string sqlString)
		{
			ParamLocationRecognizer recognizer = ParamLocationRecognizer.ParseLocations(sqlString);

			var ordinalDescriptors = new OrdinalParameterDescriptor[recognizer.OrdinalParameterLocationList.Count];
			for (int i = 0; i < recognizer.OrdinalParameterLocationList.Count; i++)
			{
				int position = recognizer.OrdinalParameterLocationList[i];
				ordinalDescriptors[i] = new OrdinalParameterDescriptor(i, null);
			}

			IDictionary<string, NamedParameterDescriptor> namedParamDescriptorMap = new Dictionary<string, NamedParameterDescriptor>();

			foreach (KeyValuePair<string, ParamLocationRecognizer.NamedParameterDescription> entry in recognizer.NamedParameterDescriptionMap)
			{
				string name = entry.Key;
				ParamLocationRecognizer.NamedParameterDescription description = entry.Value;
				namedParamDescriptorMap[name] =
					new NamedParameterDescriptor(name, null, description.JpaStyle);				
			}

			return new ParameterMetadata(ordinalDescriptors, namedParamDescriptorMap);
		}
Beispiel #7
0
        private static ParameterMetadata BuildParameterMetadata(IParameterTranslations parameterTranslations, string hql)
        {
            long start = DateTime.Now.Ticks;
            ParamLocationRecognizer recognizer = ParamLocationRecognizer.ParseLocations(hql);
            long end = DateTime.Now.Ticks;
            if (log.IsDebugEnabled)
            {
                log.Debug("HQL param location recognition took " + (end - start) + " mills (" + hql + ")");
            }

            int ordinalParamCount = parameterTranslations.OrdinalParameterCount;
            int[] locations = recognizer.OrdinalParameterLocationList.ToArray();
            if (parameterTranslations.SupportsOrdinalParameterMetadata && locations.Length != ordinalParamCount)
            {
                throw new HibernateException("ordinal parameter mismatch");
            }
            ordinalParamCount = locations.Length;
            OrdinalParameterDescriptor[] ordinalParamDescriptors = new OrdinalParameterDescriptor[ordinalParamCount];
            for (int i = 1; i <= ordinalParamCount; i++)
            {
                ordinalParamDescriptors[i - 1] =
                    new OrdinalParameterDescriptor(i,
                                                   parameterTranslations.SupportsOrdinalParameterMetadata
                                                    ? parameterTranslations.GetOrdinalParameterExpectedType(i)
                                                    : null, locations[i - 1]);
            }

            Dictionary<string, NamedParameterDescriptor> namedParamDescriptorMap = new Dictionary<string, NamedParameterDescriptor>();
            foreach (KeyValuePair<string, ParamLocationRecognizer.NamedParameterDescription> entry in recognizer.NamedParameterDescriptionMap)
            {
                string name = entry.Key;
                ParamLocationRecognizer.NamedParameterDescription description = entry.Value;
                namedParamDescriptorMap[name] =
                    new NamedParameterDescriptor(name, parameterTranslations.GetNamedParameterExpectedType(name),
                                                 description.BuildPositionsArray(), description.JpaStyle);

            }
            return new ParameterMetadata(ordinalParamDescriptors, namedParamDescriptorMap);
        }