예제 #1
0
파일: MfVault.cs 프로젝트: weijx-xa/test
        public void AddOrUpdateClassPropSet(MfObjType objType, MfClass mfClass, List <MfClassPropDef> props)
        {
            var set = _propSets.FirstOrDefault(c => c.ObjectClass.Equals(mfClass));

            if (set != null)
            {
                _propSets.Remove(set);
            }
            set = new ClassPropSets {
                ObjType = objType, ObjectClass = mfClass, LastUpdated = true
            };
            set.Props.AddRange(props);
            _propSets.Add(set);
        }
예제 #2
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            _vault = MfVault.GetFromConfig(ConfigPath, _vaultName);
            if (_vault == null) //从配置中加载失败
            {
                _vault = MfVault.GetVault(_vaultName);
            }
            var objTypes = _vault.GetObjectTypes();

            comboBoxObjType.DataSource = objTypes;
            var     lastConfig   = _vault.GetLastMapping();
            var     objTypeIndex = 0;
            MfClass mfClass      = null;

            if (lastConfig != null)
            {
                _currentObjType = lastConfig.ObjType;

                for (var i = 0; i < objTypes.Count; i++)
                {
                    if (_currentObjType.Equals(objTypes[i]))
                    {
                        objTypeIndex = i;
                        break;
                    }
                }
                mfClass = lastConfig.ObjectClass;
            }
            else
            {
                _currentObjType = objTypes[objTypeIndex];
            }
            comboBoxObjType.SelectedIndex = objTypeIndex;
            var mcs        = _vault.GetClasses(_currentObjType.Id);
            var classIndex = 0;

            for (var i = 0; i < mcs.Count; i++)
            {
                comboBoxClasses.Items.Add(mcs[i]);
                if (mfClass != null && mfClass.Equals(mcs[i]))
                {
                    classIndex = i;
                }
            }
            comboBoxClasses.SelectedIndex = classIndex;
            _currentClass = mcs[classIndex];
            this.comboBoxObjType.SelectedIndexChanged += new System.EventHandler(this.comboBoxObjType_SelectedIndexChanged);
            this.comboBoxClasses.SelectedIndexChanged += new System.EventHandler(this.comboBoxClasses_SelectedIndexChanged);
        }
예제 #3
0
파일: MfVault.cs 프로젝트: weijx-xa/test
 public List <MfClass> GetClasses(int objType)
 {
     if (!_objTypesWithClasses.ContainsKey(objType))
     {
         var csList = new List <MfClass>();
         var cs     = _vault.ClassOperations.GetObjectClasses(objType);
         foreach (ObjectClass oc in cs)
         {
             var mfC = new MfClass {
                 Id = oc.ID, Name = oc.Name
             };
             csList.Add(mfC);
         }
         _objTypesWithClasses.Add(objType, csList);
     }
     return(_objTypesWithClasses[objType]);
 }
예제 #4
0
파일: MfVault.cs 프로젝트: weijx-xa/test
        public string FileToSystem(SelectedFiles files, SelectedFile f, MfClass mfClass, List <MfClassPropDef> selProps, List <string> addedPropValues)
        {
            var err     = String.Empty;
            var log     = TraceLog.GetLogger <MfVault>(MethodBase.GetCurrentMethod().Name);
            var classId = mfClass.Id;

            try
            {
                var scs     = GetSearchPropValues(files, f, selProps, addedPropValues, log);
                var classSC = new SearchCondition {
                    ConditionType = MFConditionType.MFConditionTypeEqual
                };
                classSC.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass;
                classSC.TypedValue.SetValue(MFDataType.MFDatatypeLookup, classId);
                scs.Add(-1, classSC);

                var ext = Path.GetExtension(f.Filepath) ?? String.Empty;
                ext = ext.TrimStart('.');
                if (!String.IsNullOrEmpty(ext))
                {
                    var namePattern = new SearchCondition
                    {
                        ConditionType = MFConditionType.MFConditionTypeMatchesWildcardPattern
                    };
                    namePattern.Expression.SetFileValueExpression(MFFileValueType.MFFileValueTypeFileName);
                    namePattern.TypedValue.SetValue(MFDataType.MFDatatypeText, "*." + ext);
                    scs.Add(-1, namePattern);
                }
                var res = _vault.ObjectSearchOperations.SearchForObjectsByConditions(scs,
                                                                                     MFSearchFlags.MFSearchFlagNone, false).GetAsObjectVersions();
                if (res.Count > 0)
                {
                    err = "对象已存在:" + res[1].Title;
                    log.TraceEvent(TraceEventType.Warning, 0, err);
                    return(err);
                }
                else
                {
                    try
                    {
                        var pvs = GetCreationPropValues(classId, files, f, selProps, addedPropValues, log);
                        var sof = GetFileObject(files.RootDir, f);
                        var obj =
                            _vault.ObjectOperations.CreateNewSFDObject(
                                (int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument
                                , pvs, sof, true, new AccessControlList());
                        log.TraceInformation("创建对象:" + obj.VersionData.Title);
                        return(err);
                    }
                    catch (Exception ex)
                    {
                        err = "创建对象失败:" + ex.Message; //files.GetFullpath(f.Filepath) + " # " +
                        log.TraceEvent(TraceEventType.Error, 0, err);
                        return(err);
                    }
                }
            }
            catch (Exception ex)
            {
                err = "属性值有误:" + ex.Message;
                log.TraceEvent(TraceEventType.Error, 0, err);
                return(err);
            }
            finally
            {
                log.Close();
            }
        }
예제 #5
0
파일: MfVault.cs 프로젝트: weijx-xa/test
        public string ObjectToSystem(int objType, MfClass mfClass, List <MfClassPropDef> selProps, List <string> propValues)
        {
            var err     = String.Empty;
            var log     = TraceLog.GetLogger <MfVault>(MethodBase.GetCurrentMethod().Name);
            var classId = mfClass.Id;

            try
            {
                var scs = new SearchConditions();
                for (var i = 0; i < selProps.Count; i++)
                {
                    var p  = selProps[i];
                    var vv = propValues[i];
                    try
                    {
                        var sc = GetCondition(p, vv, log);
                        scs.Add(-1, sc);
                    }
                    catch (Exception ex)
                    {
                        err = "创建对象失败:" + ex.Message; //files.GetFullpath(f.Filepath) + " # " +
                        log.TraceEvent(TraceEventType.Error, 0, err);
                        return(err);
                    }
                }
                var classSC = new SearchCondition {
                    ConditionType = MFConditionType.MFConditionTypeEqual
                };
                classSC.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass;
                classSC.TypedValue.SetValue(MFDataType.MFDatatypeLookup, classId);
                scs.Add(-1, classSC);

                var res = _vault.ObjectSearchOperations.SearchForObjectsByConditions(scs,
                                                                                     MFSearchFlags.MFSearchFlagNone, false).GetAsObjectVersions();
                if (res.Count > 0)
                {
                    err = "对象已存在:" + res[1].Title;
                    log.TraceEvent(TraceEventType.Warning, 0, err);
                    return(err);
                }
                else
                {
                    try
                    {
                        var pvs = new PropertyValues();
                        for (var i = 0; i < selProps.Count; i++)
                        {
                            var p   = selProps[i];
                            var vv  = propValues[i];
                            var val = GetValue(p.PropDef, vv, log);
                            var pv  = new PropertyValue {
                                PropertyDef = p.Def
                            };
                            if (val == null)
                            {
                                pv.Value.SetValueToNULL((MFDataType)p.DataType);
                            }
                            else
                            {
                                pv.Value.SetValue((MFDataType)p.DataType, val);
                            }
                            pvs.Add(-1, pv);
                        }
                        var cPV = new PropertyValue {
                            PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass
                        };
                        cPV.Value.SetValue(MFDataType.MFDatatypeLookup, classId);
                        pvs.Add(-1, cPV);
                        var obj =
                            _vault.ObjectOperations.CreateNewObject(objType, pvs);
                        _vault.ObjectOperations.CheckIn(obj.ObjVer);
                        log.TraceInformation("创建对象:" + obj.VersionData.Title);
                        return(err);
                    }
                    catch (Exception ex)
                    {
                        err = "创建对象失败:" + ex.Message; //files.GetFullpath(f.Filepath) + " # " +
                        log.TraceEvent(TraceEventType.Error, 0, err);
                        return(err);
                    }
                }
            }
            catch (Exception ex)
            {
                err = "属性值有误:" + ex.Message;
                log.TraceEvent(TraceEventType.Error, 0, err);
                return(err);
            }
            finally
            {
                log.Close();
            }
        }
예제 #6
0
 private void comboBoxClasses_SelectedIndexChanged(object sender, EventArgs e)
 {
     _currentClass = comboBoxClasses.SelectedItem as MfClass;
 }