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); } }
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); }
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); }
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(); }
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; }
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)); } }
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); }
public Reflector(iModel model) { _model = model; info = _model.GetType(); }
public Table Table(iModel model) { Reflector reflector = new Reflector(model); return(reflector.getTable()); }
public Column PrimaryKey(iModel model) { return(Table(model).PrimaryKey); }
public Controller(iModel model, iView view) { this.model = model; this.view = view; SetEvents(); }