Ejemplo n.º 1
0
 public void setValue(iModel model, object val)
 {
     // parse Enum values ...
     if (Type.IsEnum)
     {
         if (DbType == System.Data.DbType.String)
         {
             _fieldInfo.SetValue(model, Enum.Parse(Type, val.ToString()));
         }
         else
         {
             _fieldInfo.SetValue(model, Enum.ToObject(Type, val));
         }
     }
     else if (Type == typeof(bool) && DbType == System.Data.DbType.String)
     {
         _fieldInfo.SetValue(model, bool.Parse(val.ToString()));
     }
     else if (val != null && val.Equals(DBNull.Value) && Type.IsValueType)
     {
         _fieldInfo.SetValue(model, Activator.CreateInstance(Type));
     }
     else if (val != null && !Type.Equals(val.GetType()))
     {
         System.ComponentModel.TypeConverter converter = System.ComponentModel.TypeDescriptor.GetConverter(val.GetType());
         _fieldInfo.SetValue(model, converter.ConvertTo(val, Type));
     }
     else
     {
         _fieldInfo.SetValue(model, val);
     }
 }
Ejemplo n.º 2
0
        public dynamic update(iModel model)
        {
            _Handler handler = getInsertQuery(model);
            object   id      = handler.execute();

            if (Table(model).PrimaryKey.AccessType == Sympathy.Attributes.AccessTypes.ReadOnly &&
                handler.QueryBuilder.Type == QueryBuilder.QueryType.Insert)
            {
                Table(model).PrimaryKey.setValue(model, id);
            }

            return(model);
        }
Ejemplo n.º 3
0
        protected _Handler getInsertQuery(iModel model)
        {
            _Handler     handler = new _Handler();
            QueryBuilder builder = handler.QueryBuilder;

            builder.Table = Table(model);
            builder.Type  = QueryBuilder.QueryType.Insert;

            IDictionary <string, object> values = new Criteria();

            foreach (Column column in builder.Table)
            {
                if (column != builder.Table.PrimaryKey || builder.Table.PrimaryKey.AccessType != Sympathy.Attributes.AccessTypes.ReadOnly)
                {
                    if (typeof(iModel).IsAssignableFrom(column.Type))
                    {
                        dynamic fmodel = column.getValue(model);

                        if (fmodel != null)
                        {
                            values.Add(column.Name.ToLower(), Table(fmodel).PrimaryKey.getValue(fmodel));
                        }
                    }
                    else
                    {
                        values.Add(column.Name.ToLower(), column.getValue(model));
                    }
                }
            }

            if (builder.Table.PrimaryKey.AccessType == Sympathy.Attributes.AccessTypes.ReadOnly &&
                !builder.Table.PrimaryKey.DefaultValue.Equals(builder.Table.PrimaryKey.getValue(model)))
            {
                builder.Type     = QueryBuilder.QueryType.Update;
                builder.Criteria = new Criteria()
                {
                    { builder.Table.PrimaryKey.Name, builder.Table.PrimaryKey.getValue(model) }
                };
            }
            else
            {
                builder.Type     = QueryBuilder.QueryType.Insert;
                builder.Criteria = new Criteria()
                {
                    { builder.Table.PrimaryKey.Name, builder.Table.PrimaryKey.getValue(model) }
                };
            }

            builder.Values = values;
            return(handler);
        }
Ejemplo n.º 4
0
        public void delete(iModel model)
        {
            Criteria criteria = new Criteria()
            {
                { "id", Table(model).PrimaryKey.getValue(model) }
            };
            _Handler handler = new _Handler();

            handler.QueryBuilder.Table    = Table(model);
            handler.QueryBuilder.Type     = QueryBuilder.QueryType.Delete;
            handler.QueryBuilder.Criteria = criteria;

            handler.execute();
        }
Ejemplo n.º 5
0
        public Presenter(iView view, iModel model)
        {
            _view = view;
            _view.SearchStart += _view_SearchStart;
            _view.SearchStop += _view_SearchStop;
            _view.SetVolumes(Directory.GetLogicalDrives());

            _model = model;
            _model.SearchFinished += _model_SearchFinished;
            _model.Found += _model_Found;

            timer = new Timer();
            timer.Interval = 1;
            timer.Tick += Timer_Tick;
        }
Ejemplo n.º 6
0
 public object getValue(iModel model)
 {
     // convert Enum values depending to
     // column type ...
     if (Type.IsEnum && DbType != System.Data.DbType.String)
     {
         return((int)_fieldInfo.GetValue(model));
     }
     else if (Type == typeof(Boolean) && DbType != System.Data.DbType.String)
     {
         return(Convert.ToBoolean(_fieldInfo.GetValue(model)) == true ? 1 : 0);
     }
     else
     {
         return(_fieldInfo.GetValue(model));
     }
 }
Ejemplo n.º 7
0
        public dynamic save(iModel model)
        {
            _Handler handler = getInsertQuery(model);
            object   id      = handler.execute();

            if (Table(model).PrimaryKey.AccessType == Sympathy.Attributes.AccessTypes.ReadOnly &&
                handler.QueryBuilder.Type == QueryBuilder.QueryType.Insert && id != null)
            {
                Table(model).PrimaryKey.setValue(model, id);
            }

            Reflector reflector = new Reflector(model);

            reflector.afterSerialize();

            return(model);
        }
Ejemplo n.º 8
0
 public Reflector(iModel model)
 {
     _model = model;
     info   = _model.GetType();
 }
Ejemplo n.º 9
0
        public Table Table(iModel model)
        {
            Reflector reflector = new Reflector(model);

            return(reflector.getTable());
        }
Ejemplo n.º 10
0
 public Column PrimaryKey(iModel model)
 {
     return(Table(model).PrimaryKey);
 }
Ejemplo n.º 11
0
 public Controller(iModel model, iView view)
 {
     this.model = model;
     this.view = view;
     SetEvents();
 }