DeveelDB  20151217
complete SQL database system, primarly developed for .NET/Mono frameworks
ContextExtensions.cs
Go to the documentation of this file.
1 //
2 // Copyright 2010-2015 Deveel
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 using System;
18 
19 using Deveel.Data.Services;
20 
21 namespace Deveel.Data.Types {
22  public static class ContextExtensions {
23  public static SqlType ResolveType(this IContext context, string typeName, params DataTypeMeta[] meta) {
24  if (PrimitiveTypes.IsPrimitive(typeName))
25  return PrimitiveTypes.Resolve(typeName, meta);
26 
27  var resolvers = context.ResolveAllServices<ITypeResolver>();
28  foreach (var resolver in resolvers) {
29  var sqlType = resolver.ResolveType(new TypeResolveContext(SqlTypeCode.Unknown, typeName, meta));
30  if (sqlType != null)
31  return sqlType;
32  }
33 
34  return null;
35  }
36 
37  public static ITypeResolver TypeResolver(this IContext context) {
38  return new ContextTypeResolver(context);
39  }
40 
41  #region ContextTypeResolver
42 
44  private readonly IContext queryContext;
45 
46  public ContextTypeResolver(IContext context) {
47  queryContext = context;
48  }
49 
51  return queryContext.ResolveType(context.TypeName, context.GetMeta());
52  }
53  }
54 
55  #endregion
56  }
57 }
Provides some helper functions for resolving and creating SqlType instances that are primitive to the...
static SqlType ResolveType(this IContext context, string typeName, params DataTypeMeta[] meta)
SqlType ResolveType(TypeResolveContext context)
static SqlType Resolve(string typeName, params DataTypeMeta[] args)
Defines the properties of a specific SQL Type and handles the values compatible.
Definition: SqlType.cs:33
SqlTypeCode
Enumerates the codes of all SQL types handled by the system.
Definition: SqlTypeCode.cs:23
static ITypeResolver TypeResolver(this IContext context)
static bool IsPrimitive(SqlTypeCode sqlType)