public override void update() { CswNbtMetaDataObjectClass DocumentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.DocumentClass ); CswNbtMetaDataNodeType SDSNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( DocumentOC ) { NodeTypeName = "SDS Document", Category = "Materials" } ); CswNbtMetaDataNodeTypeProp TradeNameNTP = SDSNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Owner ); CswNbtMetaDataNodeType ChemicalNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Chemical" ); if( null != ChemicalNT ) { TradeNameNTP.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), ChemicalNT.NodeTypeId ); } TradeNameNTP.PropName = "Tradename"; CswNbtMetaDataNodeTypeProp RevisionDateNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( SDSNT, _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.DateTime ), "Revision Date" ) ); CswNbtMetaDataNodeTypeProp LanguageNTP = SDSNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Language ); LanguageNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add, true, SDSNT.getFirstNodeTypeTab().TabId ); CswNbtMetaDataNodeTypeProp FormatNTP = SDSNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Format ); FormatNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add, true, SDSNT.getFirstNodeTypeTab().TabId ); SDSNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassDocument.PropertyName.Title ) ); foreach( CswNbtMetaDataNodeType DocNT in DocumentOC.getNodeTypes() ) { CswNbtMetaDataNodeTypeProp DocClassNTP = DocNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.DocumentClass ); DocClassNTP.removeFromAllLayouts(); } } //Update()
public override void update() { //Create Time Unit view and apply it to every Expiration Interval ObjectClassprop //Create the new view CswNbtMetaDataNodeType TimeNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Time Unit" ); //Set ExpirationInterval ObjectClassProp default FKValue to Time Unit NodeType (so that new material NodeTypes will start with this Unit NodeType restriction) CswNbtMetaDataObjectClass MaterialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.MaterialClass ); CswNbtMetaDataObjectClassProp ExpirationInterval = _CswNbtSchemaModTrnsctn.MetaData.getObjectClassProp( MaterialOC.ObjectClassId, CswNbtObjClassMaterial.ExpirationIntervalPropertyName ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( ExpirationInterval, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.isfk, true ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( ExpirationInterval, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.fktype, NbtViewRelatedIdType.NodeTypeId.ToString() ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( ExpirationInterval, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.fkvalue, TimeNT.NodeTypeId ); //Update existing ExpirationInterval NodeTypeProps to use new Time view foreach( CswNbtMetaDataNodeType NodeType in MaterialOC.getNodeTypes() ) { CswNbtMetaDataNodeTypeProp ExpInt = NodeType.getNodeTypeProp( "Expiration Interval" ); CswNbtView TimeView = _CswNbtSchemaModTrnsctn.restoreView( ExpInt.ViewId ); TimeView.Root.ChildRelationships.Clear(); TimeView.ViewName = "CswNbtNodeTypePropExpirationInterval_" + ExpInt.PropId.ToString(); TimeView.AddViewRelationship( TimeNT, true ); TimeView.save(); ExpInt.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), TimeNT.NodeTypeId ); } }//Update()
public override void update() { //add supplier and catalog number to size name template CswNbtMetaDataNodeType sizeNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Size" ); if( null != sizeNT ) { CswNbtMetaDataNodeTypeProp materialNTP = sizeNT.getNodeTypeProp( CswNbtObjClassSize.MaterialPropertyName ); CswNbtMetaDataObjectClass materialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( materialNTP.FKValue ); CswNbtMetaDataObjectClassProp supplierOCP = materialOC.getObjectClassProp( CswNbtObjClassMaterial.SupplierPropertyName ); CswNbtMetaDataObjectClass sizeOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.SizeClass ); CswNbtMetaDataObjectClassProp materialOCP = sizeOC.getObjectClassProp( CswNbtObjClassSize.MaterialPropertyName ); CswNbtMetaDataNodeTypeTab sizeTab = _getTab( sizeNT, "Size", 1 ); CswNbtMetaDataNodeTypeProp sizeSupplierNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( sizeNT, CswNbtMetaDataFieldType.NbtFieldType.PropertyReference, "Supplier", sizeTab.TabId ); sizeSupplierNTP.SetFK( NbtViewPropIdType.ObjectClassPropId.ToString(), materialOCP.PropId, NbtViewPropIdType.ObjectClassPropId.ToString(), supplierOCP.PropId ); string templateText = sizeNT.NameTemplateValue; templateText += CswNbtMetaData.MakeTemplateEntry( sizeSupplierNTP.PropName ); //add supplier (NTP) name to template templateText += " " + CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassSize.CatalogNoPropertyName ); //add catalog number to name template sizeNT.setNameTemplateText( templateText ); } }//Update()
public override void update() { //New Document NT CswNbtMetaDataObjectClass ReceiptLotOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReceiptLotClass ); CswNbtMetaDataObjectClass CofADocOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.CofADocumentClass ); CswNbtMetaDataNodeType CofANT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "C of A Document" ) ?? _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeTypeDeprecated( CofADocOC.ObjectClassId, "C of A Document", "Materials" ); _CswNbtSchemaModTrnsctn.createModuleNodeTypeJunction( CswEnumNbtModuleName.CofA, CofANT.NodeTypeId ); //Default Title CswNbtMetaDataNodeTypeProp TitleNTP = CofANT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Title ); TitleNTP.DefaultValue.AsText.Text = "Certificate of Analysis"; TitleNTP.removeFromLayout( CswEnumNbtLayoutType.Add ); //Set Owner FK to ReceiptLot OC (This needs to be done explicitly for the NTP - see Case 26605) CswNbtMetaDataNodeTypeProp OwnerNTP = CofANT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Owner ); OwnerNTP.PropName = "Receipt Lot"; OwnerNTP.SetFK( CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), ReceiptLotOC.ObjectClassId ); //Set Prop Filters (This needs to be done explicitly for the NTP - see Case 26605) CswNbtMetaDataNodeTypeProp FileTypeNTP = CofANT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.FileType ); CswNbtMetaDataNodeTypeProp FileNTP = CofANT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.File ); FileNTP.setFilter( FileTypeNTP, FileTypeNTP.getFieldTypeRule().SubFields.Default, CswEnumNbtFilterMode.Equals, CswNbtPropertySetDocument.CswEnumDocumentFileTypes.File ); CswNbtMetaDataNodeTypeProp LinkNTP = CofANT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Link ); LinkNTP.setFilter( FileTypeNTP, FileTypeNTP.getFieldTypeRule().SubFields.Default, CswEnumNbtFilterMode.Equals, CswNbtPropertySetDocument.CswEnumDocumentFileTypes.Link ); //NT Permission CswNbtObjClassRole RoleNode = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "CISPro_Admin" ); if( null != RoleNode ) { _CswNbtSchemaModTrnsctn.Permit.set( NTPermissions, CofANT, RoleNode, true ); } } // update()
private void _createNewSDSDocNT() { CswEnumNbtNodeTypePermission[] NTPermissions = { CswEnumNbtNodeTypePermission.View, CswEnumNbtNodeTypePermission.Create, CswEnumNbtNodeTypePermission.Edit, CswEnumNbtNodeTypePermission.Delete }; //New Document NT CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ); CswNbtMetaDataObjectClass DocumentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.SDSDocumentClass ); CswNbtMetaDataNodeType SDSNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( DocumentOC.ObjectClassId, "SDS Document", "Materials" ); _CswNbtSchemaModTrnsctn.createModuleNodeTypeJunction( CswEnumNbtModuleName.SDS, SDSNT.NodeTypeId ); //Default Title CswNbtMetaDataNodeTypeProp TitleNTP = SDSNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Title ); TitleNTP.DefaultValue.AsText.Text = "Safety Data Sheet"; TitleNTP.removeFromLayout( CswEnumNbtLayoutType.Add ); //Set Owner FK to Material OC (This needs to be done explicitly for the NTP - see Case 26605) CswNbtMetaDataNodeTypeProp OwnerNTP = SDSNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.Owner ); OwnerNTP.PropName = "Material"; OwnerNTP.SetFK( CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), ChemicalOC.ObjectClassId ); //NT Permission CswNbtObjClassRole RoleNode = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "CISPro_Admin" ); if( null != RoleNode ) { _CswNbtSchemaModTrnsctn.Permit.set( NTPermissions, SDSNT, RoleNode, true ); } }
} // update() private void setPropFK( String RelatedClassName, String RelatedPropName, String RelatedNodeTypeName, bool isChemicalOnly = false ) { String RelatedIdType = isChemicalOnly ? CswEnumNbtViewRelatedIdType.ObjectClassId.ToString() : CswEnumNbtViewRelatedIdType.PropertySetId.ToString(); Int32 RelatedId = isChemicalOnly ? ChemicalOC.ObjectClassId : MaterialPS.PropertySetId; CswNbtMetaDataObjectClass RelatedOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( RelatedClassName ); CswNbtMetaDataObjectClassProp MaterialOCP = RelatedOC.getObjectClassProp( RelatedPropName ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( MaterialOCP, CswEnumNbtObjectClassPropAttributes.fktype, RelatedIdType ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( MaterialOCP, CswEnumNbtObjectClassPropAttributes.fkvalue, RelatedId ); CswNbtMetaDataNodeType RelatedNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RelatedNodeTypeName ); if( null != RelatedNT ) { CswNbtMetaDataNodeTypeProp MaterialNTP = RelatedNT.getNodeTypePropByObjectClassProp( RelatedPropName ); MaterialNTP.SetFK( RelatedIdType, RelatedId ); } }
/// <summary> /// The actual update call /// </summary> public override void update() { CswNbtMetaDataObjectClass UoMOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.UnitOfMeasureClass); CswNbtView UoMView = UoMOC.CreateDefaultView(); CswNbtMetaDataObjectClass RegListCasNoOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.RegulatoryListCasNoClass); CswNbtMetaDataObjectClassProp TPQOCP = RegListCasNoOC.getObjectClassProp(CswNbtObjClassRegulatoryListCasNo.PropertyName.TPQ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp(TPQOCP, CswEnumNbtObjectClassPropAttributes.isfk, true); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp(TPQOCP, CswEnumNbtObjectClassPropAttributes.fktype, CswEnumNbtViewRelatedIdType.ObjectClassId.ToString()); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp(TPQOCP, CswEnumNbtObjectClassPropAttributes.fkvalue, UoMOC.ObjectClassId); foreach (CswNbtMetaDataNodeType RegListCasNoNT in RegListCasNoOC.getNodeTypes()) { CswNbtMetaDataNodeTypeProp TPQNTP = RegListCasNoNT.getNodeTypePropByObjectClassProp(TPQOCP); TPQNTP.ViewId = UoMView.ViewId; TPQNTP.SetFK(CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), UoMOC.ObjectClassId); } }
public override void update() { CswPrimaryKey HMISTotalsReportId = null; CswPrimaryKey HMISMaterialsReportId = null; CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass ); CswNbtSearch FindReport = _CswNbtSchemaModTrnsctn.CswNbtSearch; FindReport.addFilter( ReportOC, false ); FindReport.SearchType = CswEnumSqlLikeMode.Begins; FindReport.SearchTerm = "HMIS"; ICswNbtTree SearchResults = FindReport.Results(); for( Int32 r = 0; r < SearchResults.getChildNodeCount(); r++ ) { SearchResults.goToNthChild( r ); string ReportName = SearchResults.getNodeNameForCurrentPosition(); if( ReportName == "HMIS Totals" ) { HMISTotalsReportId = SearchResults.getNodeIdForCurrentPosition(); } if( ReportName == "HMIS Materials" ) { HMISMaterialsReportId = SearchResults.getNodeIdForCurrentPosition(); } SearchResults.goToParentNode(); } // for( Int32 r = 0; r < SearchResults.getChildNodeCount(); r++ ) CswNbtMetaDataObjectClass ControlZoneOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ControlZoneClass ); foreach( CswNbtMetaDataNodeType ControlZoneNT in ControlZoneOC.getNodeTypes() ) { if( CswTools.IsPrimaryKey( HMISTotalsReportId ) ) { CswNbtMetaDataNodeTypeProp HMISTotalsNTP = ControlZoneNT.getNodeTypePropByObjectClassProp( CswNbtObjClassControlZone.PropertyName.HMISTotals ); HMISTotalsNTP.SetFK( "nodeid", HMISTotalsReportId.PrimaryKey ); HMISTotalsNTP.removeFromLayout( CswEnumNbtLayoutType.Add ); } if( CswTools.IsPrimaryKey( HMISMaterialsReportId ) ) { CswNbtMetaDataNodeTypeProp HMISMaterialsNTP = ControlZoneNT.getNodeTypePropByObjectClassProp( CswNbtObjClassControlZone.PropertyName.HMISMaterials ); HMISMaterialsNTP.SetFK( "nodeid", HMISMaterialsReportId.PrimaryKey ); HMISMaterialsNTP.removeFromLayout( CswEnumNbtLayoutType.Add ); } } // foreach( CswNbtMetaDataNodeType ControlZoneNT in ControlZoneOC.getNodeTypes() ) } // update()
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() { #region NodeTypes CswNbtMetaDataObjectClass RequestOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RequestClass ); string RequestNodeTypeName = "Request"; CswNbtMetaDataNodeType RequestNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestNodeTypeName ); if( null != RequestNt && RequestNt.ObjectClassId != RequestOc.ObjectClassId ) { RequestNodeTypeName = "CISPro Request"; RequestNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestNodeTypeName ); } if( null != RequestNt && RequestNt.ObjectClassId != RequestOc.ObjectClassId ) { throw new CswDniException( ErrorType.Error, "Could not create a unique Request NodeType", "Request nodetypes named 'Request' and 'CISPro Request' already exist." ); } if( null == RequestNt ) { RequestNt = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( RequestOc ) { Category = "Requests", NodeTypeName = RequestNodeTypeName } ); } CswNbtMetaDataNodeTypeProp NameNtp = RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.Name.ToString() ); CswNbtMetaDataNodeTypeProp UserNtp = RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.Requestor.ToString() ); CswNbtMetaDataNodeTypeProp DateNtp = RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.SubmittedDate.ToString() ); RequestNt.NameTemplateValue = ""; RequestNt.addNameTemplateText( NameNtp.PropName ); RequestNt.addNameTemplateText( UserNtp.PropName ); RequestNt.addNameTemplateText( DateNtp.PropName ); CswNbtMetaDataObjectClass RequestItemOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RequestItemClass ); string RequestItemNodeTypeName = "Request Item"; CswNbtMetaDataNodeType RequestItemNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestItemNodeTypeName ); if( null != RequestItemNt && RequestItemNt.ObjectClassId != RequestItemOc.ObjectClassId ) { RequestItemNodeTypeName = "CISPro Request Item"; RequestNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestItemNodeTypeName ); } if( null != RequestItemNt && RequestItemNt.ObjectClassId != RequestItemOc.ObjectClassId ) { throw new CswDniException( ErrorType.Error, "Could not create a unique Request Item NodeType", "Request nodetypes named 'Request Item' and 'CISPro Request Item' already exist." ); } if( null == RequestItemNt ) { RequestItemNt = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType(new CswNbtWcfMetaDataModel.NodeType(RequestItemOc) { Category = "Requests", NodeTypeName = RequestItemNodeTypeName }); } CswNbtMetaDataNodeTypeProp RequestItemRequestNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Request ); RequestItemRequestNtp.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), RequestNt.NodeTypeId ); CswNbtMetaDataNodeTypeProp TypeNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Type ); CswNbtMetaDataNodeTypeProp StatusNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Status ); CswNbtMetaDataNodeTypeProp ExternalOrderNoNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.ExternalOrderNumber ); CswNbtMetaDataNodeTypeProp QuantityNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Quantity ); CswNbtMetaDataNodeTypeProp CountNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Count ); CswNbtMetaDataNodeTypeProp SizeNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Size ); CswNbtMetaDataNodeTypeProp MaterialNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Material ); CswNbtMetaDataNodeTypeProp ContainerNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Container ); CswNbtMetaDataNodeTypeProp LocationNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Location ); CswNbtMetaDataNodeTypeProp NumberNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Number ); Int32 SequenceId = _CswNbtSchemaModTrnsctn.makeSequence( new CswSequenceName( "Request Items" ), "R", "", 6, 1 ); NumberNtp.setSequence( SequenceId ); RequestItemNt.addNameTemplateText( RequestItemRequestNtp.PropName ); RequestItemNt.addNameTemplateText( NumberNtp.PropName ); RequestItemNt.addNameTemplateText( TypeNtp.PropName ); #endregion NodeTypes #region Tabs CswNbtMetaDataNodeTypeTab RequestItemsNtt = RequestNt.getNodeTypeTab( "Request Items" ); if( null == RequestItemsNtt ) { RequestItemsNtt = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( RequestNt, "Request Items", RequestNt.getNodeTypeTabIds().Count ); } CswNbtMetaDataFieldType GridFt = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Grid ); CswNbtMetaDataNodeTypeProp RequestItemsGridNtp = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( RequestNt, GridFt, "Request Items" ) { TabId = RequestItemsNtt.TabId } ); CswNbtView GridView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( RequestItemsGridNtp.ViewId ); GridView.ViewName = "Requested Items"; GridView.Visibility = NbtViewVisibility.Property; GridView.ViewMode = NbtViewRenderingMode.Grid; GridView.Category = "Requests"; GridView.Root.ChildRelationships.Clear(); CswNbtViewRelationship RequestRel = GridView.AddViewRelationship( RequestNt, false ); CswNbtViewRelationship RequestItemRel = GridView.AddViewRelationship( RequestRel, NbtViewPropOwnerType.Second, RequestItemRequestNtp, false ); GridView.AddViewProperty( RequestItemRel, NumberNtp ); GridView.AddViewProperty( RequestItemRel, TypeNtp ); GridView.AddViewProperty( RequestItemRel, ExternalOrderNoNtp ); GridView.AddViewProperty( RequestItemRel, StatusNtp ); GridView.AddViewProperty( RequestItemRel, QuantityNtp ); GridView.AddViewProperty( RequestItemRel, CountNtp ); GridView.AddViewProperty( RequestItemRel, SizeNtp ); GridView.AddViewProperty( RequestItemRel, MaterialNtp ); GridView.AddViewProperty( RequestItemRel, ContainerNtp ); GridView.AddViewProperty( RequestItemRel, LocationNtp ); GridView.save(); #endregion Tabs #region Views string MyRequestViewName = "My Request History"; bool UniqueView = _CswNbtSchemaModTrnsctn.restoreViews( MyRequestViewName ).Count == 0; if( false == UniqueView ) { MyRequestViewName = "My CISPro Request History"; UniqueView = _CswNbtSchemaModTrnsctn.restoreViews( MyRequestViewName ).Count == 0; } if( UniqueView ) { CswNbtView MyRequestsView = _CswNbtSchemaModTrnsctn.makeView(); MyRequestsView.makeNew( MyRequestViewName, NbtViewVisibility.Global ); MyRequestsView.Category = "Requests"; MyRequestsView.ViewMode = NbtViewRenderingMode.Tree; CswNbtViewRelationship RequestVr = MyRequestsView.AddViewRelationship( RequestNt, true ); MyRequestsView.AddViewPropertyAndFilter( RequestVr, RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.SubmittedDate.ToString() ), FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotNull ); MyRequestsView.save(); } #endregion Views }//Update()
public override void update() { CswNbtMetaDataObjectClass GenericOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.GenericClass ); CswNbtMetaDataObjectClass MaterialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.MaterialClass ); CswNbtMetaDataFieldType TextFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Text ); CswNbtMetaDataFieldType ListFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.List ); CswNbtMetaDataFieldType GridFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Grid ); CswNbtMetaDataFieldType ImageListFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.ImageList ); CswNbtMetaDataFieldType RelationshipFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Relationship ); //// Jurisdiction NodeType //CswNbtMetaDataNodeType JurisdictionNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( GenericOC ) //{ // NodeTypeName = "Jurisdiction", // Category = "System", // IconFileName = "globe.gif" //} ); //CswNbtMetaDataNodeTypeProp JurisdictionNameNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( JurisdictionNT, TextFT, "Name" ) ); //JurisdictionNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( "Name" ) ); //// Default Jurisdictions //CswNbtNode JurisNorthAmericaNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( JurisdictionNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode ); //JurisNorthAmericaNode.Properties[JurisdictionNameNTP].AsText.Text = "North America"; //JurisNorthAmericaNode.postChanges( false ); //CswNbtNode JurisEuropeNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( JurisdictionNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode ); //JurisEuropeNode.Properties[JurisdictionNameNTP].AsText.Text = "Europe"; //JurisEuropeNode.postChanges( false ); // GHS Phrase NodeType CswNbtMetaDataNodeType GHSPhraseNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( GenericOC ) { NodeTypeName = "GHS Phrase", Category = "System", IconFileName = "group.gif" } ); CswNbtMetaDataNodeTypeProp GHSPhraseCodeNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Code" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseCategoryNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, ListFT, "Category" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseEnglishNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "English" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseChineseNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Chinese" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseDanishNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Danish" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseDutchNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Dutch" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseFrenchNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "French" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseGermanNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "German" ) ); CswNbtMetaDataNodeTypeProp GHSPhraseSpanishNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Spanish" ) ); GHSPhraseCategoryNTP.ListOptions = "Physical,Health,Environmental"; GHSPhraseNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( "Code" ) ); _CswNbtSchemaModTrnsctn.createModuleNodeTypeJunction( CswNbtResources.CswNbtModule.CISPro, GHSPhraseNT.NodeTypeId ); // GHS NodeType CswNbtMetaDataNodeType GHSNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( GenericOC ) { NodeTypeName = "GHS", Category = "Materials", IconFileName = "ball_redS.gif" } ); CswNbtMetaDataNodeTypeProp GHSTypeNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, ListFT, "Type" ) { IsRequired = true } ); CswNbtMetaDataNodeTypeProp GHSMaterialNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, RelationshipFT, "Material" ) { IsRequired = true } ); CswNbtMetaDataNodeTypeProp GHSGHSPhraseNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, RelationshipFT, "GHS Phrase" ) { IsRequired = true } ); //CswNbtMetaDataNodeTypeProp GHSJurisdictionNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, RelationshipFT, "Jurisdiction" ) { IsRequired = true } ); CswNbtMetaDataNodeTypeProp GHSJurisdictionNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, ListFT, "Jurisdiction" ) { IsRequired = true } ); GHSTypeNTP.ListOptions = "Class Code, Label Code"; GHSMaterialNTP.SetFK( NbtViewRelatedIdType.ObjectClassId.ToString(), MaterialOC.ObjectClassId ); GHSGHSPhraseNTP.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), GHSPhraseNT.NodeTypeId ); //GHSJurisdictionNTP.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), JurisdictionNT.NodeTypeId ); GHSJurisdictionNTP.ListOptions = "North America, China, Europe, Japan"; _CswNbtSchemaModTrnsctn.createModuleNodeTypeJunction( CswNbtResources.CswNbtModule.CISPro, GHSNT.NodeTypeId ); // Chemical GHS Tab CswNbtMetaDataNodeType ChemicalNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Chemical" ); if( null != ChemicalNT ) { foreach( CswNbtMetaDataNodeTypeTab Tab in ChemicalNT.getNodeTypeTabs() ) { if( Tab.TabOrder >= 3 ) Tab.TabOrder += 1; } CswNbtMetaDataNodeTypeTab GHSTab = ChemicalNT.getNodeTypeTab( "GHS" ); if( null == GHSTab ) { GHSTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( ChemicalNT, "GHS", 3 ); } GHSTab.TabOrder = 3; // Chemical GHS properties CswNbtMetaDataNodeTypeProp ChemicalGHSClassificationNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, ListFT, "GHS Classification" ) ); CswNbtMetaDataNodeTypeProp ChemicalGHSClassCodesNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, GridFT, "GHS Class Codes" ) ); CswNbtMetaDataNodeTypeProp ChemicalGHSSignalWordNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, ListFT, "GHS Signal Word" ) ); CswNbtMetaDataNodeTypeProp ChemicalGHSLabelCodesNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, GridFT, "GHS Label Codes" ) ); CswNbtMetaDataNodeTypeProp ChemicalGHSPictosNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, ImageListFT, "GHS Pictos" ) ); CswCommaDelimitedString GHSClasses = new CswCommaDelimitedString(){ "Category 1", "Category 1 / 1A / 1B", "Category 1A", "Category 1A / 1B", "Category 1A / 1B / 1C", "Category 1B", "Category 2", "Category 2 (skin)/2A (eye)", "Category 2A", "Category 2B", "Category 3", "Category 4", "Category 5", "Type A", "Type B", "Type C&D", "Type E&F", "Compressed Gas", "Liquified Gas", "Dissolved Gas", "Refridgerated Liquidified Gas" }; ChemicalGHSClassificationNTP.ListOptions = GHSClasses.ToString(); ChemicalGHSSignalWordNTP.ListOptions = "Danger,Warning"; ChemicalGHSClassificationNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); ChemicalGHSClassCodesNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); ChemicalGHSSignalWordNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); ChemicalGHSLabelCodesNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); ChemicalGHSPictosNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); ChemicalGHSClassificationNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 1, 1, "Hazard Classification" ); ChemicalGHSClassCodesNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 2, 1, "Hazard Classification" ); ChemicalGHSSignalWordNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 3, 1, "Hazard Label" ); ChemicalGHSLabelCodesNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 4, 1, "Hazard Label" ); ChemicalGHSPictosNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 5, 1, "Hazard Label" ); // Grid Views CswNbtView GHSClassCodesView = _CswNbtSchemaModTrnsctn.restoreView( ChemicalGHSClassCodesNTP.ViewId ); GHSClassCodesView.Root.ChildRelationships.Clear(); CswNbtViewRelationship ChemicalVR1 = GHSClassCodesView.AddViewRelationship( ChemicalNT, false ); CswNbtViewRelationship GHSVR1 = GHSClassCodesView.AddViewRelationship( ChemicalVR1, NbtViewPropOwnerType.Second, GHSMaterialNTP, true ); CswNbtViewRelationship GHSPhraseVR1 = GHSClassCodesView.AddViewRelationship( GHSVR1, NbtViewPropOwnerType.First, GHSGHSPhraseNTP, true ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseCodeNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseCategoryNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseEnglishNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseChineseNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseDanishNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseDutchNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseFrenchNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseGermanNTP ); GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseSpanishNTP ); GHSClassCodesView.AddViewPropertyAndFilter( GHSVR1, GHSTypeNTP, Value: "Class Code" ); GHSClassCodesView.AddViewPropertyAndFilter( GHSVR1, GHSJurisdictionNTP, Value: "North America", ShowAtRuntime: true ); GHSClassCodesView.save(); CswNbtView GHSLabelCodesView = _CswNbtSchemaModTrnsctn.restoreView( ChemicalGHSLabelCodesNTP.ViewId ); GHSLabelCodesView.Root.ChildRelationships.Clear(); CswNbtViewRelationship ChemicalVR2 = GHSLabelCodesView.AddViewRelationship( ChemicalNT, false ); CswNbtViewRelationship GHSVR2 = GHSLabelCodesView.AddViewRelationship( ChemicalVR2, NbtViewPropOwnerType.Second, GHSMaterialNTP, true ); CswNbtViewRelationship GHSPhraseVR2 = GHSLabelCodesView.AddViewRelationship( GHSVR2, NbtViewPropOwnerType.First, GHSGHSPhraseNTP, true ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseCodeNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseCategoryNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseEnglishNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseChineseNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseDanishNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseDutchNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseFrenchNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseGermanNTP ); GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseSpanishNTP ); GHSLabelCodesView.AddViewPropertyAndFilter( GHSVR2, GHSTypeNTP, Value: "Label Code" ); GHSLabelCodesView.AddViewPropertyAndFilter( GHSVR2, GHSJurisdictionNTP, Value: "North America", ShowAtRuntime: true ); GHSLabelCodesView.save(); // Picto Options ChemicalGHSPictosNTP.Extended = "true"; // allow multiple values ChemicalGHSPictosNTP.TextAreaColumns = 100; ChemicalGHSPictosNTP.TextAreaRows = 100; CswDelimitedString PictoNames = new CswDelimitedString( '\n' ) { "Chemical", "Explosive", "Flammable", "Natural", "Oxidizer", "Danger", "X" }; CswDelimitedString PictoPaths = new CswDelimitedString( '\n' ) { //"Images/cispro/1-1.gif", //"Images/cispro/1-2.gif", //"Images/cispro/1-3.gif", //"Images/cispro/1-4.gif", //"Images/cispro/1-5.gif", //"Images/cispro/1-6.gif", //"Images/cispro/5-2.gif", "Images/cispro/acide.gif", //"Images/cispro/acide2.gif", //"Images/cispro/blan-red.gif", //"Images/cispro/bleu4.gif", //"Images/cispro/bleu4-noir.gif", "Images/cispro/bottle.gif", "Images/cispro/exclam.gif", "Images/cispro/explos.gif", "Images/cispro/flamme.gif", //"Images/cispro/jaune5-1.gif", "Images/cispro/pollu.gif", "Images/cispro/rondflam.gif", //"Images/cispro/rouge2.gif", //"Images/cispro/rouge2_noir.gif", //"Images/cispro/rouge3.gif", //"Images/cispro/rouge3_noir.gif", "Images/cispro/silouete.gif", "Images/cispro/skull.gif" //"Images/cispro/skull_2.gif", //"Images/cispro/skull6.gif", //"Images/cispro/stripes.gif", //"Images/cispro/vert.gif" }; ChemicalGHSPictosNTP.ListOptions = PictoNames.ToString(); ChemicalGHSPictosNTP.ValueOptions = PictoPaths.ToString(); } //GHS Phrase nodes Dictionary<Int32, string> GHSPhraseCodes = new Dictionary<Int32, string>(); //Physical GHSPhraseCodes.Add( 200, "Unstable explosive" ); GHSPhraseCodes.Add( 201, "Explosive; mass explosion hazard" ); GHSPhraseCodes.Add( 202, "Explosive; severe projection hazard" ); GHSPhraseCodes.Add( 203, "Explosive; fire, blast or projection hazard" ); GHSPhraseCodes.Add( 204, "Fire or projection hazard" ); GHSPhraseCodes.Add( 205, "May mass explode in fire" ); GHSPhraseCodes.Add( 220, "Extremely flammable gas" ); GHSPhraseCodes.Add( 221, "Flammable gas" ); GHSPhraseCodes.Add( 222, "Extremely flammable material" ); GHSPhraseCodes.Add( 223, "Flammable material" ); GHSPhraseCodes.Add( 224, "Extremely flammable liquid and vapour" ); GHSPhraseCodes.Add( 225, "Highly flammable liquid and vapour" ); GHSPhraseCodes.Add( 226, "Flammable liquid and vapour" ); GHSPhraseCodes.Add( 227, "Combustible liquid" ); GHSPhraseCodes.Add( 228, "Flammable solid" ); GHSPhraseCodes.Add( 240, "Heating may cause an explosion" ); GHSPhraseCodes.Add( 241, "Heating may cause a fire or explosion" ); GHSPhraseCodes.Add( 242, "Heating may cause a fire" ); GHSPhraseCodes.Add( 250, "Catches fire spontaneously if exposed to air" ); GHSPhraseCodes.Add( 251, "Self-heating; may catch fire" ); GHSPhraseCodes.Add( 252, "Self-heating in large quantities; may catch fire" ); GHSPhraseCodes.Add( 260, "In contact with water releases flammable gases which may ignite spontaneously" ); GHSPhraseCodes.Add( 261, "In contact with water releases flammable gas" ); GHSPhraseCodes.Add( 270, "May cause or intensify fire; oxidizer" ); GHSPhraseCodes.Add( 271, "May cause fire or explosion; strong oxidizer" ); GHSPhraseCodes.Add( 272, "May intensify fire; oxidizer" ); GHSPhraseCodes.Add( 280, "Contains gas under pressure; may explode if heated" ); GHSPhraseCodes.Add( 281, "Contains refrigerated gas; may cause cryogenic burns or injury" ); GHSPhraseCodes.Add( 290, "May be corrosive to metals" ); //Health GHSPhraseCodes.Add( 300, "Fatal if swallowed" ); GHSPhraseCodes.Add( 301, "Toxic if swallowed" ); GHSPhraseCodes.Add( 302, "Harmful if swallowed" ); GHSPhraseCodes.Add( 303, "May be harmful if swallowed" ); GHSPhraseCodes.Add( 304, "May be fatal if swallowed and enters airways" ); GHSPhraseCodes.Add( 305, "May be harmful if swallowed and enters airways" ); GHSPhraseCodes.Add( 310, "Fatal in contact with skin" ); GHSPhraseCodes.Add( 311, "Toxic in contact with skin" ); GHSPhraseCodes.Add( 312, "Harmful in contact with skin" ); GHSPhraseCodes.Add( 313, "May be harmful in contact with skin" ); GHSPhraseCodes.Add( 314, "Causes severe skin burns and eye damage" ); GHSPhraseCodes.Add( 315, "Causes skin irritation" ); GHSPhraseCodes.Add( 316, "Causes mild skin irritation" ); GHSPhraseCodes.Add( 317, "May cause an allergic skin reaction" ); GHSPhraseCodes.Add( 318, "Causes serious eye damage" ); GHSPhraseCodes.Add( 319, "Causes serious eye irritation" ); GHSPhraseCodes.Add( 320, "Causes eye irritation" ); GHSPhraseCodes.Add( 330, "Fatal if inhaled" ); GHSPhraseCodes.Add( 331, "Toxic if inhaled" ); GHSPhraseCodes.Add( 332, "Harmful if inhaled" ); GHSPhraseCodes.Add( 333, "May be harmful if inhaled" ); GHSPhraseCodes.Add( 334, "May cause allergy or asthma symptoms of breathing difficulties if inhaled" ); GHSPhraseCodes.Add( 335, "May cause respiratory irritation" ); GHSPhraseCodes.Add( 336, "May cause drowsiness or dizziness" ); GHSPhraseCodes.Add( 340, "May cause genetic defects" ); GHSPhraseCodes.Add( 341, "Suspected of causing genetic defects" ); GHSPhraseCodes.Add( 350, "May cause cancer" ); GHSPhraseCodes.Add( 351, "Suspected of causing cancer" ); GHSPhraseCodes.Add( 360, "May damage fertility or the unborn child" ); GHSPhraseCodes.Add( 361, "Suspected of damaging fertility or the unborn child" ); GHSPhraseCodes.Add( 362, "May cause harm to breast-fed children" ); GHSPhraseCodes.Add( 370, "Causes damage to organs" ); GHSPhraseCodes.Add( 371, "May cause damage to organs" ); GHSPhraseCodes.Add( 372, "Causes damage to organs through prolonged or repeated exposure" ); GHSPhraseCodes.Add( 373, "May cause damage to organs through prolonged or repeated exposure" ); // Environmental GHSPhraseCodes.Add( 400, "Very toxic to aquatic life" ); GHSPhraseCodes.Add( 401, "Toxic to aquatic life" ); GHSPhraseCodes.Add( 402, "Harmful to aquatic life" ); GHSPhraseCodes.Add( 410, "Very toxic to aquatic life with long lasting effects" ); GHSPhraseCodes.Add( 411, "Toxic to aquatic life with long lasting effects" ); GHSPhraseCodes.Add( 412, "Harmful to aquatic life with long lasting effects" ); GHSPhraseCodes.Add( 413, "May cause long lasting harmful effects to aquatic life" ); foreach( Int32 Code in GHSPhraseCodes.Keys ) { string Category = "Physical"; if( Code > 299 ) { Category = "Health"; } else if( Code > 399 ) { Category = "Environmental"; } CswNbtNode GHSPhraseNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( GHSPhraseNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode ); GHSPhraseNode.Properties[GHSPhraseCodeNTP].AsText.Text = "H" + Code.ToString(); GHSPhraseNode.Properties[GHSPhraseCategoryNTP].AsList.Value = Category; GHSPhraseNode.Properties[GHSPhraseEnglishNTP].AsText.Text = GHSPhraseCodes[Code]; GHSPhraseNode.postChanges( false ); } // foreach( Int32 Code in GHSPhraseCodes.Keys ) }//Update()
public override void update() { CswNbtMetaDataObjectClass GhsOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.GHSClass ); CswNbtMetaDataObjectClassProp GhsMaterialOCP = GhsOC.getObjectClassProp( CswNbtObjClassGHS.PropertyName.Material ); CswNbtMetaDataNodeType GhsNT = GhsOC.getNodeTypes().First(); if( null != GhsNT ) { CswNbtMetaDataNodeTypeTab GhsGhsTab = GhsNT.getNodeTypeTab( "GHS" ) ?? _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( GhsNT, "GHS", 1 ); // Fix nodetype name template GhsNT.setNameTemplateText( // "GHS for " + // CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassGHS.PropertyName.Material ) + // ": " + CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassGHS.PropertyName.Jurisdiction ) ); // Classification is now a list const string ClassificationPropName = "Classification"; const string ClassificationTabGroup = "Classification"; CswNbtMetaDataNodeTypeProp GhsClassificationNTP = GhsNT.getNodeTypeProp( ClassificationPropName ); _CswNbtSchemaModTrnsctn.MetaData.DeleteNodeTypeProp( GhsClassificationNTP ); GhsClassificationNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GhsNT, _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.List ), ClassificationPropName ) ); GhsClassificationNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add, true, DisplayRow: 6, DisplayColumn: 1, TabGroup: ClassificationTabGroup ); GhsClassificationNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GhsGhsTab.TabId, 6, 1, ClassificationTabGroup ); // Classification list options CswCommaDelimitedString ClassificationOptions = new CswCommaDelimitedString { "Category 1", "Category 2", "Category 3", "Category 4", "Category 1 A/1 B/1 C", "Category 2 (skin)/2A (eye)", "Category 2A", "Category 2B", "Category 1/ 1A / 1B", "Category 1A or Category 1B", "Type A", "Type B", "Type C&D", "Type E&F", "Compressed Gas", "Liquidfied Gas", "Dissolved Gas", "Refridgerated Liquidified Gas" }; GhsClassificationNTP.ListOptions = ClassificationOptions.ToString(); // Chemical GHS tab CswNbtMetaDataNodeType ChemicalNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Chemical" ); if( null != ChemicalNT ) { CswNbtMetaDataNodeTypeTab ChemicalGhsTab = ChemicalNT.getNodeTypeTab( "GHS" ) ?? _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( ChemicalNT, "GHS", 3 ); // Delete the GHS grid, if present CswNbtMetaDataNodeTypeProp ChemicalGhsGridNTP = ChemicalNT.getNodeTypeProp( "GHS" ); if( null != ChemicalGhsGridNTP ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteNodeTypeProp( ChemicalGhsGridNTP ); } // Add Child Contents property to Chemical GHS tab CswNbtMetaDataNodeTypeProp JurisdictionNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.ChildContents ), "Jurisdiction" ) ); JurisdictionNTP.SetFK( NbtViewPropIdType.ObjectClassPropId.ToString(), GhsMaterialOCP.ObjectClassPropId ); JurisdictionNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); JurisdictionNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, ChemicalGhsTab.TabId, 1, 1 ); } // if(null != ChemicalNT) } // if (null != GhsNT) } //update()
public override void update() { string UNCodeNodeTypeName = "UN Code"; string ChemicalNodeTypeName = "Chemical"; string LQNoNodeTypeName = "LQNo"; string HazardsTabName = "Hazards"; CswNbtMetaDataNodeType UNCodeNodeType = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( UNCodeNodeTypeName ); if( null != UNCodeNodeType ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteNodeType( UNCodeNodeType ); } CswNbtMetaDataNodeType ChemicalNodeType = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( ChemicalNodeTypeName ); if( null != ChemicalNodeType ) { CswNbtMetaDataNodeTypeProp UnCodeProp = ChemicalNodeType.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterial.PropertyName.UNCode ); if( null != UnCodeProp ) { CswNbtMetaDataNodeTypeTab HazardsTab = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeTab( ChemicalNodeType.NodeTypeId, HazardsTabName ); if( null != HazardsTab ) { UnCodeProp.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, HazardsTab.TabId ); }//if we have a hazards tab UnCodeProp.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); UnCodeProp.Attribute3 = "UN[0-9]{4}$"; //set regex attribute UnCodeProp.Attribute4 = "Format of UN Code is 'UN####' !"; //set regex attribute }//if we have a uncode //Add the LQNo prop on Chemical CswNbtMetaDataNodeType LQNoNodeType = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( LQNoNodeTypeName ); if( null != LQNoNodeType ) { CswNbtMetaDataNodeTypeProp LQNoProp = ChemicalNodeType.getNodeTypeProp( LQNoNodeType.NodeTypeName ); if( null == LQNoProp ) { LQNoProp = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( ChemicalNodeType, CswNbtMetaDataFieldType.NbtFieldType.Relationship, LQNoNodeType.NodeTypeName, HazardsTabName ); } LQNoProp.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), LQNoNodeType.NodeTypeId ); LQNoProp.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); } }//if we have a chemcial node type ///_CswNbtSchemaModTrnsctn.MetaData.remove } //Update()