} // DeleteObjectClass() /// <summary> /// Set the default value for an object class prop, and cascade the change to all existing NodeTypeProps /// </summary> /// <param name="ObjectClassProp"></param> /// <param name="Value"></param> /// <param name="SubFieldName">Optional. Use the default subfield if null.</param> /// public void SetObjectClassPropDefaultValue(CswNbtMetaDataObjectClassProp ObjectClassProp, object Value, CswEnumNbtSubFieldName SubFieldName = null) { if (null != ObjectClassProp) { SubFieldName = SubFieldName ?? ObjectClassProp.getFieldTypeRule().SubFields.Default.Name; ObjectClassProp.DefaultValue.SetPropRowValue(SubFieldName, ObjectClassProp.getFieldTypeRule().SubFields[SubFieldName].Column, Value); // We're going to regret this day ObjectClassProp.DefaultValue.SetPropRowValue(CswEnumNbtSubFieldName.Gestalt, CswEnumNbtPropColumn.Gestalt, Value); foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in ObjectClassProp.getNodeTypeProps()) { //NodeTypeProp.DefaultValue.SetPropRowValue( ObjectClassProp.getFieldTypeRule().SubFields[SubFieldName].Column, Value ); //NodeTypeProp.DefaultValue.SetPropRowValue( CswEnumNbtSubFieldName.Gestalt, CswEnumNbtPropColumn.Gestalt, Value ); NodeTypeProp.getDefaultValue(true).SetSubFieldValue(SubFieldName, Value); } } }
/// <summary> /// Update the attributes of an Object Class Prop, and cascade changes to existing NodeTypeProps /// </summary> public void UpdateObjectClassProp(CswNbtMetaDataObjectClassProp ObjectClassProp, CswEnumNbtObjectClassPropAttributes AttributeColumnName, object Value) { if (AttributeColumnName != CswResources.UnknownEnum) { string AttributeColumnNameString = CswNbtMetaDataObjectClassProp.getObjectClassPropAttributesAsString(AttributeColumnName); object DBValue = CswConvert.ToDbVal(Value); if (ObjectClassProp._DataRow[AttributeColumnNameString] != DBValue) { ObjectClassProp._DataRow[AttributeColumnNameString] = DBValue; if (AttributeColumnName == CswEnumNbtObjectClassPropAttributes.setvalonadd) { ObjectClassProp._DataRow[CswNbtMetaDataObjectClassProp.getObjectClassPropAttributesAsString(CswEnumNbtObjectClassPropAttributes.display_col_add)] = DBNull.Value; ObjectClassProp._DataRow[CswNbtMetaDataObjectClassProp.getObjectClassPropAttributesAsString(CswEnumNbtObjectClassPropAttributes.display_row_add)] = DBNull.Value; } _CswNbtMetaDataResources.ObjectClassPropTableUpdate.update(ObjectClassProp._DataRow.Table); foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in ObjectClassProp.getNodeTypeProps()) { CswNbtFieldTypeAttribute attr = NodeTypeProp.getFieldTypeRule().getAttributes().FirstOrDefault(a => a.Column == AttributeColumnName); if (null != attr) { CswNbtNodePropWrapper attrProp = NodeTypeProp.DesignNode.AttributeProperty[attr.Name]; attrProp.SetSubFieldValue(attrProp.NodeTypeProp.getFieldTypeRule().SubFields.Default, DBValue); } if (AttributeColumnName == CswEnumNbtObjectClassPropAttributes.setvalonadd) { if (CswConvert.ToBoolean(Value)) { NodeTypeProp.updateLayout(CswEnumNbtLayoutType.Add, true); } else { NodeTypeProp.removeFromLayout(CswEnumNbtLayoutType.Add); } } } } } } // UpdateObjectClassProp()
} // makeMissingNodeTypeProps() /// <summary> /// Deletes an object class prop and all nodetype props from the database and metadata collection /// </summary> public Collection <CswNbtMetaDataNodeTypeProp> DeleteObjectClassProp(CswNbtMetaDataObjectClassProp ObjectClassProp, bool DeleteNodeTypeProps) { Collection <CswNbtMetaDataNodeTypeProp> Ret = new Collection <CswNbtMetaDataNodeTypeProp>(); //Collection<CswNbtMetaDataNodeTypeProp> DoomedProps = new Collection<CswNbtMetaDataNodeTypeProp>(); Collection <CswNbtObjClassDesignNodeTypeProp> DoomedProps = new Collection <CswNbtObjClassDesignNodeTypeProp>(); foreach (CswNbtMetaDataNodeTypeProp Prop in ObjectClassProp.getNodeTypeProps()) { if (DeleteNodeTypeProps) { DoomedProps.Add(Prop.DesignNode); } else { Prop.DesignNode.ObjectClassPropName.Text = string.Empty; Prop.DesignNode.postChanges(false); //Prop._DataRow["objectclasspropid"] = DBNull.Value; //_CswNbtMetaDataResources.NodeTypePropTableUpdate.update( Prop._DataRow.Table ); Ret.Add(Prop); } } foreach (CswNbtObjClassDesignNodeTypeProp Prop in DoomedProps) { //DeleteNodeTypeProp( Prop, true ); Prop.InternalDelete = true; Prop.Node.delete(false, true); } // Update MetaData _CswNbtMetaDataResources.ObjectClassPropsCollection.clearCache(); // Delete the Object Class Prop ObjectClassProp._DataRow.Delete(); _CswNbtMetaDataResources.ObjectClassPropTableUpdate.update(ObjectClassProp._DataRow.Table); return(Ret); } // DeleteObjectClassProp()