public override IFieldHandler CreateFromType(Type type, FieldHandlerOptions options)
 {
     var result = base.CreateFromType(type, options);
     if (result != null) return result;
     if (ServiceObjectFieldHandler.IsCompatibleWith(type)) return new ServiceObjectFieldHandler(_service, type);
     return null;
 }
예제 #2
0
 public virtual IFieldHandler CreateFromType(Type type, FieldHandlerOptions options)
 {
     if (EnumFieldHandler.IsCompatibleWith(type))
     {
         return(new EnumFieldHandler(type));
     }
     foreach (var fieldHandler in BasicSerializersFactory.FieldHandlers)
     {
         if (fieldHandler.IsCompatibleWith(type, options))
         {
             return(fieldHandler);
         }
     }
     if (ListFieldHandler.IsCompatibleWith(type))
     {
         return(new ListFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, type));
     }
     if (DictionaryFieldHandler.IsCompatibleWith(type))
     {
         return(new DictionaryFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, type));
     }
     if (NullableFieldHandler.IsCompatibleWith(type))
     {
         return(new NullableFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, type));
     }
     return(null);
 }
 public override IFieldHandler CreateFromName(string handlerName, byte[] configuration, FieldHandlerOptions options)
 {
     var result = base.CreateFromName(handlerName, configuration, options);
     if (result != null) return result;
     if (handlerName == ServiceObjectFieldHandler.HandlerName) return new ServiceObjectFieldHandler(_service, configuration);
     return null;
 }
예제 #4
0
 public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory,
       FieldHandlerOptions handlerOptions)
 {
     var fieldHandler = fieldHandlerFactory.CreateFromType(pi.PropertyType, handlerOptions);
     if (fieldHandler == null) throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName));
     var a = pi.GetCustomAttribute<PersistedNameAttribute>();
     return new TableFieldInfo(a != null ? a.Name : pi.Name, fieldHandler);
 }
 public override bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     if ((options & FieldHandlerOptions.Orderable) == 0)
     {
         return(false);
     }
     return(base.IsCompatibleWith(type, options));
 }
예제 #6
0
 public static bool IsCompatibleWithStatic(Type type, FieldHandlerOptions options)
 {
     if ((options & FieldHandlerOptions.Orderable) != 0)
     {
         return(false);
     }
     return(type.IsGenericType && IsCompatibleWithCore(type));
 }
예제 #7
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     if ((options & FieldHandlerOptions.Orderable) != 0)
     {
         return(false);
     }
     return(IsCompatibleWith(type));
 }
예제 #8
0
 public override IFieldHandler CreateFromName(string handlerName, byte[] configuration, FieldHandlerOptions options)
 {
     if (handlerName == ODBDictionaryFieldHandler.HandlerName) return new ODBDictionaryFieldHandler(_odb, configuration);
     var result = base.CreateFromName(handlerName, configuration, options);
     if (result != null) return result;
     if (handlerName == DBObjectFieldHandler.HandlerName) return new DBObjectFieldHandler(_odb, configuration);
     return null;
 }
예제 #9
0
        public static IFieldHandler CreateFromReader(this IFieldHandlerFactory factory, AbstractBufferedReader reader,
                                                     FieldHandlerOptions options)
        {
            var handlerName          = reader.ReadString();
            var handlerConfiguration = reader.ReadByteArray();

            return(factory.CreateFromName(handlerName, handlerConfiguration, options));
        }
예제 #10
0
 public override IFieldHandler CreateFromType(Type type, FieldHandlerOptions options)
 {
     if (ODBDictionaryFieldHandler.IsCompatibleWithStatic(type, options)) return new ODBDictionaryFieldHandler(_odb, type, false, this);
     var result = base.CreateFromType(type, options);
     if (result != null) return result;
     if (DBObjectFieldHandler.IsCompatibleWith(type)) return new DBObjectFieldHandler(_odb, type);
     return null;
 }
예제 #11
0
 UnresolvedTableFieldInfo(string name, string handlerName, byte[] configuration,
                          string tableName, FieldHandlerOptions handlerOptions)
     : base(name, null)
 {
     _handlerName    = handlerName;
     _configuration  = configuration;
     _tableName      = tableName;
     _handlerOptions = handlerOptions;
 }
예제 #12
0
        internal static UnresolvedTableFieldInfo Load(AbstractBufferedReader reader,
                                                      string tableName, FieldHandlerOptions handlerOptions)
        {
            var name          = reader.ReadString();
            var handlerName   = reader.ReadString();
            var configuration = reader.ReadByteArray();

            return(new UnresolvedTableFieldInfo(name, handlerName, configuration, tableName, handlerOptions));
        }
예제 #13
0
 public virtual IFieldHandler CreateFromType(Type type, FieldHandlerOptions options)
 {
     if (EnumFieldHandler.IsCompatibleWith(type)) return new EnumFieldHandler(type);
     foreach (var fieldHandler in BasicSerializersFactory.FieldHandlers)
     {
         if (fieldHandler.IsCompatibleWith(type, options)) return fieldHandler;
     }
     if (ListFieldHandler.IsCompatibleWith(type)) return new ListFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, type);
     if (DictionaryFieldHandler.IsCompatibleWith(type)) return new DictionaryFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, type);
     return null;
 }
예제 #14
0
 internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory,
     string tableName, FieldHandlerOptions handlerOptions)
 {
     var name = reader.ReadString();
     var handlerName = reader.ReadString();
     var configuration = reader.ReadByteArray();
     var fieldHandler = fieldHandlerFactory.CreateFromName(handlerName, configuration, handlerOptions);
     if (fieldHandler == null) throw new BTDBException(
         $"FieldHandlerFactory did not created handler {handlerName} in {tableName}.{name}");
     return new TableFieldInfo(name, fieldHandler);
 }
예제 #15
0
        public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory,
                                           FieldHandlerOptions handlerOptions)
        {
            var fieldHandler = fieldHandlerFactory.CreateFromType(pi.PropertyType, handlerOptions);

            if (fieldHandler == null)
            {
                throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName));
            }
            var a = pi.GetCustomAttribute <PersistedNameAttribute>();

            return(new TableFieldInfo(a != null ? a.Name : pi.Name, fieldHandler));
        }
예제 #16
0
        public override IFieldHandler CreateFromType(Type type, FieldHandlerOptions options)
        {
            var result = base.CreateFromType(type, options);

            if (result != null)
            {
                return(result);
            }
            if (ServiceObjectFieldHandler.IsCompatibleWith(type))
            {
                return(new ServiceObjectFieldHandler(_service, type));
            }
            return(null);
        }
예제 #17
0
        internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory,
                                            string tableName, FieldHandlerOptions handlerOptions)
        {
            var name          = reader.ReadString();
            var handlerName   = reader.ReadString();
            var configuration = reader.ReadByteArray();
            var fieldHandler  = fieldHandlerFactory.CreateFromName(handlerName !, configuration, handlerOptions);

            if (fieldHandler == null)
            {
                throw new BTDBException(
                          $"FieldHandlerFactory did not created handler {handlerName} in {tableName}.{name}");
            }
            return(new TableFieldInfo(name !, fieldHandler));
        }
예제 #18
0
        public override IFieldHandler CreateFromType(Type type, FieldHandlerOptions options)
        {
            if (ODBDictionaryFieldHandler.IsCompatibleWithStatic(type, options))
            {
                return(new ODBDictionaryFieldHandler(_odb, type, false, this));
            }
            var result = base.CreateFromType(type, options);

            if (result != null)
            {
                return(result);
            }
            if (DBObjectFieldHandler.IsCompatibleWith(type))
            {
                return(new DBObjectFieldHandler(_odb, type));
            }
            return(null);
        }
예제 #19
0
 public virtual IFieldHandler CreateFromName(string handlerName, byte[] configuration, FieldHandlerOptions options)
 {
     IFieldHandler fallbackFieldHandler = null;
     foreach (var fieldHandler in BasicSerializersFactory.FieldHandlers)
     {
         if (fieldHandler.Name == handlerName)
         {
             fallbackFieldHandler = fieldHandler;
             if (fieldHandler.IsCompatibleWith(fieldHandler.HandledType(), options))
                 return fieldHandler;
         }
     }
     if (fallbackFieldHandler != null)
         return fallbackFieldHandler;
     if (handlerName == EnumFieldHandler.HandlerName) return new EnumFieldHandler(configuration);
     if (handlerName == ListFieldHandler.HandlerName) return new ListFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, configuration);
     if (handlerName == DictionaryFieldHandler.HandlerName) return new DictionaryFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, configuration);
     return null;
 }
예제 #20
0
        public override IFieldHandler CreateFromName(string handlerName, byte[] configuration, FieldHandlerOptions options)
        {
            var result = base.CreateFromName(handlerName, configuration, options);

            if (result != null)
            {
                return(result);
            }
            if (handlerName == ServiceObjectFieldHandler.HandlerName)
            {
                return(new ServiceObjectFieldHandler(_service, configuration));
            }
            return(null);
        }
예제 #21
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(_type == type);
 }
예제 #22
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(options.HasFlag(FieldHandlerOptions.Orderable) && typeof(EncryptedString) == type);
 }
예제 #23
0
 public virtual bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return _loader.ReturnType == type;
 }
예제 #24
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return typeof(ByteBuffer) == type;
 }
예제 #25
0
 public override bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     if ((options & FieldHandlerOptions.AtEndOfStream) == 0) return false;
     return base.IsCompatibleWith(type, options);
 }
예제 #26
0
 public virtual bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(typeof(byte[]) == type || typeof(ByteBuffer) == type);
 }
예제 #27
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(IsCompatibleWithStatic(type, options));
 }
예제 #28
0
 public override IFieldHandler CreateFromType(Type type, FieldHandlerOptions options)
 {
     if (ODBDictionaryFieldHandler.IsCompatibleWithStatic(type, options))
         return new ODBDictionaryFieldHandler(_odb, type, true, this);
     return base.CreateFromType(type, options);
 }
예제 #29
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return _type == type;
 }
예제 #30
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     if ((options & FieldHandlerOptions.Orderable) != 0) return false;
     return IsCompatibleWith(type);
 }
예제 #31
0
 public static bool IsCompatibleWithStatic(Type type, FieldHandlerOptions options)
 {
     if (options.HasFlag(FieldHandlerOptions.Orderable)) return false;
     if (!type.IsGenericType) return false;
     return IsCompatibleWithCore(type);
 }
예제 #32
0
 public override bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(IsCompatibleWith(type));
 }
예제 #33
0
        public virtual IFieldHandler CreateFromName(string handlerName, byte[] configuration, FieldHandlerOptions options)
        {
            IFieldHandler fallbackFieldHandler = null;

            foreach (var fieldHandler in BasicSerializersFactory.FieldHandlers)
            {
                if (fieldHandler.Name == handlerName)
                {
                    fallbackFieldHandler = fieldHandler;
                    if (fieldHandler.IsCompatibleWith(fieldHandler.HandledType(), options))
                    {
                        return(fieldHandler);
                    }
                }
            }
            if (fallbackFieldHandler != null)
            {
                return(fallbackFieldHandler);
            }
            if (handlerName == EnumFieldHandler.HandlerName)
            {
                return(new EnumFieldHandler(configuration));
            }
            if (handlerName == ListFieldHandler.HandlerName)
            {
                return(new ListFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, configuration));
            }
            if (handlerName == DictionaryFieldHandler.HandlerName)
            {
                return(new DictionaryFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, configuration));
            }
            if (handlerName == NullableFieldHandler.HandlerName)
            {
                return(new NullableFieldHandler(_provider.FieldHandlerFactory, _provider.TypeConvertorGenerator, configuration));
            }
            return(null);
        }
예제 #34
0
        public override IFieldHandler?CreateFromName(string handlerName, byte[] configuration, FieldHandlerOptions options)
        {
            if (handlerName == ODBDictionaryFieldHandler.HandlerName)
            {
                return(new ODBDictionaryFieldHandler(_odb, configuration));
            }
            if (handlerName == ODBSetFieldHandler.HandlerName)
            {
                return(new ODBSetFieldHandler(_odb, configuration));
            }
            var result = base.CreateFromName(handlerName, configuration, options);

            if (result != null)
            {
                return(result);
            }
            if (handlerName == DBObjectFieldHandler.HandlerName)
            {
                return(new DBObjectFieldHandler(_odb, configuration));
            }
            return(null);
        }
예제 #35
0
 public virtual bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return typeof(byte[]) == type || typeof(ByteBuffer) == type;
 }
예제 #36
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(typeof(ByteBuffer) == type);
 }
 public override bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     if (!options.HasFlag(FieldHandlerOptions.Orderable)) return false;
     return base.IsCompatibleWith(type, options);
 }
예제 #38
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return IsCompatibleWith(type);
 }
예제 #39
0
 public virtual bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(_loader.ReturnType == type);
 }
예제 #40
0
 public bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     if (options.HasFlag(FieldHandlerOptions.Orderable)) return false;
     return IsCompatibleWith(type);
 }
예제 #41
0
 public virtual bool IsCompatibleWith(Type type, FieldHandlerOptions options)
 {
     return(typeof(EncryptedString) == type);
 }