コード例 #1
0
 public AmplaDataSubmissionResultBinding(DataSubmissionResult[] dataSubmissionResults, List <TModel> models, IModelProperties <TModel> modelProperties)
 {
     this.dataSubmissionResults = dataSubmissionResults ?? new DataSubmissionResult[0];
     this.models          = models;
     this.modelProperties = modelProperties;
     idProperty           = ModelIdentifier.GetPropertyName <TModel>();
 }
コード例 #2
0
 public ModelIdentifierBinding(TModel model, List <int> identifiers, IModelProperties <TModel> modelProperties)
 {
     this.model           = model;
     this.identifiers     = identifiers;
     this.modelProperties = modelProperties;
     idProperty           = ModelIdentifier.GetPropertyName <TModel>();
 }
コード例 #3
0
        public bool Bind()
        {
            if (models.Count == 0)
            {
                return(false);
            }

            foreach (TModel model in models)
            {
                UpdateRecordStatus record = new UpdateRecordStatus
                {
                    Location = modelProperties.GetLocation(model),
                    Module   = modelProperties.Module,

                    MergeCriteria = new UpdateRecordStatusMergeCriteria
                    {
                        SetId = ModelIdentifier.GetValue <TModel, long>(model)
                    },
                    RecordAction = recordAction
                };
                records.Add(record);
            }

            return(true);
        }
コード例 #4
0
            public override int GetHashCode()
            {
                int value = 13;

                if (ModelIdentifier != null)
                {
                    value ^= 3 ^ ModelIdentifier.GetHashCode();
                }

                if (FieldIdentifier != null)
                {
                    value ^= 5 ^ FieldIdentifier.GetHashCode();
                }

                if (UiHint != null)
                {
                    value ^= 7 ^ UiHint.GetHashCode();
                }

                if (FieldType != null)
                {
                    value ^= 11 ^ GetTypeHashCode(FieldType);
                }

                return(value);
            }
コード例 #5
0
 public AmplaDeleteDataBinding(List <TModel> models, List <DeleteRecord> records, IModelProperties <TModel> modelProperties)
 {
     this.models          = models;
     this.records         = records;
     this.modelProperties = modelProperties;
     idProperty           = ModelIdentifier.GetPropertyName <TModel>();
 }
コード例 #6
0
        public bool Bind()
        {
            if (response.RowSets.Length == 0)
            {
                return(false);
            }

            RowSet rowSet = response.RowSets[0];

            string idPropertyName = ModelIdentifier.GetPropertyName <TModel>();

            foreach (Row row in rowSet.Rows)
            {
                TModel model = new TModel();

                modelProperties.TrySetValueFromString(model, idPropertyName, row.id);

                foreach (XmlElement cell in row.Any)
                {
                    string field = XmlConvert.DecodeName(cell.Name);

                    modelProperties.TrySetValueFromString(model, field, cell.InnerText);
                }
                records.Add(model);
            }
            return(true);
        }
コード例 #7
0
 protected AmplaUpdateRecordStatusBinding(List <TModel> models, List <UpdateRecordStatus> records, IModelProperties <TModel> modelProperties, UpdateRecordStatusAction recordAction)
 {
     this.models          = models;
     this.records         = records;
     this.modelProperties = modelProperties;
     this.recordAction    = recordAction;
     idProperty           = ModelIdentifier.GetPropertyName <TModel>();
 }
コード例 #8
0
        public int?GetModelId()
        {
            if (string.IsNullOrEmpty(ModelIdentifier))
            {
                return(null);
            }

            return(int.Parse(ModelIdentifier.Substring(1)));
        }
コード例 #9
0
        public bool Bind()
        {
            if (existing == null)
            {
                return(false);
            }
            if (update == null)
            {
                return(false);
            }

            if (modelProperties.GetLocation(existing) != modelProperties.GetLocation(update))
            {
                return(false);
            }

            SubmitDataRecord record = new SubmitDataRecord
            {
                Location      = modelProperties.GetLocation(existing),
                Module        = modelProperties.Module,
                MergeCriteria = new MergeCriteria
                {
                    SetId = ModelIdentifier.GetValue <TModel, long>(update)
                }
            };

            List <Field> fields = new List <Field>();

            foreach (FieldMapping fieldMapping in amplaViewProperties.GetFieldMappings())
            {
                if (fieldMapping.CanWrite)
                {
                    string existingField;
                    string updateField;
                    if (fieldMapping.TryResolveValue(modelProperties, existing, out existingField) &&
                        fieldMapping.TryResolveValue(modelProperties, update, out updateField))
                    {
                        if (updateField != existingField)
                        {
                            Field field = new Field {
                                Name = fieldMapping.Name, Value = updateField
                            };
                            fields.Add(field);
                        }
                    }
                }
            }
            if (fields.Count > 0)
            {
                record.Fields = fields.ToArray();
                records.Add(record);
            }

            return(records.Count > 0);
        }
コード例 #10
0
        public void PutModel <T>(ref T model) where T : class, ICacheableModel
        {
            CleanReferences();
            var identfier = new ModelIdentifier(model);

            if (referenceList.ContainsKey(identfier))
            {
                model = referenceList[identfier].Target as T;
            }
            else
            {
                referenceList.Add(model);
                modelBuffer.Add(new KeyValuePair <DateTime, object>(DateTime.Now, model));
            }
        }
コード例 #11
0
        public void PutModel <T>(T model) where T : class, ICacheableModel
        {
            CleanReferences();
            var identfier = new ModelIdentifier(model);

            if (referenceList.ContainsKey(identfier))
            {
                throw new ArgumentException("Model is already registered in Model Manager! Consider using this function with \"ref\" keyword to prevent this Error.");
            }
            else
            {
                referenceList.Add(model);
                modelBuffer.Add(new KeyValuePair <DateTime, object>(DateTime.Now, model));
            }
        }
コード例 #12
0
        public override int GetHashCode()
        {
            int value = 13;

            if (ModelIdentifier != null)
            {
                value ^= ModelIdentifier.GetHashCode();
            }

            if (FieldIdentifier != null)
            {
                value ^= FieldIdentifier.GetHashCode();
            }

            if (MetadataKey != null)
            {
                value ^= MetadataKey.GetHashCode();
            }

            return(value);
        }