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); }
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); }
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]); }
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(); } }
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(); } }
private void comboBoxClasses_SelectedIndexChanged(object sender, EventArgs e) { _currentClass = comboBoxClasses.SelectedItem as MfClass; }