/// <summary> /// Get or set the value of an attribute, by name /// Changes temporarily override values from the MetaData database, but are not saved. /// </summary> public string this[CswEnumNbtPropertyAttributeName AttributeName, CswEnumNbtSubFieldName SubFieldName = null] { get { string ret = string.Empty; CswNbtFieldTypeAttribute attr = Attributes.FirstOrDefault(a => a.Name == AttributeName && (SubFieldName == null || a.SubFieldName == SubFieldName)); if (null != attr) { ret = attr.Value; } //else //{ // throw new CswDniException( CswEnumErrorType.Error, "Property Configuration Error", // "Illegal get; Unrecognized property attribute '" + AttributeName + "' for field type '" + getFieldTypeValue() + "'" ); //} return(ret); } set { CswNbtFieldTypeAttribute attr = Attributes.FirstOrDefault(a => a.Name == AttributeName && (SubFieldName == null || a.SubFieldName == SubFieldName)); if (null != attr) { attr.Value = value; } //else //{ // throw new CswDniException( CswEnumErrorType.Error, "Property Configuration Error", // "Illegal set; Unrecognized property attribute '" + AttributeName + "' for field type '" + getFieldTypeValue() + "'" ); //} } }
/// <summary> /// Creates a CswNbtViewPropertyFilter and returns its Json /// </summary> public JObject makeViewPropFilter(CswNbtView View, JObject FilterProp, bool ClearFilters = false) { JObject Ret = new JObject(); string FiltArbitraryId = CswConvert.ToString(FilterProp["filtarbitraryid"]); string PropArbitraryId = CswConvert.ToString(FilterProp["proparbitraryid"]); if (FiltArbitraryId == "undefined") { FiltArbitraryId = string.Empty; } if (PropArbitraryId == "undefined") { PropArbitraryId = string.Empty; } CswNbtViewPropertyFilter ViewPropFilt = null; if (false == string.IsNullOrEmpty(PropArbitraryId)) { CswNbtViewProperty ViewProp = (CswNbtViewProperty)View.FindViewNodeByArbitraryId(PropArbitraryId); if (false == string.IsNullOrEmpty(FiltArbitraryId)) { ViewPropFilt = (CswNbtViewPropertyFilter)View.FindViewNodeByArbitraryId(FiltArbitraryId); } else { ViewPropFilt = View.AddViewPropertyFilter(ViewProp, CswEnumNbtSubFieldName.Unknown, CswEnumNbtFilterMode.Unknown, string.Empty, false); } //Case 23779, 23937, 24064 if (ClearFilters && null != ViewPropFilt) { ViewProp.Filters.Clear(); ViewProp.Filters.Add(ViewPropFilt); } } if (ViewPropFilt != null) { CswEnumNbtFilterConjunction Conjunction = (CswEnumNbtFilterConjunction)CswConvert.ToString(FilterProp["conjunction"]); CswEnumNbtSubFieldName FieldName = (CswEnumNbtSubFieldName)CswConvert.ToString(FilterProp["subfieldname"]); CswEnumNbtFilterMode FilterMode = (CswEnumNbtFilterMode)CswConvert.ToString(FilterProp["filter"]); string FilterValue = CswConvert.ToString(FilterProp["filtervalue"]); if (FieldName != CswEnumNbtSubFieldName.Unknown && FilterMode != CswEnumNbtFilterMode.Unknown) { ViewPropFilt.FilterMode = FilterMode; ViewPropFilt.Conjunction = Conjunction; ViewPropFilt.SubfieldName = FieldName; ViewPropFilt.Value = FilterValue; _addVbPropFilter(Ret, ViewPropFilt); } } return(Ret); }
/// <summary> /// Returns true if the subfield was modified /// </summary> public bool wasSubFieldModified(CswEnumNbtSubFieldName SubFieldName) { bool ret = false; if (_SubFieldsModified.ContainsKey(SubFieldName)) { ret = _SubFieldsModified[SubFieldName]; } return(ret); }
/// <summary> /// Returns the original value of the provided subfield for this property /// </summary> public string GetOriginalPropRowValue(CswEnumNbtSubFieldName SubfieldName) { string ret = string.Empty; ICswNbtFieldTypeRule FieldTypeRule = _CswNbtMetaDataNodeTypeProp.getFieldTypeRule(); if (FieldTypeRule != null) { CswEnumNbtPropColumn Column = FieldTypeRule.SubFields[SubfieldName].Column; ret = GetOriginalPropRowValue(Column); } return(ret); }
/// <summary> /// For creating a property filter /// </summary> public CswNbtViewPropertyFilter(CswNbtResources CswNbtResources, CswNbtView View, CswEnumNbtSubFieldName inSubFieldName, CswEnumNbtFilterMode inFilterMode, string inValue, CswEnumNbtFilterResultMode inResultMode, CswEnumNbtFilterConjunction PropertyFilterConjunction, bool inCaseSensitive = false, bool inShowAtRuntime = false) : base(CswNbtResources, View) { _constructor(CswNbtResources, View, inSubFieldName, inFilterMode, inValue, inResultMode, inCaseSensitive, inShowAtRuntime, PropertyFilterConjunction); }
/// <summary> /// Set the value for a subfield, triggering the logic associated with that subfield on the fieldtype /// reference: http://stackoverflow.com/questions/289980/is-there-a-delegate-available-for-properties-in-c /// </summary> public void SetSubFieldValue(CswEnumNbtSubFieldName SubFieldName, object value) { if (_SubFieldMethods.ContainsKey(SubFieldName) && null != _SubFieldMethods[SubFieldName].Item2) { // This calls the appropriate set; method in the CswNbtNodeProp* class _SubFieldMethods[SubFieldName].Item2(value); } else { throw new CswDniException(CswEnumErrorType.Error, "Invalid subfield configuration", PropName + " (field type: " + getFieldTypeValue() + ") does not contain a set method for subfield " + SubFieldName.ToString()); } } // SetSubFieldValue
public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber) { //return ( _CswNbtFieldTypeRuleDefault.renderViewPropFilter( RunAsUser, SubFields, CswNbtViewPropertyFilterIn ) ); CswEnumNbtSubFieldName OldSubfieldName = CswNbtViewPropertyFilterIn.SubfieldName; CswEnumNbtFilterMode OldFilterMode = CswNbtViewPropertyFilterIn.FilterMode; string OldValue = CswNbtViewPropertyFilterIn.Value; // BZ 8558 if (OldSubfieldName == SubFieldName.Value && OldValue.ToLower() == "me") { CswNbtViewProperty Prop = (CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent; ICswNbtMetaDataProp MetaDataProp = null; if (Prop.Type == CswEnumNbtViewPropType.NodeTypePropId) { MetaDataProp = Prop.NodeTypeProp; } else if (Prop.Type == CswEnumNbtViewPropType.ObjectClassPropId) { MetaDataProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp(Prop.ObjectClassPropId); } // Could be a propref of a propref, so we can't look at the relationship //ICswNbtMetaDataProp RelationshipProp = null; //if( MetaDataProp.FKType == NbtViewPropType.NodeTypePropId.ToString() ) // RelationshipProp = _CswNbtFieldResources.CswNbtResources.MetaData.getNodeTypeProp( MetaDataProp.FKValue); //else if( MetaDataProp.FKType == NbtViewPropType.ObjectClassPropId.ToString() ) // RelationshipProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp( MetaDataProp.FKValue ); //if( RelationshipProp != null && RelationshipProp.IsUserRelationship() ) //{ if (CswNbtViewPropertyFilterIn.Value.ToLower() == "me") { CswNbtViewPropertyFilterIn.SubfieldName = SubFieldName.Value; CswNbtViewPropertyFilterIn.FilterMode = CswEnumNbtFilterMode.Equals; CswNbtViewPropertyFilterIn.Value = _CswNbtFieldResources.CswNbtResources.Nodes[RunAsUser.UserId].NodeName; } //} } string ret = _CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber); CswNbtViewPropertyFilterIn.SubfieldName = OldSubfieldName; CswNbtViewPropertyFilterIn.FilterMode = OldFilterMode; CswNbtViewPropertyFilterIn.Value = OldValue; return(ret); }//makeWhereClause()
/// <summary> /// Sets the value of a column for a property /// value should be in native format -- this function will convert to db format /// </summary> /// <param name="column">Target column</param> /// <param name="value">New value</param> /// <returns>True if any changes were made</returns> public bool SetPropRowValue(CswEnumNbtSubFieldName SubFieldName, CswEnumNbtPropColumn column, object value, bool IsNonModifying = false) { bool ret = false; object dbval; if (value is string) { dbval = CswConvert.ToDbVal(CswConvert.ToString(value).Trim()); } else { dbval = CswConvert.ToDbVal(value); } if (_PropRow == null && dbval != DBNull.Value) { makePropRow(); ret = true; } if (_PropRow != null) { if (_NodeId != null) { _PropRow["nodeid"] = CswConvert.ToDbVal(_NodeId.PrimaryKey); _PropRow["nodeidtablename"] = _NodeId.TableName; } if (null != _NodeTypeProp) { _PropRow["nodetypepropid"] = CswConvert.ToDbVal(_NodeTypeProp.PropId); } _PropRow["objectclasspropid"] = CswConvert.ToDbVal(_ObjectClassPropId); if (false == (CswConvert.ToDbVal(_PropRow[column.ToString()]).Equals(dbval))) { _PropRow[column.ToString()] = CswConvert.ToDbVal(value); if (false == IsNonModifying && SubFieldName != CswEnumNbtSubFieldName.Unknown) { setSubFieldModified(SubFieldName); } ret = true; } } // Don't just return WasModified, or else changes to one subfield // will look like changes to another subfield return(ret); }
} // SetSubFieldValue /// <summary> /// Get the value for a subfield /// </summary> public object GetSubFieldValue(CswEnumNbtSubFieldName SubFieldName) { object ret = null; if (_SubFieldMethods.ContainsKey(SubFieldName) && null != _SubFieldMethods[SubFieldName].Item1) { // This calls the appropriate get; method in the CswNbtNodeProp* class ret = _SubFieldMethods[SubFieldName].Item1(); } else { throw new CswDniException(CswEnumErrorType.Error, "Invalid subfield configuration", PropName + " (field type: " + getFieldTypeValue() + ") does not contain a get method for subfield " + SubFieldName.ToString()); } return(ret); } // GetSubFieldValue
private void _constructor(CswNbtResources CswNbtResources, CswNbtView View, CswEnumNbtSubFieldName inSubFieldName, CswEnumNbtFilterMode inFilterMode, string inValue, CswEnumNbtFilterResultMode inResultMode, bool inCaseSensitive, bool inShowAtRuntime, CswEnumNbtFilterConjunction inPropertyFilterConjunction) { SubfieldName = inSubFieldName; FilterMode = inFilterMode; Value = inValue; CaseSensitive = inCaseSensitive; ShowAtRuntime = inShowAtRuntime; ResultMode = inResultMode; Conjunction = inPropertyFilterConjunction; }
public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber) { CswEnumNbtSubFieldName OldSubfieldName = CswNbtViewPropertyFilterIn.SubfieldName; CswEnumNbtFilterMode OldFilterMode = CswNbtViewPropertyFilterIn.FilterMode; string OldValue = CswNbtViewPropertyFilterIn.Value; // BZ 8558 if (OldSubfieldName == SubFieldName.Name && OldValue.ToLower() == "me") { CswNbtViewProperty Prop = (CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent; ICswNbtMetaDataProp MetaDataProp = null; if (Prop.Type == CswEnumNbtViewPropType.NodeTypePropId) { MetaDataProp = Prop.NodeTypeProp; } else if (Prop.Type == CswEnumNbtViewPropType.ObjectClassPropId) { MetaDataProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp(Prop.ObjectClassPropId); } if (MetaDataProp != null && MetaDataProp.IsUserRelationship()) { if (CswNbtViewPropertyFilterIn.Value.ToLower() == "me" && false == (RunAsUser is CswNbtSystemUser)) { CswNbtViewPropertyFilterIn.SubfieldName = SubFieldName.NodeID; CswNbtViewPropertyFilterIn.FilterMode = CswEnumNbtFilterMode.Equals; CswNbtViewPropertyFilterIn.Value = RunAsUser.UserId.PrimaryKey.ToString(); } } } string ret = _CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber); CswNbtViewPropertyFilterIn.SubfieldName = OldSubfieldName; CswNbtViewPropertyFilterIn.FilterMode = OldFilterMode; CswNbtViewPropertyFilterIn.Value = OldValue; return(ret); }
/// <summary> /// Set the value for a subfield, triggering the logic associated with that subfield on the fieldtype /// </summary> public void SetSubFieldValue(CswEnumNbtSubFieldName SubFieldName, object value) { _CswNbtNodeProp.SetSubFieldValue(SubFieldName, value); }
/// <summary> /// Gets or sets a property attribute. Changes temporarily override values from the MetaData database, but are not saved. /// </summary> public string this[CswEnumNbtPropertyAttributeName AttributeName, CswEnumNbtSubFieldName SubFieldName = null] { get { return(_CswNbtNodePropData[AttributeName, SubFieldName]); } set { _CswNbtNodePropData[AttributeName, SubFieldName] = value; } }
/// <summary> /// Get the value for a subfield /// </summary> public dynamic GetSubFieldValue(CswEnumNbtSubFieldName SubFieldName) { return(_CswNbtNodeProp.GetSubFieldValue(SubFieldName)); }
}//refresh /// <summary> /// Returns true if the subfield was modified /// </summary> public bool wasSubFieldModified(CswEnumNbtSubFieldName SubFieldName) { return(_CswNbtNodePropData.wasSubFieldModified(SubFieldName)); }
protected bool SetPropRowValue(CswEnumNbtSubFieldName SubFieldName, CswEnumNbtPropColumn column, object value, bool IsNonModifying = false) { return(_CswNbtNodePropData.SetPropRowValue(SubFieldName, column, value, IsNonModifying)); }
/// <summary> /// Sets a subfield to have been modified /// </summary> public void setSubFieldModified(CswEnumNbtSubFieldName SubFieldName, bool Modified = true) { _CswNbtNodePropData.setSubFieldModified(SubFieldName, Modified); }
} // update() private void _addJctRow( DataTable JctTable, CswNbtMetaDataNodeTypeProp Prop, string TableName, string ColumnName, CswEnumNbtSubFieldName SubFieldName = null ) { _CswNbtSchemaModTrnsctn.CswDataDictionary.setCurrentColumn( TableName, ColumnName ); DataRow NodeTypeNameRow = JctTable.NewRow(); NodeTypeNameRow["nodetypepropid"] = Prop.PropId; NodeTypeNameRow["datadictionaryid"] = _CswNbtSchemaModTrnsctn.CswDataDictionary.TableColId; if( null != SubFieldName ) { NodeTypeNameRow["subfieldname"] = SubFieldName.ToString(); } else if( null != Prop.getFieldTypeRule().SubFields.Default ) { NodeTypeNameRow["subfieldname"] = Prop.getFieldTypeRule().SubFields.Default.Name; } JctTable.Rows.Add( NodeTypeNameRow ); }
/// <summary> /// Sets a subfield to have been modified /// </summary> public void setSubFieldModified(CswEnumNbtSubFieldName SubFieldName, bool Modified = true) { _SubFieldsModified[SubFieldName] = Modified; }
public SystemViewPropFilterDefinition makeSystemViewFilter(ICswNbtMetaDataProp ObjectClassProp, string FilterValue, CswEnumNbtFilterMode FilterMode, CswEnumNbtSubFieldName SubFieldName = null, CswEnumNbtFieldType FieldType = null, bool ShowInGrid = true) { SubFieldName = SubFieldName ?? ObjectClassProp.getFieldTypeRule().SubFields.Default.Name; return(new SystemViewPropFilterDefinition { ObjectClassProp = ObjectClassProp, FilterValue = FilterValue, FilterMode = FilterMode, SubFieldName = SubFieldName, FieldType = FieldType, ShowInGrid = ShowInGrid }); }