Esempio n. 1
0
        public MobeelizerJsonEntity GetJsonEntity(MobeelizerModelMetadata metadata, MobeelizerDatabaseContext db)
        {
            MobeelizerJsonEntity entity = new MobeelizerJsonEntity();

            entity.Model  = metadata.Model;
            entity.Guid   = metadata.Guid;
            entity.Fields = new Dictionary <string, string>();
            var result = from MobeelizerWp7Model model in db.GetTable(this.Type) where model.Guid == metadata.Guid select model;
            MobeelizerWp7Model modelObject = result.Single();

            entity.Owner = modelObject.Owner;
            entity.Fields.Add("s_deleted", modelObject.Deleted.ToString().ToLower());
            foreach (MobeelizerField field in this.Fields)
            {
                object       value    = null;
                PropertyInfo property = modelObject.GetType().GetProperty(field.Accessor.Name);
                if (property == null)
                {
                    throw new ConfigurationException("There is no property " + field.Accessor.Name + " in " + entity.Model + " class.");
                }

                value = property.GetValue(modelObject, null);
                entity.Fields.Add(field.Name, field.FieldType.SetValueFromDatabaseToMap(value));
            }

            return(entity);
        }
Esempio n. 2
0
        private void MapEntityToDictionary(MobeelizerWp7Model model, Dictionary <String, object> values)
        {
            Type type = model.GetType();

            foreach (var filed in Fields)
            {
                PropertyInfo info = type.GetProperty(filed.Accessor.Name);
                values.Add(info.Name, info.GetValue(model, null));
            }
        }
Esempio n. 3
0
        internal bool Validate(MobeelizerWp7Model insert, MobeelizerErrorsHolder errors)
        {
            Dictionary <String, object> values = new Dictionary <string, object>();

            MapEntityToDictionary(insert, values);
            foreach (MobeelizerField field in this.Fields)
            {
                field.Validate(values, errors);
            }

            if (!errors.IsValid)
            {
                return(false);
            }

            return(true);
        }
Esempio n. 4
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            MobeelizerWp7Model item = value as MobeelizerWp7Model;

            if (item.Conflicted)
            {
                return("#4BED0000");
            }
            else if (item.Modified)
            {
                return("#4C2D8000");
            }
            else
            {
                return("#4C000000");
            }
        }
Esempio n. 5
0
 private void UpdateEntity(MobeelizerDatabaseContext db, MobeelizerModelMetadata metadate, IDictionary <String, object> values, String guid, MobeelizerWp7Model entity)
 {
     foreach (KeyValuePair <String, object> value in values)
     {
         if (value.Key == "Conflicted" || value.Key == "Deleted" || value.Key == "Modified")
         {
             PropertyInfo property = this.Type.GetProperty(value.Key);
             property.SetValue(entity, ((Int32)value.Value == 1) ? true : false, null);
         }
         else
         {
             PropertyInfo property = this.Type.GetProperty(value.Key);
             property.SetValue(entity, value.Value, null);
         }
     }
     Log.i("mobeelizermodel", "Upadate entity from sync " + metadate.Model + ", guid: " + metadate.Guid);
 }
Esempio n. 6
0
        public void SubmitChanges()
        {
            ChangeSet set = dataContext.GetChangeSet();
            IList <MobeelizerModelMetadata> metadataToAdd = new List <MobeelizerModelMetadata>();

            foreach (var insert in set.Inserts)
            {
                if (insert is MobeelizerWp7Model)
                {
                    MobeelizerWp7Model     modelObject = insert as MobeelizerWp7Model;
                    MobeelizerErrorsHolder errors      = new MobeelizerErrorsHolder();
                    if (!db.ValidateEntity(modelObject, errors))
                    {
                        throw new ArgumentException(errors.GetErrorsSymmary());
                    }

                    String model = insert.GetType().Name;
                    String guid  = Guid.NewGuid().ToString();
                    String owner = db.User;
                    modelObject.Guid       = guid;
                    modelObject.Owner      = owner;
                    modelObject.Conflicted = false;
                    modelObject.Deleted    = false;
                    modelObject.Modified   = true;
                    MobeelizerModelMetadata metadata = new MobeelizerModelMetadata()
                    {
                        Model            = model,
                        Guid             = guid,
                        ModificationLock = false
                    };

                    metadataToAdd.Add(metadata);
                }
            }

            foreach (var update in set.Updates)
            {
                if (update is MobeelizerWp7Model)
                {
                    MobeelizerErrorsHolder errors = new MobeelizerErrorsHolder();
                    if (!db.ValidateEntity(update as MobeelizerWp7Model, errors))
                    {
                        throw new InvalidOperationException(errors.GetErrorsSymmary());
                    }

                    String model = update.GetType().Name;
                    String guid  = (update as MobeelizerWp7Model).Guid;
                    var    query = from meta in dataContext.ModelMetadata where meta.Model == model && meta.Guid == guid select meta;
                    MobeelizerModelMetadata metadata = query.Single();
                    if (metadata.ModificationLock)
                    {
                        throw new InvalidOperationException("Entity is locked by synchronization process, wait until synchronization finishes.");
                    }
                    (update as MobeelizerWp7Model).Modified = true;
                }
                else if (update is MobeelizerModelMetadata)
                {
                    MobeelizerModelMetadata metadata = update as MobeelizerModelMetadata;
                    if ((update as MobeelizerWp7Model).Deleted && metadata.ModificationLock)
                    {
                        throw new InvalidOperationException("Entity is locked by synchronization process, wait until synchronization finishes.");
                    }
                }
            }

            foreach (MobeelizerModelMetadata metadata in metadataToAdd)
            {
                dataContext.ModelMetadata.InsertOnSubmit(metadata);
            }

            this.dataContext.SubmitChanges();
        }
Esempio n. 7
0
        internal bool ValidateEntity(MobeelizerWp7Model insert, MobeelizerErrorsHolder errors)
        {
            String model = insert.GetType().Name;

            return(models[model].Validate(insert, errors));
        }