Ejemplo n.º 1
0
 /// <summary>
 /// 构造函数。
 /// </summary>
 /// <param name="providerTableName">当前对象引用上级对象表的名称.</param>
 /// <param name="keyFieldName">当前对象引用上级对象表主键.</param>
 /// <param name="foreingKeyField">该对象引用的外键名称。</param>
 /// <param name="objectRelationType"></param>
 public ParentProviderAttribute(string providerTableName, string providerKeyName, string foreingKeyField, ObjectRelationType objectRelationType)
 {
     _ProviderTableName  = providerTableName;
     _ProviderKeyName    = providerKeyName;
     _ForeingKeyField    = foreingKeyField;
     _ObjectRelationType = objectRelationType;
 }
Ejemplo n.º 2
0
            public EntityFacade(CslaGeneratorUnit parent, ObjectRelationType relationType, string objectName,
                                string propertyName, string collectionTypeName, string itemTypeName, LoadingScheme loadingScheme,
                                CriteriaPropertyCollection loadProperties, ParameterCollection loadParameters, bool lazyLoad)
                : base(parent)
            {
                RelationType       = relationType;
                ObjectName         = objectName;
                PropertyName       = propertyName;
                CollectionTypeName = collectionTypeName;
                ItemTypeName       = itemTypeName;
                LazyLoad           = lazyLoad;
                LoadingScheme      = loadingScheme;
                LoadProperties     = CriteriaPropertyCollection.Clone(loadProperties);
                LoadParameters     = loadParameters;

                if (parent != null && parent.Params != null)
                {
                    Parent = parent;
                }
            }
Ejemplo n.º 3
0
        private void CreateNewSpcObjToPilot(IDataObject parent, SpcObject spcObject)
        {
            var t = GetTypeBySectionName(spcObject.SectionName);

            if (t == null)
            {
                return;
            }
            var builder = _objectModifier.Create(parent, t);

            spcObject.GlobalId = builder.DataObject.Id;
            foreach (var attr in spcObject.Columns)
            {
                var val = attr.Value;
                if (string.IsNullOrEmpty(attr.TypeName) || string.IsNullOrEmpty(val))
                {
                    continue;
                }
                // очишаем значение от служебных символов и выражений
                val = ValueTextClear(val);
                // в качестве наименование передаётся внутренее имя (а не то которое отображается)
                if (int.TryParse(val, out var i))
                {
                    builder.SetAttribute(attr.TypeName, i);
                }
                else
                {
                    builder.SetAttribute(attr.TypeName, val);
                }
            }
            var doc = spcObject.Documents.FirstOrDefault(f => IsFileExtension(f.FileName, SOURCE_DOC_EXT));

            if (doc == null)
            {
                return;
            }

            var fileName = doc.FileName;

            string[] paths          = { fileName };
            var      storageObjects = _objectsRepository.GetStorageObjects(paths);
            var      storageObject  = storageObjects.FirstOrDefault();

            if (File.Exists(spcObject.PreviewDocument))
            {
                builder.AddFile(spcObject.PreviewDocument);
            }
            _objectModifier.Apply();

            if (storageObject == null)
            {
                return;
            }

            if (storageObject.DataObject.Id == Guid.Empty)
            {
                return;
            }

            var loader = new ObjectLoader(_objectsRepository);

            loader.Load(spcObject.GlobalId, obj =>
            {
                foreach (var relation in obj.Relations.Where(x => x.Type == ObjectRelationType.SourceFiles))
                {
                    _objectModifier.RemoveLink(obj, relation);
                }
                var relationId   = Guid.NewGuid();
                var relationName = relationId.ToString();
                const ObjectRelationType relationType = ObjectRelationType.SourceFiles;
                var selectedRelation = new Relation
                {
                    Id       = relationId,
                    Type     = relationType,
                    Name     = storageObject.DataObject.DisplayName,
                    TargetId = storageObject.DataObject.Id
                };
                var chosenRelation = new Relation
                {
                    Id       = relationId,
                    Type     = relationType,
                    Name     = relationName,
                    TargetId = builder.DataObject.Id
                };
                _objectModifier.CreateLink(selectedRelation, chosenRelation);
                _objectModifier.Apply();
            });
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 构造函数。
 /// </summary>
 /// <param name="providerTableName">当前对象引用上级对象表的名称.</param>
 /// <param name="keyFieldName">当前对象引用上级对象表主键.</param>
 /// <param name="objectRelationType"></param>
 public ParentProviderAttribute(string providerTableName, string keyFieldName, ObjectRelationType objectRelationType)
     : this(providerTableName, keyFieldName, null, objectRelationType)
 {
 }
Ejemplo n.º 5
0
        private void CreateNewSpcToPilot(IDataObject parent, Specification spc)
        {
            var t       = GetTypeSpecification();
            var builder = _objectModifier.Create(parent, t);

            spc.GlobalId = builder.DataObject.Id;

            builder.SetAttribute("name", spc.Name);
            builder.SetAttribute("mark", ValueTextClear(spc.Designation));
            // todo: нужен callbakc о создании или изменении объекта
            //if (File.Exists(spc.PreviewDocument))
            //{
            //    builder.AddFile(spc.PreviewDocument);
            //}
            _objectModifier.Apply();

            var loader = new ObjectLoader(_objectsRepository);

            loader.Load(spc.GlobalId, obj =>
            {
                if (!File.Exists(spc.FileName))
                {
                    return;
                }
                string[] paths     = { spc.FileName };
                var storageObjects = _objectsRepository.GetStorageObjects(paths);
                var storageObject  = storageObjects.FirstOrDefault();

                if (storageObject == null)
                {
                    return;
                }

                foreach (var relation in obj.Relations.Where(x => x.Type == ObjectRelationType.SourceFiles))
                {
                    _objectModifier.RemoveLink(obj, relation);
                }

                var relationId   = Guid.NewGuid();
                var relationName = relationId.ToString();
                const ObjectRelationType relationType = ObjectRelationType.SourceFiles;
                var selectedRelation = new Relation
                {
                    Id       = relationId,
                    Type     = relationType,
                    Name     = storageObject.DataObject.DisplayName,
                    TargetId = storageObject.DataObject.Id
                };
                var chosenRelation = new Relation
                {
                    Id       = relationId,
                    Type     = relationType,
                    Name     = relationName,
                    TargetId = spc.GlobalId
                };
                _objectModifier.CreateLink(selectedRelation, chosenRelation);
                _objectModifier.Apply();

                foreach (var spcObject in spc.ListSpcObjects)
                {
                    if (spcObject.SectionNumber == 15)
                    {
                        continue;
                    }
                    CreateNewSpcObjToPilot(obj, spcObject);
                }

                if (spc.Children == null)
                {
                    return;
                }

                foreach (var cSpc in spc.Children)
                {
                    CreateNewSpcToPilot(obj, cSpc);
                }
            });
        }