public override void update() { CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet ); foreach( CswNbtMetaDataObjectClass DocumentOC in DocumentPS.getObjectClasses() ) { CswNbtMetaDataObjectClassProp FileTypeOCP = DocumentOC.getObjectClassProp( CswNbtPropertySetDocument.PropertyName.FileType ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( FileTypeOCP, CswEnumNbtObjectClassPropAttributes.readOnly, true ); } } // update()
private void _upgradeMaterialSetOCNTPs() { CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet); foreach (CswNbtMetaDataObjectClass MaterialOC in MaterialPS.getObjectClasses()) { _createGridOCPFromNTP(MaterialOC, CswNbtPropertySetMaterial.PropertyName.Documents); _createGridOCPFromNTP(MaterialOC, CswNbtPropertySetMaterial.PropertyName.Synonyms); } }
/// <summary> /// Secondary constructor for continuing work on a new Material node /// </summary> public NewMaterial(CswNbtResources CswNbtResources, CswNbtNode Node) { _NbtResources = CswNbtResources; CswNbtMetaDataPropertySet MaterialSet = Node.ObjClass.ObjectClass.getPropertySet(); if (null == MaterialSet || MaterialSet.Name != CswEnumNbtPropertySetName.MaterialSet) { throw new CswDniException(CswEnumErrorType.Warning, "Cannot create a new Material object without a valid Material Type.", "Could not resolve NodeType for NodeTypeId: " + NodeTypeId + "."); } this.Node = Node; }
protected override void OnDisable() { //Hide the following Container properties... // Requests // Submitted Requests CswNbtMetaDataObjectClass ContainerOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass); foreach (int NodeTypeId in ContainerOC.getNodeTypeIds().Keys) { _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassContainer.PropertyName.Request); _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassContainer.PropertyName.SubmittedRequests); } //Hide the following Inventory Group properties... // Limit Request Delivery Location CswNbtMetaDataObjectClass InventoryGroupOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.InventoryGroupClass); foreach (int NodeTypeId in InventoryGroupOC.getNodeTypeIds().Keys) { _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassInventoryGroup.PropertyName.LimitRequestDeliveryLocation); } //Hide the following Location properties... // Request Delivery Location CswNbtMetaDataObjectClass LocationOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass); foreach (int NodeTypeId in LocationOC.getNodeTypeIds().Keys) { _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassLocation.PropertyName.RequestDeliveryLocation); } //Hide the following Material properties... // Request Button CswNbtMetaDataPropertySet MaterialSet = _CswNbtResources.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet); foreach (CswNbtMetaDataObjectClass MaterialOC in MaterialSet.getObjectClasses()) { foreach (int NodeTypeId in MaterialOC.getNodeTypeIds().Keys) { _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassChemical.PropertyName.Request); } } //Hide all views in the Requests category _CswNbtResources.Modules.ToggleViewsInCategory(true, "Requests", CswEnumNbtViewVisibility.Global); //Hide the request fulfiller Role/User _CswNbtResources.Modules.ToggleRoleNodes(true, "request_fulfiller"); _CswNbtResources.Modules.ToggleUserNodes(true, "request_fulfiller"); //TODO - Case 31274 - Add CISPro_Guardian Role/User to this list // Case 28930 - Disable Scheduled Rules _CswNbtResources.Modules.ToggleScheduledRule(CswEnumNbtScheduleRuleNames.GenRequest, Disabled: true); } // OnDisable()
public override void update() { CswTableUpdate JctPSOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "29499_jctpsocp_update", "jct_propertyset_ocprop" ); DataTable JctPSOCPTable = JctPSOCPUpdate.getEmptyTable(); CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet ); foreach( CswNbtMetaDataObjectClass DocOC in DocumentPS.getObjectClasses() ) { _createProps( DocOC, JctPSOCPTable, DocumentPS.PropertySetId ); } JctPSOCPUpdate.update( JctPSOCPTable ); } // update()
public override void update() { CswNbtMetaDataPropertySet RequestItemPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( "RequestItemSet" ); if( null != RequestItemPS ) { CswTableUpdate PropSetOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "propSetRequestItemProps", "jct_propertyset_ocprop" ); DataTable PropSetOCPTable = PropSetOCPUpdate.getTable( "where propertysetid = " + RequestItemPS.PropertySetId ); foreach( DataRow Row in PropSetOCPTable.Rows ) { Row.Delete(); } PropSetOCPUpdate.update( PropSetOCPTable ); CswTableUpdate PropSetOCUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "propSetRequestItemProps", "jct_propertyset_objectclass" ); DataTable PropSetOCTable = PropSetOCUpdate.getTable( "where propertysetid = " + RequestItemPS.PropertySetId ); foreach( DataRow Row in PropSetOCTable.Rows ) { Row.Delete(); } PropSetOCUpdate.update( PropSetOCTable ); CswTableUpdate PropSetUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "propSetRequestItemProps", "property_set" ); DataTable PropSetTable = PropSetUpdate.getTable( "where propertysetid = " + RequestItemPS.PropertySetId ); foreach( DataRow Row in PropSetTable.Rows ) { Row.Delete(); } PropSetUpdate.update( PropSetTable ); } CswNbtMetaDataObjectClass RequestMaterialCreateOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestMaterialCreateClass" ); if( null != RequestMaterialCreateOC ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestMaterialCreateOC ); } CswNbtMetaDataObjectClass RequestMaterialDispenseOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestMaterialDispenseClass" ); if( null != RequestMaterialDispenseOC ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestMaterialDispenseOC ); } CswNbtMetaDataObjectClass RequestContainerDispenseOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestContainerDispenseClass" ); if( null != RequestContainerDispenseOC ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestContainerDispenseOC ); } CswNbtMetaDataObjectClass RequestContainerUpdateOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestContainerUpdateClass" ); if( null != RequestContainerUpdateOC ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestContainerUpdateOC ); } } // update()
public override void update() { CswNbtMetaDataObjectClass VendorOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.VendorClass ); CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); CswNbtMetaDataObjectClass ManufacturerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ManufacturerClass ); if( null == ManufacturerOC ) { ManufacturerOC = _CswNbtSchemaModTrnsctn.createObjectClass( CswEnumNbtObjectClass.ManufacturerClass, "box.png", true ); _CswNbtSchemaModTrnsctn.createModuleObjectClassJunction( CswEnumNbtModuleName.MLM, ManufacturerOC.ObjectClassId ); _CswNbtSchemaModTrnsctn.createObjectClassProp( ManufacturerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ManufacturerOC ) { PropName = CswNbtObjClassManufacturer.PropertyName.Material, FieldType = CswEnumNbtFieldType.Relationship, IsFk = true, FkType = CswEnumNbtViewRelatedIdType.PropertySetId.ToString(), FkValue = MaterialPS.PropertySetId, IsRequired = true } ); CswNbtView ManufacturingSiteView = _CswNbtSchemaModTrnsctn.makeView(); CswNbtViewRelationship parent = ManufacturingSiteView.AddViewRelationship( VendorOC, true ); CswNbtMetaDataObjectClassProp VendorTypeOCP = VendorOC.getObjectClassProp( CswNbtObjClassVendor.PropertyName.VendorTypeName ); ManufacturingSiteView.AddViewPropertyAndFilter( parent, MetaDataProp : VendorTypeOCP, Value : CswNbtObjClassVendor.VendorTypes.Manufacturing, FilterMode : CswEnumNbtFilterMode.Equals ); ManufacturingSiteView.Visibility = CswEnumNbtViewVisibility.Property; ManufacturingSiteView.ViewName = "Manufacturing Site"; _CswNbtSchemaModTrnsctn.createObjectClassProp( ManufacturerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ManufacturerOC ) { PropName = CswNbtObjClassManufacturer.PropertyName.ManufacturingSite, FieldType = CswEnumNbtFieldType.Relationship, IsFk = true, FkType = CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), FkValue = VendorOC.ObjectClassId, IsRequired = true, ViewXml = ManufacturingSiteView.ToString() } ); _CswNbtSchemaModTrnsctn.createObjectClassProp( ManufacturerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ManufacturerOC ) { PropName = CswNbtObjClassManufacturer.PropertyName.Qualified, FieldType = CswEnumNbtFieldType.Logical } ); } CswNbtMetaDataNodeType ManufacturerNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( ManufacturerOC ) { NodeTypeName = "Manufacturer", Category = "MLM" } ); } // update()
public override void update() { // Remove the C3SyncDate Property from the Material Property Set CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); foreach( CswNbtMetaDataObjectClass CurrentObjectClass in MaterialPS.getObjectClasses() ) { CswNbtMetaDataObjectClassProp C3SyncDateOCP = CurrentObjectClass.getObjectClassProp( "C3SyncDate" ); if( null != C3SyncDateOCP ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteJctPropertySetOcPropRow( C3SyncDateOCP ); _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClassProp( C3SyncDateOCP, true ); } } } // update()
public override void update() { CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); foreach( CswNbtMetaDataObjectClass objectClass in MaterialPS.getObjectClasses() ) { foreach( CswNbtMetaDataNodeType nodeType in objectClass.getNodeTypes() ) { CswNbtMetaDataNodeTypeProp LegacyMaterialIdNTP = nodeType.getNodeTypeProp( CswNbtPropertySetMaterial.PropertyName.LegacyMaterialId ); if( null != LegacyMaterialIdNTP ) { LegacyMaterialIdNTP.removeFromAllLayouts(); } } } } // update()
private CswNbtSearchFilter makeFilter(CswNbtMetaDataPropertySet PropertySet, Int32 ResultCount, bool Removeable, CswEnumNbtSearchPropOrderSourceType Source) { CswNbtSearchFilter ret = new CswNbtSearchFilter("Filter To", CswEnumNbtSearchFilterType.propertyset, "PS_" + PropertySet.PropertySetId.ToString(), "All " + PropertySet.Name, ResultCount, PropertySet.IconFileName, Removeable, Source); ret.PropertySetId = PropertySet.PropertySetId; ret.UseMoreLink = false; return(ret); }
public override void update() { if( _CswNbtSchemaModTrnsctn.isMaster() ) { CswNbtMetaDataPropertySet SchedulerSet = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.SchedulerSet ); foreach( CswNbtMetaDataObjectClass ScheduleOc in SchedulerSet.getObjectClasses() ) { foreach( CswNbtNode Schedule in ScheduleOc.getNodes( forceReInit : false, includeSystemNodes : false ) ) { ICswNbtPropertySetScheduler ISchedule = CswNbtPropSetCaster.AsPropertySetScheduler( Schedule ); ISchedule.Enabled.Checked = CswEnumTristate.False; Schedule.postChanges( ForceUpdate: false ); } } } } // update()
public override void update() { MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ); //Set FK Type on all material-related props to Material PropertySet setPropFK( CswEnumNbtObjectClass.SizeClass, CswNbtObjClassSize.PropertyName.Material, "Size" ); setPropFK( CswEnumNbtObjectClass.DocumentClass, CswNbtObjClassDocument.PropertyName.Owner, "Material Document" ); setPropFK( CswEnumNbtObjectClass.InventoryLevelClass, CswNbtObjClassInventoryLevel.PropertyName.Material, "Inventory Level" ); setPropFK( CswEnumNbtObjectClass.ContainerClass, CswNbtObjClassContainer.PropertyName.Material, "Container" ); setPropFK( CswEnumNbtObjectClass.MaterialSynonymClass, CswNbtObjClassMaterialSynonym.PropertyName.Material, "Material Synonym" ); setPropFK( CswEnumNbtObjectClass.RequestContainerDispenseClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Container Dispense" ); setPropFK( CswEnumNbtObjectClass.RequestContainerUpdateClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Container Update" ); setPropFK( CswEnumNbtObjectClass.RequestMaterialCreateClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Material Create" ); setPropFK( CswEnumNbtObjectClass.RequestMaterialCreateClass, CswNbtObjClassRequestMaterialCreate.PropertyName.NewMaterialType, "Request Material Create" ); setPropFK( CswEnumNbtObjectClass.RequestMaterialDispenseClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Material Dispense" ); //Set FK Type on all chemical-related props to Chemical ObjectClass setPropFK( CswEnumNbtObjectClass.DocumentClass, CswNbtObjClassDocument.PropertyName.Owner, "SDS Document", true ); setPropFK( CswEnumNbtObjectClass.GHSClass, CswNbtObjClassGHS.PropertyName.Material, "GHS", true ); setPropFK( CswEnumNbtObjectClass.ReceiptLotClass, CswNbtObjClassReceiptLot.PropertyName.Material, "Receipt Lot", true ); setPropFK( CswEnumNbtObjectClass.ManufacturerEquivalentPartClass, CswNbtObjClassManufacturerEquivalentPart.PropertyName.Material, "Manufacturing Equivalent Part", true ); setPropFK( CswEnumNbtObjectClass.MaterialComponentClass, CswNbtObjClassMaterialComponent.PropertyName.Constituent, "Material Component", true ); setPropFK( CswEnumNbtObjectClass.MaterialComponentClass, CswNbtObjClassMaterialComponent.PropertyName.Mixture, "Material Component", true ); //Update all Material grid prop views to use MaterialSet as root relationship foreach( CswNbtMetaDataObjectClass MatOC in MaterialPS.getObjectClasses() ) { foreach( CswNbtMetaDataNodeType MaterialNT in MatOC.getNodeTypes() ) { if( null != MaterialNT ) { _updateSynonymsView( MaterialNT ); _updateDocumentsView( MaterialNT ); _updateSizesView( MaterialNT ); _updateInventoryLevelsView( MaterialNT ); _updateContainersView( MaterialNT ); } } } //Update ViewSelect views to use proper Material root relationship _updateUnapprovedMaterialsView(); _updateMissingHazardClassesView(); } // update()
public override void update() { CswNbtMetaDataPropertySet materialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); foreach( CswNbtMetaDataObjectClass objectClass in materialPS.getObjectClasses() ) { foreach( CswNbtMetaDataNodeType nodeType in objectClass.getNodeTypes() ) { CswNbtMetaDataNodeTypeTab documentsTab = nodeType.getNodeTypeTab( "Documents" ); CswNbtMetaDataNodeTypeProp documentsNT = nodeType.getNodeTypeProp( "Documents" ); if( null != documentsNT && null != documentsTab ) { _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, nodeType.NodeTypeId, documentsNT, true, documentsTab.TabId ); } } } } // update()
public override void update() { List<CswPrimaryKey> MaterialPKs = new List<CswPrimaryKey>(); //Rename all existing material demo data CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); foreach( CswNbtMetaDataObjectClass MatOC in MaterialPS.getObjectClasses() ) { foreach( CswNbtPropertySetMaterial DemoMaterial in MatOC.getNodes( false, false, false ) ) { if( DemoMaterial.IsDemo ) { MaterialPKs.Add( DemoMaterial.NodeId ); DemoMaterial.TradeName.Text = DemoMaterial.TradeName.Text.Replace( "Default", "(demo)" ); DemoMaterial.ApprovedForReceiving.Checked = CswEnumTristate.True; DemoMaterial.postChanges( false ); } } } //Fix existing demo material sizes CswNbtMetaDataObjectClass SizeOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.SizeClass ); foreach( CswNbtObjClassSize DemoSize in SizeOC.getNodes( false, false ) ) { if( DemoSize.IsDemo && MaterialPKs.Contains( DemoSize.Material.RelatedNodeId ) ) { DemoSize.InitialQuantity.Quantity = 10; CswNbtPropertySetMaterial DemoMaterial = _CswNbtSchemaModTrnsctn.Nodes[DemoSize.Material.RelatedNodeId]; if( DemoMaterial.ObjectClass.ObjectClass == CswEnumNbtObjectClass.NonChemicalClass ) { CswNbtObjClassUnitOfMeasure CasesUnit = _getUnit( "Unit (Each)", "Cases" ); if( null != CasesUnit ) { DemoSize.InitialQuantity.UnitId = CasesUnit.NodeId; DemoSize.InitialQuantity.View.Root.ChildRelationships.Clear(); DemoSize.InitialQuantity.View.AddViewRelationship( CasesUnit.NodeType, true ); DemoSize.InitialQuantity.View.save(); } } DemoSize.postChanges( false ); } } } // update()
/// <summary> /// The actual update call /// </summary> public override void update() { CswNbtMetaDataPropertySet MaterialSet = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet); foreach (CswNbtMetaDataObjectClass MaterialOC in MaterialSet.getObjectClasses()) { CswNbtMetaDataObjectClassProp ExpirationLockedOCP = MaterialOC.getObjectClassProp(CswNbtPropertySetMaterial.PropertyName.ContainerExpirationLocked); if (null == ExpirationLockedOCP) { ExpirationLockedOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MaterialOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtPropertySetMaterial.PropertyName.ContainerExpirationLocked, FieldType = CswEnumNbtFieldType.Logical, SetValOnAdd = false, IsRequired = true }); _CswNbtSchemaModTrnsctn.MetaData.SetObjectClassPropDefaultValue(ExpirationLockedOCP, CswEnumTristate.True, CswEnumNbtSubFieldName.Checked); } } }
private void _recurseTree(ICswNbtTree results, CswNbtAPITree.CswNbtTreeResource Parent) { for (int i = 0; i < results.getChildNodeCount(); i++) { results.goToNthChild(i); CswNbtNodeKey NodeKey = results.getNodeKeyForCurrentPosition(); string Name = results.getNodeNameForCurrentPosition(); CswNbtMetaDataNodeType nt = _CswNbtResources.MetaData.getNodeType(NodeKey.NodeTypeId); CswNbtMetaDataObjectClass oc = nt.getObjectClass(); CswNbtMetaDataPropertySet propSet = oc.getPropertySet(); string PropSetName = string.Empty; if (null != propSet) { PropSetName = propSet.Name; } CswNbtAPITree.CswNbtTreeResource SubParent = Parent.Add(Name, NodeKey.NodeId, nt.NodeTypeName, oc.ObjectClassName, PropSetName, string.Empty); _recurseTree(results, SubParent); results.goToParentNode(); } }
public override void update() { // Create OpenUrl DocumentPS property CswTableUpdate JctPSOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "31210_jctpsocp_update", "jct_propertyset_ocprop" ); DataTable JctPSOCPTable = JctPSOCPUpdate.getEmptyTable(); CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet ); foreach( CswNbtMetaDataObjectClass DocOC in DocumentPS.getObjectClasses() ) { CswNbtMetaDataObjectClassProp OpenFileOCP = DocOC.getObjectClassProp( CswNbtPropertySetDocument.PropertyName.OpenFile ); if( null == OpenFileOCP ) { OpenFileOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( DocOC, new CswNbtWcfMetaDataModel.ObjectClassProp( DocOC ) { PropName = CswNbtPropertySetDocument.PropertyName.OpenFile, FieldType = CswEnumNbtFieldType.Button } ); DataRow NewJctPSOCPRow = JctPSOCPTable.NewRow(); NewJctPSOCPRow["objectclasspropid"] = OpenFileOCP.PropId; NewJctPSOCPRow["propertysetid"] = CswConvert.ToDbVal( DocumentPS.PropertySetId ); JctPSOCPTable.Rows.Add( NewJctPSOCPRow ); } } JctPSOCPUpdate.update( JctPSOCPTable ); // Create ChemWatch property on SDSDocumentOC CswNbtMetaDataObjectClass SDSDocumentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.SDSDocumentClass ); CswNbtMetaDataObjectClassProp ChemWatchOCP = SDSDocumentOC.getObjectClassProp( CswNbtObjClassSDSDocument.PropertyName.ChemWatch ); if( null == ChemWatchOCP ) { _CswNbtSchemaModTrnsctn.createObjectClassProp( SDSDocumentOC, new CswNbtWcfMetaDataModel.ObjectClassProp( SDSDocumentOC ) { PropName = CswNbtObjClassSDSDocument.PropertyName.ChemWatch, FieldType = CswEnumNbtFieldType.Text, ReadOnly = true } ); } } // update()
public void GetCollection(CswNbtResourceCollection Return, CswNbtAPIGenericRequest GenericRequest) { if (hasPermission(GenericRequest, Return)) { try { CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(GenericRequest.MetaDataName); if (null != NodeType) { CswNbtView GetNodeTypeView = new CswNbtView(_CswNbtResources); GetNodeTypeView.AddViewRelationship(NodeType, false); ICswNbtTree tree = _CswNbtResources.Trees.getTreeFromView(GetNodeTypeView, true, false, false); for (int i = 0; i < tree.getChildNodeCount(); i++) { tree.goToNthChild(i); CswNbtNodeKey nodeKey = tree.getNodeKeyForCurrentPosition(); CswPrimaryKey nodeId = tree.getNodeIdForCurrentPosition(); CswNbtMetaDataObjectClass objectClass = _CswNbtResources.MetaData.getObjectClass(nodeKey.ObjectClassId); CswNbtMetaDataPropertySet propSet = objectClass.getPropertySet(); string propSetStr = string.Empty; if (null != propSet) { propSetStr = propSet.Name; } string nodeName = tree.getNodeNameForCurrentPosition(); Return.Add(nodeName, nodeId, NodeType.NodeTypeName, objectClass.ObjectClassName, propSetStr, BuildURI(NodeType.NodeTypeName, nodeKey.NodeId.PrimaryKey)); tree.goToParentNode(); } } else { Return.Status = HttpStatusCode.NotFound; } } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } } }
public void RunTree(CswNbtAPITree Return, int ViewIdInt) { try { CswNbtViewId ViewId = new CswNbtViewId(ViewIdInt); CswNbtView View = _CswNbtResources.ViewSelect.restoreView(ViewId); if (null != View) { ICswNbtTree results = _CswNbtResources.Trees.getTreeFromView(View, true, false, false); for (int i = 0; i < results.getChildNodeCount(); i++) { results.goToNthChild(i); CswNbtNodeKey NodeKey = results.getNodeKeyForCurrentPosition(); string Name = results.getNodeNameForCurrentPosition(); CswNbtMetaDataNodeType nt = _CswNbtResources.MetaData.getNodeType(NodeKey.NodeTypeId); CswNbtMetaDataObjectClass oc = nt.getObjectClass(); CswNbtMetaDataPropertySet propSet = oc.getPropertySet(); string PropSetName = string.Empty; if (null != propSet) { PropSetName = propSet.Name; } CswNbtAPITree.CswNbtTreeResource Parent = Return.Add(Name, NodeKey.NodeId, nt.NodeTypeName, oc.ObjectClassName, PropSetName, BuildURI(nt.NodeTypeName, NodeKey.NodeId.PrimaryKey)); _recurseTree(results, Parent); results.goToParentNode(); } Return.Status = HttpStatusCode.OK; } else { Return.Status = HttpStatusCode.NotFound; } } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } }
public override void update() { //Last Modified By and Last Modified On are only on Edit layouts CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet ); foreach( CswNbtMetaDataObjectClass DocumentOC in DocumentPS.getObjectClasses() ) { foreach( CswNbtMetaDataNodeType DocumentNT in DocumentOC.getNodeTypes() ) { CswNbtMetaDataNodeTypeTab firstTab = DocumentNT.getFirstNodeTypeTab(); CswNbtMetaDataNodeTypeProp LastModifiedOnNTP = DocumentNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetDocument.PropertyName.LastModifiedOn ); LastModifiedOnNTP.removeFromAllLayouts(); _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, DocumentNT.NodeTypeId, LastModifiedOnNTP, false, firstTab.TabId ); CswNbtMetaDataNodeTypeProp LastModifiedByNTP = DocumentNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetDocument.PropertyName.LastModifiedBy ); LastModifiedByNTP.removeFromAllLayouts(); _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, DocumentNT.NodeTypeId, LastModifiedByNTP, false, firstTab.TabId ); } } } // update()
} // _toggleConstituentProps() public override void addDefaultViewFilters( CswNbtViewRelationship ParentRelationship ) { // Not IsConstituent ICswNbtMetaDataProp IsConstituentProp = null; // Exclude Materials that have Obsolete == true ICswNbtMetaDataProp ObsoleteProp = null; CswNbtMetaDataPropertySet materialPs = _CswNbtResources.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); CswNbtMetaDataObjectClass firstMaterialOc = materialPs.getObjectClasses().FirstOrDefault(); // Case 30136 - don't add this filter if the ownertype is nodetype if( ParentRelationship.getOwnerType() == CswEnumNbtViewRelatedIdType.ObjectClassId ) { CswNbtMetaDataObjectClass ObjClass = ParentRelationship.getObjClassOwner(); IsConstituentProp = ObjClass.getObjectClassProp( PropertyName.IsConstituent ); } else if( ParentRelationship.getOwnerType() == CswEnumNbtViewRelatedIdType.PropertySetId ) { //Bug - We're adding the Chemical IsConstituent property here, but for NTPs treeloader works by PropName. Not ideal, but works unless the propname changes IsConstituentProp = firstMaterialOc.getObjectClassProp( PropertyName.IsConstituent ).getNodeTypeProps().FirstOrDefault(); } if( null != IsConstituentProp ) { CswNbtViewProperty viewProp1 = ParentRelationship.View.AddViewProperty( ParentRelationship, IsConstituentProp ); viewProp1.ShowInGrid = false; ParentRelationship.View.AddViewPropertyFilter( viewProp1, FilterMode : CswEnumNbtFilterMode.NotEquals, Value : CswEnumTristate.True ); } ObsoleteProp = firstMaterialOc.getObjectClassProp( PropertyName.Obsolete ); if( null != ObsoleteProp ) { CswNbtViewProperty viewProp2 = ParentRelationship.View.AddViewProperty( ParentRelationship, ObsoleteProp ); viewProp2.ShowInGrid = false; ParentRelationship.View.AddViewPropertyFilter( viewProp2, FilterMode : CswEnumNbtFilterMode.NotEquals, Value : CswEnumTristate.True, ShowAtRuntime : true ); } onPropertySetAddDefaultViewFilters( ParentRelationship ); }
public void Search(CswNbtResourceCollection Return, CswNbtApiSearchRequest SearchRequest) { try { int filter_nt_id = Int32.MinValue; if (false == String.IsNullOrEmpty(SearchRequest.NodeType)) { filter_nt_id = _CswNbtResources.MetaData.getNodeType(SearchRequest.NodeType).NodeTypeId; } CswNbtWebServiceSearch searchService = new CswNbtWebServiceSearch(_CswNbtResources, null); CswNbtSearch search = searchService.getSearch(SearchRequest.Query, SearchRequest.SearchType, filter_nt_id, Int32.MinValue, Int32.MinValue); ICswNbtTree results = search.Results(); for (int i = 0; i < results.getChildNodeCount(); i++) { results.goToNthChild(i); CswNbtNodeKey NodeKey = results.getNodeKeyForCurrentPosition(); string Name = results.getNodeNameForCurrentPosition(); CswNbtMetaDataNodeType nt = _CswNbtResources.MetaData.getNodeType(NodeKey.NodeTypeId); CswNbtMetaDataObjectClass oc = nt.getObjectClass(); CswNbtMetaDataPropertySet propSet = oc.getPropertySet(); string PropSetName = string.Empty; if (null != propSet) { PropSetName = propSet.Name; } Return.Add(Name, NodeKey.NodeId, nt.NodeTypeName, oc.ObjectClassName, PropSetName, BuildURI(nt.NodeTypeName, NodeKey.NodeId.PrimaryKey)); results.goToParentNode(); } Return.Status = HttpStatusCode.OK; } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } }
private void _createPermissionPropertySet() { CswNbtMetaDataPropertySet PermissionPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.PermissionSet); if (null == PermissionPS) { PermissionPS = _CswNbtSchemaModTrnsctn.MetaData.makeNewPropertySet(CswEnumNbtPropertySetName.PermissionSet, "check.png"); CswTableUpdate JctPSOCUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate("29570_jctpsoc_update", "jct_propertyset_objectclass"); DataTable JctPSOCTable = JctPSOCUpdate.getEmptyTable(); _addObjClassToPropertySetPermission(JctPSOCTable, CswEnumNbtObjectClass.InventoryGroupPermissionClass, PermissionPS.PropertySetId); _addObjClassToPropertySetPermission(JctPSOCTable, CswEnumNbtObjectClass.ReportGroupPermissionClass, PermissionPS.PropertySetId); _addObjClassToPropertySetPermission(JctPSOCTable, CswEnumNbtObjectClass.MailReportGroupPermissionClass, PermissionPS.PropertySetId); JctPSOCUpdate.update(JctPSOCTable); CswTableUpdate JctPSOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate("29570_jctpsocp_update", "jct_propertyset_ocprop"); DataTable JctPSOCPTable = JctPSOCPUpdate.getEmptyTable(); _addObjClassPropsToPropertySetPermission(JctPSOCPTable, CswEnumNbtObjectClass.InventoryGroupPermissionClass, PermissionPS.PropertySetId); _addObjClassPropsToPropertySetPermission(JctPSOCPTable, CswEnumNbtObjectClass.ReportGroupPermissionClass, PermissionPS.PropertySetId); _addObjClassPropsToPropertySetPermission(JctPSOCPTable, CswEnumNbtObjectClass.MailReportGroupPermissionClass, PermissionPS.PropertySetId); JctPSOCPUpdate.update(JctPSOCPTable); } }
public void GetResource(CswNbtResource Return, CswNbtAPIGenericRequest GenericRequest) { if (hasPermission(GenericRequest, Return)) { try { CswNbtNode Node = _CswNbtResources.Nodes.GetNode(GenericRequest.NodeId); if (null != Node && GenericRequest.MetaDataName.ToLower() == Node.getNodeType().NodeTypeName.ToLower()) { Return.NodeId = GenericRequest.NodeId; Return.NodeName = Node.NodeName; Return.NodeType = Node.getNodeType().NodeTypeName; Return.ObjectClass = Node.ObjClass.ObjectClass.ObjectClassName; CswNbtMetaDataPropertySet propSet = Node.getObjectClass().getPropertySet(); if (null != propSet) { Return.PropertySet = propSet.Name; } Return.URI = BuildURI(Return.NodeType, Node.NodeId.PrimaryKey); Return.PropertyData = GetPropertyData(Node); } else { Return.Status = HttpStatusCode.NotFound; } } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } } else { Return.Status = HttpStatusCode.Forbidden; } }
public override void update() { CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); foreach( CswNbtMetaDataObjectClass MaterialOC in MaterialPS.getObjectClasses() ) { // Set default value for Obsolete property on Materials to false // Remove obsolete from Add layout CswNbtMetaDataObjectClassProp ManufacturerSitesOCP = MaterialOC.getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.ManufacturingSites ); CswNbtView ManufacturersView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( "ManufacturingSites", CswEnumNbtViewVisibility.Property ); // Set view on nodetypes foreach( CswNbtMetaDataNodeType MaterialNT in MaterialOC.getNodeTypes() ) { CswNbtMetaDataNodeTypeProp ObsoleteNTP = MaterialNT.getNodeTypeProp( CswNbtPropertySetMaterial.PropertyName.Obsolete ); //ObsoleteNTP.getDefaultValue( true ).AsLogical.Checked = CswEnumTristate.False; ObsoleteNTP.DesignNode.AttributeProperty[CswEnumNbtPropertyAttributeName.DefaultValue].AsLogical.Checked = CswEnumTristate.False; ObsoleteNTP.removeFromLayout( CswEnumNbtLayoutType.Add ); CswNbtMetaDataNodeTypeProp GridNTP = MaterialNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetMaterial.PropertyName.ManufacturingSites ); GridNTP.ViewId.set( ManufacturersView.ViewId.get() ); } } } // update()
public override void update() { // Add property reference property to Container CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet ); CswNbtMetaDataObjectClassProp ObsoleteOCP = MaterialPS.getObjectClasses().FirstOrDefault().getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.Obsolete ); CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass ); CswNbtMetaDataObjectClassProp MaterialOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Material ); CswNbtMetaDataObjectClassProp MaterialObsoleteOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.MaterialObsolete ); if( null == MaterialObsoleteOCP ) { MaterialObsoleteOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( ContainerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ContainerOC ) { PropName = CswNbtObjClassContainer.PropertyName.MaterialObsolete, FieldType = CswEnumNbtFieldType.PropertyReference, IsFk = true, FkType = CswEnumNbtViewPropIdType.ObjectClassPropId.ToString(), FkValue = MaterialOCP.PropId, ValuePropId = ObsoleteOCP.PropId, ValuePropType = CswEnumNbtViewPropIdType.ObjectClassPropId.ToString() } ); } } // update()
} // getObjectClasses() /// <summary> /// Get a list of all NodeTypes, optionally limited according to supplied parameters /// </summary> /// <param name="ObjectClass">(Optional) An Object Class to constrain results.</param> /// <param name="ExcludeNodeTypeIds">(Optional) A comma-delimited string of NodeTypeIds to exclude from the return.</param> /// <param name="RelationshipTargetNodeTypeId">(Optional [Requires RelationshipObjectClassPropName]) /// <para>A related NodeTypeId to further constrain the results to nodetypes whose relationship targets the supplied RelationshipTargetNodeTypeId</para> /// <para>Use case: get all nodetypes of Size object class whose Material relationships target Chemicals.</para> /// </param> /// <param name="RelationshipObjectClassPropName">(Optional [Requires RelationshipObjectClassPropName]) /// <para>The name of the Object Class Prop which defines the relationship to RelationshipTargetNodeTypeId</para> /// <param name="FilterToPermission">Restrict nodeTypes to those to which the user has this permission (default is 'View')</param> /// <param name="FilterToViewId">(Optional) Limit to nodetypes within this view</param> /// <param name="Searchable">If true, only include searchable nodetypes</param> /// <returns></returns> public JObject getNodeTypes(CswNbtMetaDataPropertySet PropertySet = null, CswNbtMetaDataObjectClass ObjectClass = null, string ExcludeNodeTypeIds = "", Int32 RelationshipTargetNodeTypeId = Int32.MinValue, string RelationshipObjectClassPropName = "", Int32 RelationshipNodeTypePropId = Int32.MinValue, string FilterToPermission = null, CswNbtView FilterToView = null, bool Searchable = false) { JObject ReturnVal = new JObject(); if (string.IsNullOrEmpty(FilterToPermission)) { // We default the Permission type to 'View' FilterToPermission = CswEnumNbtNodeTypePermission.View; } CswCommaDelimitedString ExcludedNodeTypes = new CswCommaDelimitedString(); Collection <Int32> ExcludedIds = new Collection <Int32>(); if (false == string.IsNullOrEmpty(ExcludeNodeTypeIds)) { ExcludedNodeTypes.FromString(ExcludeNodeTypeIds); ExcludedIds = ExcludedNodeTypes.ToIntCollection(); } IEnumerable <CswNbtMetaDataNodeType> NodeTypes; if (Int32.MinValue != RelationshipNodeTypePropId) { CswNbtMetaDataNodeTypeProp RelationshipProp = _CswNbtResources.MetaData.getNodeTypeProp(RelationshipNodeTypePropId); NodeTypes = _CswNbtResources.MetaData.getNodeTypes().Where(nt => RelationshipProp.FkMatches(nt)); } else if (null != FilterToView) { NodeTypes = new Collection <CswNbtMetaDataNodeType>(); Collection <CswNbtViewRelationship> relationships = FilterToView.getAllNbtViewRelationships(); foreach (CswNbtViewRelationship rel in relationships) { if (rel.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId) { ((Collection <CswNbtMetaDataNodeType>)NodeTypes).Add(_CswNbtResources.MetaData.getNodeType(rel.SecondId)); } else if (rel.SecondType == CswEnumNbtViewRelatedIdType.ObjectClassId) { NodeTypes = NodeTypes.Union(_CswNbtResources.MetaData.getObjectClass(rel.SecondId).getNodeTypes()); } else if (rel.SecondType == CswEnumNbtViewRelatedIdType.PropertySetId) { NodeTypes = NodeTypes.Union(_CswNbtResources.MetaData.getPropertySet(rel.SecondId).getNodeTypes()); } } } else if (null != PropertySet) { List <CswNbtMetaDataNodeType> NTs = new List <CswNbtMetaDataNodeType>(); foreach (CswNbtMetaDataObjectClass OC in PropertySet.getObjectClasses()) { NTs.AddRange(OC.getLatestVersionNodeTypes()); } NodeTypes = NTs; } else if (null == ObjectClass) { NodeTypes = _CswNbtResources.MetaData.getNodeTypesLatestVersion(); } else { NodeTypes = ObjectClass.getLatestVersionNodeTypes(); ReturnVal["objectClassId"] = ObjectClass.ObjectClassId; } Int32 NodeTypeCount = 0; foreach (CswNbtMetaDataNodeType RetNodeType in NodeTypes .Where(_RetNodeType => (false == Searchable || _RetNodeType.IsSearchResult())) .OrderBy(_RetNodeType => _RetNodeType.NodeTypeName)) { bool AddThisNodeType = false; if (false == ExcludedIds.Contains(RetNodeType.NodeTypeId)) { AddThisNodeType = true; if (Int32.MinValue != RelationshipTargetNodeTypeId && false == string.IsNullOrEmpty(RelationshipObjectClassPropName)) { CswNbtMetaDataNodeTypeProp RelationshipNtp = RetNodeType.getNodeTypePropByObjectClassProp(RelationshipObjectClassPropName); if (null != RelationshipNtp && RelationshipNtp.getFieldTypeValue() == CswEnumNbtFieldType.Relationship) { CswNbtMetaDataNodeType RelatedNodeType = _CswNbtResources.MetaData.getNodeType(RelationshipTargetNodeTypeId); if (null == RelatedNodeType || false == RelationshipNtp.FkMatches(RelatedNodeType, true)) { AddThisNodeType = false; } } } if (false == _userHasPermission(FilterToPermission, RetNodeType)) { AddThisNodeType = false; } } if (AddThisNodeType) { _addNodeTypeAttributes(RetNodeType, ReturnVal); NodeTypeCount += 1; } } ReturnVal["count"] = NodeTypeCount; return(ReturnVal); } // getNodeTypes()
public override void update() { CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ); CswNbtMetaDataNodeType ConstituentNT = null; Collection<CswNbtMetaDataNodeType> ChemicalNTs = new Collection<CswNbtMetaDataNodeType>(); foreach( CswNbtMetaDataNodeType NodeType in _CswNbtSchemaModTrnsctn.MetaData.getNodeTypes( CswEnumNbtObjectClass.ChemicalClass ) ) { if( NodeType.NodeTypeName == "Constituent" ) { ConstituentNT = NodeType; } else { ChemicalNTs.Add( NodeType ); } } if( null != ConstituentNT && ChemicalNTs.Count > 0 ) { //4. Change Components Consituent property to point to the Constituent NT CswNbtMetaDataObjectClass ComponentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.MaterialComponentClass ); // Only Constituents for 'Constituent' property CswNbtMetaDataObjectClassProp ComponentConstituentOCP = ComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Constituent ); { CswNbtView ocConstituentView = _CswNbtSchemaModTrnsctn.makeView(); ocConstituentView.ViewName = "Constituent View"; CswNbtViewRelationship rel1 = ocConstituentView.AddViewRelationship( ChemicalOC, false ); ocConstituentView.AddViewPropertyAndFilter( rel1, ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ), FilterMode: CswEnumNbtFilterMode.Equals, Value: CswEnumTristate.True.ToString() ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( ComponentConstituentOCP, CswEnumNbtObjectClassPropAttributes.viewxml, ocConstituentView.ToString() ); } // Exclude Constituents from 'Mixture' property CswNbtMetaDataObjectClassProp ComponentMixtureOCP = ComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Mixture ); { CswNbtView ocMixtureView = _CswNbtSchemaModTrnsctn.makeView(); ocMixtureView.ViewName = "Mixture View"; CswNbtViewRelationship rel2 = ocMixtureView.AddViewRelationship( ChemicalOC, false ); ocMixtureView.AddViewPropertyAndFilter( rel2, ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ), FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumTristate.True.ToString() ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( ComponentMixtureOCP, CswEnumNbtObjectClassPropAttributes.viewxml, ocMixtureView.ToString() ); } // Fix views on existing nodetypes foreach( CswNbtMetaDataNodeType ComponentNT in ComponentOC.getNodeTypes() ) { // Only Constituents for 'Constituent' property { CswNbtMetaDataNodeTypeProp ComponentConstituentNTP = ComponentNT.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Constituent ); ComponentConstituentNTP.SetFK( CswEnumNbtViewRelatedIdType.NodeTypeId.ToString(), ConstituentNT.NodeTypeId ); CswNbtView ntConstituentView = _CswNbtSchemaModTrnsctn.restoreView( ComponentConstituentNTP.ViewId ); ntConstituentView.Root.ChildRelationships.Clear(); CswNbtViewRelationship rel3 = ntConstituentView.AddViewRelationship( ConstituentNT, false ); //ntConstituentView.AddViewPropertyAndFilter( rel3, // ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ), // FilterMode: CswEnumNbtFilterMode.Equals, // Value: CswEnumTristate.True.ToString() ); ntConstituentView.save(); } // Exclude Constituents from 'Mixture' property { CswNbtMetaDataNodeTypeProp ComponentMixtureNTP = ComponentNT.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Mixture ); CswNbtView ntMixtureView = _CswNbtSchemaModTrnsctn.restoreView( ComponentMixtureNTP.ViewId ); ntMixtureView.Root.ChildRelationships.Clear(); CswNbtViewRelationship rel4 = ntMixtureView.AddViewRelationship( ChemicalOC, false ); ntMixtureView.AddViewPropertyAndFilter( rel4, ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ), FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumTristate.True.ToString() ); ntMixtureView.save(); } } // foreach( CswNbtMetaDataNodeType ComponentNT in ComponentOC.getNodeTypes() ) //// Fix Chemical Components Grid //foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalNTs ) //{ // CswNbtMetaDataNodeTypeProp ComponentsGridNTP = ChemicalNT.getNodeTypeProp( "Components" ); // if( null != ComponentsGridNTP ) // { // CswNbtMetaDataObjectClassProp ComponentPercentOCP = ComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Percentage ); // CswNbtView ComponentsGridView = _CswNbtSchemaModTrnsctn.restoreView( ComponentsGridNTP.ViewId ); // ComponentsGridView.Root.ChildRelationships.Clear(); // CswNbtViewRelationship ChemRel = ComponentsGridView.AddViewRelationship( ChemicalNT, false ); // CswNbtViewRelationship MixRel = ComponentsGridView.AddViewRelationship( ChemRel, CswEnumNbtViewPropOwnerType.Second, ComponentMixtureOCP, false ); // ComponentsGridView.AddViewProperty( MixRel, ComponentConstituentOCP, 1 ); // ComponentsGridView.AddViewProperty( MixRel, ComponentPercentOCP, 2 ); // ComponentsGridView.save(); // } //} // foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalNTs ) // 6. Update any views or props that point to the Chemical ObjClass to point to the Chemical NT. // We don't want Constituent Chemicals to show as the target for things like Requests Material or Size Owner. string Sql = @"select ocp.propname, oc.objectclass, t.nodetypename, p.propname, p.nodetypepropid, p.fktype, p.fkvalue from nodetype_props p join nodetypes t on p.nodetypeid = t.nodetypeid join object_class oc on t.objectclassid = oc.objectclassid left outer join object_class_props ocp on p.objectclasspropid = ocp.objectclasspropid join field_types f on p.fieldtypeid = f.fieldtypeid where ( ( p.fktype = 'PropertySetId' and p.fkvalue = (select propertysetid from property_set where name = 'MaterialSet' ) ) or ( p.fktype = 'ObjectClassId' and p.fkvalue = (select objectclassid from object_class where objectclass = 'ChemicalClass' ) ) or ( p.fktype = 'NodeTypeId' and p.fkvalue = (select nodetypeid from nodetypes where nodetypename = 'Chemical' ) ) ) and f.fieldtype = 'Relationship' and ( p.objectclasspropid is null or not ( ( oc.objectclass = 'GHSClass' and ocp.propname = 'Material' ) or ( oc.objectclass = 'MaterialComponentClass' and ocp.propname = 'Mixture' ) or ( oc.objectclass = 'MaterialComponentClass' and ocp.propname = 'Constituent' ) or ( oc.objectclass = 'DocumentClass' and ocp.propname = 'Owner' ) ) )"; CswArbitrarySelect Select = _CswNbtSchemaModTrnsctn.makeCswArbitrarySelect( "29680_relationship_select", Sql ); DataTable Table = Select.getTable(); /* MaterialSynonymClass Material SizeClass Material ContainerClass Material InventoryLevelClass Material CofAMethodTemplateClass Material ManufacturerEquivalentPartClass Material ReceiptLotClass Material RequestContainerDispenseClass Material RequestContainerUpdateClass Material RequestMaterialCreateClass Material RequestMaterialDispenseClass Material */ foreach( DataRow Row in Table.Rows ) { CswNbtMetaDataNodeTypeProp Prop = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( CswConvert.ToInt32( Row["nodetypepropid"] ) ); CswNbtView View = _CswNbtSchemaModTrnsctn.restoreView( Prop.ViewId ); if( View.Root.ChildRelationships.Count == 0 ) { // The 'Default Filter' will filter out constituents for us if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.NodeTypeId.ToString() ) { View.AddViewRelationship( _CswNbtSchemaModTrnsctn.MetaData.getNodeType( CswConvert.ToInt32( Row["fkvalue"] ) ), true ); } else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.ObjectClassId.ToString() ) { View.AddViewRelationship( _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswConvert.ToInt32( Row["fkvalue"] ) ), true ); } else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.PropertySetId.ToString() ) { View.AddViewRelationship( _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswConvert.ToInt32( Row["fkvalue"] ) ), true ); } } else { foreach( CswNbtViewRelationship viewRel in View.Root.GetAllChildrenOfType( CswEnumNbtViewNodeType.CswNbtViewRelationship ) ) { if( CswConvert.ToInt32( Row["fkvalue"] ) == viewRel.SecondId ) { if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.NodeTypeId.ToString() ) { CswNbtMetaDataNodeType MaterialNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( viewRel.SecondId ); CswNbtViewProperty viewProp = View.AddViewProperty( viewRel, MaterialNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetMaterial.PropertyName.IsConstituent ) ); viewProp.ShowInGrid = false; View.AddViewPropertyFilter( viewProp, FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumTristate.True.ToString() ); } else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.ObjectClassId.ToString() ) { CswNbtMetaDataObjectClass MaterialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( viewRel.SecondId ); CswNbtViewProperty viewProp = View.AddViewProperty( viewRel, MaterialOC.getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.IsConstituent ) ); viewProp.ShowInGrid = false; View.AddViewPropertyFilter( viewProp, FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumTristate.True.ToString() ); } else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.PropertySetId.ToString() ) { CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( viewRel.SecondId ); CswNbtViewProperty viewProp = View.AddViewProperty( viewRel, MaterialPS.getObjectClasses().First().getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.IsConstituent ) ); viewProp.ShowInGrid = false; View.AddViewPropertyFilter( viewProp, FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumTristate.True.ToString() ); } } } // foreach( CswNbtViewRelationship viewRel in View.Root.GetAllChildrenOfType( CswEnumNbtViewNodeType.CswNbtViewRelationship ) ) } View.save(); } // foreach( DataRow relRow in relTable.Rows ) } // if( null != ConstituentNT && ChemicalNTs.Count > 0 ) } // update()
public override void update() { CswNbtMetaDataObjectClass UoMOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.UnitOfMeasureClass); CswNbtMetaDataObjectClass MethodOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MethodClass); CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet); CswNbtMetaDataObjectClass MethodCharacteristicOC = _CswNbtSchemaModTrnsctn.createObjectClass(CswEnumNbtObjectClass.MethodCharacteristicClass, "barchart.png", CswEnumAuditLevel.PlainAudit); _CswNbtSchemaModTrnsctn.createModuleObjectClassJunction(CswEnumNbtModuleName.MLM, MethodCharacteristicOC.ObjectClassId); CswNbtMetaDataObjectClassProp MethodOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.Method, FieldType = CswEnumNbtFieldType.Relationship, IsCompoundUnique = true, FkType = CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), FkValue = MethodOC.ObjectClassId, IsRequired = true }); CswNbtMetaDataObjectClassProp CharacteristicOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.Characteristic, FieldType = CswEnumNbtFieldType.List, IsCompoundUnique = true, IsRequired = true }); CswNbtMetaDataObjectClassProp ConstituentMaterialOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.ConstituentMaterial, FieldType = CswEnumNbtFieldType.Relationship, IsCompoundUnique = true, FkType = CswEnumNbtViewRelatedIdType.PropertySetId.ToString(), FkValue = MaterialPS.PropertySetId }); CswNbtMetaDataObjectClassProp ResultTypeOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.ResultType, FieldType = CswEnumNbtFieldType.List, ListOptions = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Quantitative + "," + CswNbtObjClassMethodCharacteristic.ResultTypeOption.Qualitative + "," + CswNbtObjClassMethodCharacteristic.ResultTypeOption.Match, IsRequired = true }); CswNbtMetaDataObjectClassProp ResultUnitsOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.ResultUnits, FieldType = CswEnumNbtFieldType.Relationship, FkType = CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), FkValue = UoMOC.ObjectClassId, FilterPropId = ResultTypeOCP.ObjectClassPropId, FilterMode = CswEnumNbtFilterMode.Equals, FilterSubfield = CswNbtFieldTypeRuleList.SubFieldName.Value, FilterValue = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Quantitative }); CswNbtMetaDataObjectClassProp ResultOptionsOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.ResultOptions, FieldType = CswEnumNbtFieldType.Memo, FilterPropId = ResultTypeOCP.ObjectClassPropId, FilterMode = CswEnumNbtFilterMode.Equals, FilterSubfield = CswNbtFieldTypeRuleList.SubFieldName.Value, FilterValue = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Qualitative }); CswNbtMetaDataObjectClassProp ObsoleteOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.Obsolete, FieldType = CswEnumNbtFieldType.Logical, IsRequired = true }); CswNbtMetaDataObjectClassProp PrecisionOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp { PropName = CswNbtObjClassMethodCharacteristic.PropertyName.Precision, FieldType = CswEnumNbtFieldType.Number, NumberMinValue = 0, NumberPrecision = 0, FilterPropId = ResultTypeOCP.ObjectClassPropId, FilterMode = CswEnumNbtFilterMode.Equals, FilterSubfield = CswNbtFieldTypeRuleList.SubFieldName.Value, FilterValue = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Quantitative }); } // update()
public override CswNbtViewEditorData HandleAction() { CswNbtViewEditorData Return = new CswNbtViewEditorData(); if (Request.Action == "Click") { CswNbtViewNode foundNode = Request.CurrentView.FindViewNodeByArbitraryId(Request.ArbitraryId); if (null != foundNode) { CswNbtView TempView = _CswNbtResources.ViewSelect.restoreView(CurrentView.ToString()); if (foundNode is CswNbtViewPropertyFilter) { Return.Step6.FilterNode = (CswNbtViewPropertyFilter)foundNode; } else if (foundNode is CswNbtViewRelationship) { CswNbtViewRelationship asRelationship = (CswNbtViewRelationship)foundNode; if (asRelationship.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId) { CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(asRelationship.SecondId); foreach (CswNbtViewProperty prop in _getProps(NodeType, TempView, new HashSet <string>(), asRelationship)) { if (((CswEnumNbtViewRenderingMode.Tree == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.List == Request.CurrentView.ViewMode) && CswEnumNbtFieldType.Button != prop.FieldType) || CswEnumNbtViewRenderingMode.Grid == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.Table == Request.CurrentView.ViewMode) { Return.Step6.Properties.Add(prop); } } } else if (asRelationship.SecondType == CswEnumNbtViewRelatedIdType.ObjectClassId) { CswNbtMetaDataObjectClass ObjClass = _CswNbtResources.MetaData.getObjectClass(asRelationship.SecondId); foreach (CswNbtViewProperty prop in _getProps(ObjClass, TempView, new HashSet <string>(), asRelationship)) { if (((CswEnumNbtViewRenderingMode.Tree == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.List == Request.CurrentView.ViewMode) && CswEnumNbtFieldType.Button != prop.FieldType) || CswEnumNbtViewRenderingMode.Grid == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.Table == Request.CurrentView.ViewMode) { Return.Step6.Properties.Add(prop); } } } else { CswNbtMetaDataPropertySet PropSet = _CswNbtResources.MetaData.getPropertySet(asRelationship.SecondId); HashSet <string> seenProps = new HashSet <string>(); foreach (CswNbtMetaDataObjectClass ObjClass in PropSet.getObjectClasses()) { foreach (CswNbtViewProperty prop in _getProps(ObjClass, TempView, seenProps, asRelationship).OrderBy(prop => prop.TextLabel)) { if (((CswEnumNbtViewRenderingMode.Tree == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.List == Request.CurrentView.ViewMode) && CswEnumNbtFieldType.Button != prop.FieldType) || CswEnumNbtViewRenderingMode.Grid == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.Table == Request.CurrentView.ViewMode) { Return.Step6.Properties.Add(prop); } } } } Return.Step6.Relationships = getViewChildRelationshipOptions(CurrentView, asRelationship.ArbitraryId); Return.Step6.RelationshipNode = asRelationship; } else if (foundNode is CswNbtViewRoot && CurrentView.Visibility != CswEnumNbtViewVisibility.Property) //can't add to view root on Prop view { TempView.Root.ChildRelationships.Clear(); foreach (CswNbtMetaDataNodeType NodeType in _CswNbtResources.MetaData.getNodeTypes().OrderBy(NT => NT.NodeTypeName)) { Return.Step6.Relationships.Add(TempView.AddViewRelationship(NodeType, false)); } foreach (CswNbtMetaDataObjectClass ObjClass in _CswNbtResources.MetaData.getObjectClasses().OrderBy(OC => OC.ObjectClass.Value)) { Return.Step6.Relationships.Add(TempView.AddViewRelationship(ObjClass, false)); } foreach (CswNbtMetaDataPropertySet PropSet in _CswNbtResources.MetaData.getPropertySets().OrderBy(PS => PS.Name)) { Return.Step6.Relationships.Add(TempView.AddViewRelationship(PropSet, false)); } Return.Step6.RootNode = (CswNbtViewRoot)foundNode; } else if (foundNode is CswNbtViewProperty && CswEnumNbtFieldType.Button != ((CswNbtViewProperty)foundNode).FieldType) { Return.Step6.PropertyNode = (CswNbtViewProperty)foundNode; Request.Relationship = (CswNbtViewRelationship)foundNode.Parent; //getFilterProps needs Request.Relationship to be populated _getFilterProps(Return); } } } else if (Request.Action == "AddProp") { ICswNbtMetaDataProp prop = null; if (Request.Property.Type == CswEnumNbtViewPropType.NodeTypePropId) { prop = _CswNbtResources.MetaData.getNodeTypeProp(Request.Property.NodeTypePropId); } else { prop = _CswNbtResources.MetaData.getObjectClassProp(Request.Property.ObjectClassPropId); } CswNbtViewRelationship relToAddTo = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.Relationship.ArbitraryId); CurrentView.AddViewProperty(relToAddTo, prop, CurrentView.getOrderedViewProps(false).Count + 1); } else if (Request.Action == "AddRelationship") { CswNbtViewRelationship relToAddTo = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.ArbitraryId); ICswNbtMetaDataProp prop = null; if (Request.Relationship.PropType == CswEnumNbtViewPropIdType.NodeTypePropId) { prop = _CswNbtResources.MetaData.getNodeTypeProp(Request.Relationship.PropId); } else { prop = _CswNbtResources.MetaData.getObjectClassProp(Request.Relationship.PropId); } CurrentView.AddViewRelationship(relToAddTo, Request.Relationship.PropOwner, prop, true); } else if (Request.Action == "AddFilter") { CswNbtViewProperty propNode = (CswNbtViewProperty)CurrentView.FindViewNodeByArbitraryId(Request.PropArbId); if (false == _hasFilter(propNode)) { CurrentView.AddViewPropertyFilter(propNode, Conjunction: (CswEnumNbtFilterConjunction)Request.FilterConjunction, SubFieldName: (CswEnumNbtSubFieldName)Request.FilterSubfield, FilterMode: (CswEnumNbtFilterMode)Request.FilterMode, Value: Request.FilterValue ); } Return.Step6.PropertyNode = propNode; } else if (Request.Action == "RemoveNode") { CswNbtViewNode nodeToRemove = CurrentView.FindViewNodeByArbitraryId(Request.ArbitraryId); CswNbtViewNode parent = nodeToRemove.Parent; parent.RemoveChild(nodeToRemove); if (parent.ViewNodeType == CswEnumNbtViewNodeType.CswNbtViewProperty) { Return.Step6.PropertyNode = (CswNbtViewProperty)parent; } else if (parent.ViewNodeType == CswEnumNbtViewNodeType.CswNbtViewRelationship) { Return.Step6.RelationshipNode = (CswNbtViewRelationship)parent; } else if (parent.ViewNodeType == CswEnumNbtViewNodeType.CswNbtViewRoot) { Return.Step6.RootNode = (CswNbtViewRoot)parent; } } else if (Request.Action == "UpdateView") { string grp = string.Empty; if (null != Request.Property) { CswNbtViewRelationship selectedPropsParent = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.Property.ParentArbitraryId); Request.Property.Parent = selectedPropsParent; CswNbtViewProperty rel = (CswNbtViewProperty)CurrentView.FindViewNodeByArbitraryId(Request.Property.ArbitraryId); if (null == rel) { CswNbtViewRelationship parent = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.Property.ParentArbitraryId); ICswNbtMetaDataProp prop = null; if (Request.Property.Type == CswEnumNbtViewPropType.NodeTypePropId) { prop = _CswNbtResources.MetaData.getNodeTypeProp(Request.Property.NodeTypePropId); } else { prop = _CswNbtResources.MetaData.getObjectClassProp(Request.Property.ObjectClassPropId); } rel = CurrentView.AddViewProperty(parent, prop); } grp = rel.TextLabel; } CurrentView.GridGroupByCol = grp; } base.Finalize(Return); return(Return); }