public override void update() { CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass ); CswNbtMetaDataObjectClassProp SizeOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Size ); // To be compatible with case 27330, remove 'Size' from Container layout by default if( _CswNbtSchemaModTrnsctn.isMaster() ) { foreach( CswNbtMetaDataNodeTypeProp SizeNTP in SizeOCP.getNodeTypeProps() ) { SizeNTP.removeFromAllLayouts(); } } // To resolve case 30647, clear out .Hidden flag on 'Size' foreach( CswNbtMetaDataNodeTypeProp SizeNTP in SizeOCP.getNodeTypeProps() ) { SizeNTP.Hidden = false; foreach( CswNbtObjClassContainer ContainerNode in ContainerOC.getNodes( false, true ) ) { ContainerNode.Size.setHidden( false, true ); ContainerNode.postChanges( false ); } } } // update()
// This is a repeat of case 02F_Case30647. See case 31079. public override void update() { CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass ); CswNbtMetaDataObjectClassProp SizeOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Size ); // To resolve case 30647, clear out .Hidden flag on 'Size' foreach( CswNbtMetaDataNodeTypeProp SizeNTP in SizeOCP.getNodeTypeProps() ) { SizeNTP.Hidden = false; } // getNodes() truncates!!!!!! //foreach( CswNbtObjClassContainer ContainerNode in ContainerOC.getNodes( false, true, false, true ) ) //{ // ContainerNode.Size.setHidden( value: false, SaveToDb: true ); // ContainerNode.postChanges( false ); //} _CswNbtSchemaModTrnsctn.execArbitraryPlatformNeutralSql( @"update jct_nodes_props set hidden = '0' where nodetypepropid in (select p.nodetypepropid from nodetype_props p join object_class_props op on p.objectclasspropid = op.objectclasspropid join object_class oc on op.objectclassid = oc.objectclassid where oc.objectclass = 'ContainerClass' and op.propname = 'Size') and hidden = '1'" ); } // update()
public override void update() { CswNbtMetaDataObjectClass reportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass ); CswNbtMetaDataObjectClassProp instructionsOCP = reportOC.getObjectClassProp( CswNbtObjClassReport.PropertyName.Instructions ); CswNbtMetaDataObjectClassProp sqlOCP = reportOC.getObjectClassProp( CswNbtObjClassReport.PropertyName.Sql ); foreach( CswNbtMetaDataNodeTypeProp instructionsNTP in instructionsOCP.getNodeTypeProps() ) { instructionsNTP.TextAreaColumns = 65; instructionsNTP.TextAreaRows = 8; } foreach( CswNbtMetaDataNodeTypeProp sqlNTP in sqlOCP.getNodeTypeProps() ) { sqlNTP.HelpText = ""; } //string txt = "To create a parameterized sql report wrap the parameter name(s) in {} brackets.\n\n"; //txt += "Enter a User property name such as 'username' to have the parameter automatically filled in with the current users value for that property. You may also use the keywords 'nodeid' or 'userid' to have the primary key of the current user filled in as the value for that parameter."; string txt = @"To create a parameterized report, enclose the name of the property in {}. For example: and datecolumn < '{Date}' will prompt the user to enter a Date. Parameters that match properties on the current User will be automatically filled in. For example: {Username} - The username of the user running the report. {Role} - The role of the user running the report. {userid} - The primary key of the user running the report."; foreach( CswNbtObjClassReport reportNode in reportOC.getNodes( false, true, false, true ) ) { reportNode.Instructions.Text = txt; reportNode.postChanges( false ); } } // update()
public static void CheckContainerBarcodes(ICswResources CswResources, CswNbtContainerBarcodeCheckReturn ErrorMsg, Collection <CswNbtAmountsGridQuantity> Quantities) { CswNbtResources NbtResources = (CswNbtResources)CswResources; CswNbtMetaDataObjectClass ContainerOC = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass); CswNbtMetaDataObjectClassProp BarcodeOCP = (CswNbtMetaDataObjectClassProp)ContainerOC.getBarcodeProperty(); CswCommaDelimitedString barcodeNTPs = new CswCommaDelimitedString(); foreach (CswNbtMetaDataNodeTypeProp barcodeNTP in BarcodeOCP.getNodeTypeProps()) { barcodeNTPs.Add(barcodeNTP.PropId.ToString()); } CswNbtFieldTypeRuleBarCode BarcodeFTR = (CswNbtFieldTypeRuleBarCode)BarcodeOCP.getFieldTypeRule(); CswCommaDelimitedString AllProposedBarcodes = new CswCommaDelimitedString(); HashSet <string> DuplicateBarcodes = new HashSet <string>(); HashSet <string> BarcodeLookup = new HashSet <string>(); foreach (CswNbtAmountsGridQuantity quantity in Quantities) { CswCommaDelimitedString barcodes = quantity.getBarcodes(); foreach (string barcode in barcodes) { AllProposedBarcodes.Add("'" + barcode.ToLower() + "'"); if (BarcodeLookup.Contains(barcode)) { DuplicateBarcodes.Add(barcode); } else { BarcodeLookup.Add(barcode); } } } if (AllProposedBarcodes.Count > 0) { if (DuplicateBarcodes.Count > 0) { CswCommaDelimitedString dupeCDS = HashSetToCDS(DuplicateBarcodes); ErrorMsg.Data = "There are following barcodes appear more than once: " + dupeCDS; } else { string barcodeSQL = @"select nodeid, field1 from jct_nodes_props where nodetypepropid in (" + barcodeNTPs + ") and lower(" + BarcodeFTR.BarcodeSubField.Column + ") in (" + AllProposedBarcodes + ")"; DataTable barcodesTbl = NbtResources.execArbitraryPlatformNeutralSqlSelect("WebServiceReceiving.CheckContainerBarcodes", barcodeSQL); if (barcodesTbl.Rows.Count > 0) { foreach (DataRow row in barcodesTbl.Rows) { DuplicateBarcodes.Add(row[BarcodeFTR.BarcodeSubField.Column.ToString()].ToString()); } CswCommaDelimitedString dupeCDS = HashSetToCDS(DuplicateBarcodes); ErrorMsg.Data = "There are following barcodes have already been assigned: " + dupeCDS; } } } }
public override void update() { CswNbtMetaDataObjectClass RequestItemOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RequestItemClass ); CswNbtMetaDataObjectClassProp ItemNoOCP = RequestItemOC.getObjectClassProp( CswNbtObjClassRequestItem.PropertyName.ItemNumber ); //First verify there is no sequence for any ItemNo NTPs Collection<CswNbtMetaDataNodeTypeProp> PropsWithNoSequences = new Collection<CswNbtMetaDataNodeTypeProp>(); foreach( CswNbtMetaDataNodeTypeProp ItemNoNTP in ItemNoOCP.getNodeTypeProps() ) { if( null == ItemNoNTP.Sequence ) { PropsWithNoSequences.Add( ItemNoNTP ); } } if( PropsWithNoSequences.Any() ) { CswNbtMetaDataObjectClass DesignSequenceOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.DesignSequenceClass ); CswNbtMetaDataNodeType DesignSequenceNT = DesignSequenceOC.getNodeTypes().FirstOrDefault(); if( null == DesignSequenceNT ) { throw new CswDniException( CswEnumErrorType.Error, "Error creating new Sequence for Item Number property", "Cannot create a new sequence because there is no DesignSequence NodeType" ); } CswNbtObjClassDesignSequence ItemNoSequence = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( DesignSequenceNT.NodeTypeId, OnAfterMakeNode : delegate( CswNbtNode NewNode ) { CswNbtObjClassDesignSequence AsSequence = NewNode; AsSequence.Name.Text = "RequestItem_ItemNumber"; AsSequence.Pre.Text = "RI"; AsSequence.Pad.Value = 6; } ); foreach( CswNbtMetaDataNodeTypeProp SequenceslessProp in PropsWithNoSequences ) { //Update the NTP to have a sequence CswNbtObjClassDesignNodeTypeProp DesignNodeProp = SequenceslessProp.DesignNode; CswNbtMetaDataNodeTypeProp SequenceNTP = DesignNodeProp.NodeType.getNodeTypeProp( "Sequence" ); if( null == SequenceNTP ) { throw new CswDniException(CswEnumErrorType.Error, "Error assigning sequence to Item Number property", "Cannot assign a sequence to the Item Number property because there is no Sequence relationship property to assign a value to"); } DesignNodeProp.Node.Properties[SequenceNTP].AsRelationship.RelatedNodeId = ItemNoSequence.NodeId; DesignNodeProp.postChanges( false ); //Update existing Request Items Item No prop to have a value _updateRequestItems(SequenceslessProp.getNodeType(), SequenceslessProp); } } } // update()
public override void update() { foreach( CswNbtMetaDataObjectClass ObjClass in _CswNbtSchemaModTrnsctn.MetaData.getObjectClasses() ) { CswNbtMetaDataObjectClassProp LegacyIdOCP = ObjClass.getObjectClassProp( CswNbtObjClass.PropertyName.LegacyId ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( LegacyIdOCP, CswEnumNbtObjectClassPropAttributes.servermanaged, true ); foreach( CswNbtMetaDataNodeTypeProp LegacyIdNTP in LegacyIdOCP.getNodeTypeProps() ) { LegacyIdNTP.removeFromAllLayouts(); } } } // update()
public override void update() { CswNbtMetaDataObjectClass UserOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.UserClass ); CswNbtMetaDataObjectClassProp CachedDataOcp = UserOc.getObjectClassProp( CswNbtObjClassUser.PropertyName.CachedData ); foreach( CswNbtMetaDataNodeTypeProp Prop in CachedDataOcp.getNodeTypeProps() ) { Prop.removeFromAllLayouts(); } CswNbtActRequesting ActRequesting = new CswNbtActRequesting( _CswNbtSchemaModTrnsctn.MetaData._CswNbtMetaDataResources.CswNbtResources ); foreach( CswNbtObjClassUser User in UserOc.getNodes( forceReInit: true, includeSystemNodes: false, IncludeDefaultFilters: false, IncludeHiddenNodes: true ) ) { ActRequesting.resetCartCounts( User: User ); } } // update()
public override void update() { CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ); CswNbtMetaDataObjectClassProp MaterialTypeOCP = ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.MaterialType ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( MaterialTypeOCP, CswEnumNbtObjectClassPropAttributes.isrequired, false ); foreach( CswNbtMetaDataNodeTypeProp MaterialTypeNTP in MaterialTypeOCP.getNodeTypeProps() ) { MaterialTypeNTP.IsRequired = false; } _CswNbtSchemaModTrnsctn.MetaData.SetObjectClassPropDefaultValue( MaterialTypeOCP, string.Empty ); } // update()
public override void update() { CswNbtMetaDataObjectClass RequestMaterialDispenseOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.RequestMaterialDispenseClass ); CswNbtMetaDataObjectClassProp IsRecurringOcp = RequestMaterialDispenseOc.getObjectClassProp( CswNbtObjClassRequestMaterialDispense.PropertyName.IsRecurring ); foreach( CswNbtMetaDataNodeTypeProp RecurringNtp in IsRecurringOcp.getNodeTypeProps() ) { RecurringNtp.removeFromAllLayouts(); } CswNbtMetaDataObjectClass RequestOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.RequestClass ); CswNbtMetaDataObjectClassProp IsRecurringReqOcp = RequestOc.getObjectClassProp( CswNbtObjClassRequest.PropertyName.IsRecurring ); foreach( CswNbtMetaDataNodeTypeProp RecurringNtp in IsRecurringReqOcp.getNodeTypeProps() ) { RecurringNtp.removeFromAllLayouts(); } _CswNbtSchemaModTrnsctn.createScheduledRule( NbtScheduleRuleNames.GenRequest, Recurrence.NSeconds, 5 ); } //Update()
public override void update() { CswNbtMetaDataObjectClass materialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.MaterialClass ); #region Create and set the material Id for all material NTs CswSequenceName materialIDSequenceName = new CswSequenceName( "Material Id nbt" ); if( false == _CswNbtSchemaModTrnsctn.doesSequenceExist( materialIDSequenceName ) ) { int seqId = _CswNbtSchemaModTrnsctn.makeSequence( materialIDSequenceName, "M", "", 6, 0 ); foreach( CswNbtMetaDataNodeType matNT in materialOC.getNodeTypes() ) { CswNbtMetaDataNodeTypeProp materialIdNTP = matNT.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterial.PropertyName.MaterialId ); materialIdNTP.setSequence( seqId ); } } #endregion #region set the NodeViewId for Manufacturing Sites on Material CswNbtViewId viewid = null; foreach( CswNbtView view in _CswNbtSchemaModTrnsctn.ViewSelect.restoreViews( "Manufacturing Sites" ) ) { if( view.Visibility.Equals( NbtViewVisibility.Property ) ) { viewid = view.ViewId; } } if( null != viewid ) { CswNbtMetaDataObjectClassProp manufacturingSitesOCP = materialOC.getObjectClassProp( CswNbtObjClassMaterial.PropertyName.ManufacturingSites ); foreach( CswNbtMetaDataNodeTypeProp manufacturingSitesNTP in manufacturingSitesOCP.getNodeTypeProps() ) { manufacturingSitesNTP.ViewId = viewid; } } #endregion }
public override void update() { CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass ); CswNbtMetaDataObjectClassProp UndisposeOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Undispose ); CswNbtMetaDataObjectClassProp DisposeOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Dispose ); CswCommaDelimitedString PropIds = new CswCommaDelimitedString(); foreach( CswNbtMetaDataNodeTypeProp UndisposeNTP in UndisposeOCP.getNodeTypeProps() ) { PropIds.Add( UndisposeNTP.PropId.ToString() ); } foreach( CswNbtMetaDataNodeTypeProp DisposeNTP in DisposeOCP.getNodeTypeProps() ) { PropIds.Add( DisposeNTP.PropId.ToString() ); } _CswNbtSchemaModTrnsctn.execArbitraryPlatformNeutralSql( @"update jct_nodes_props jnp set hidden = 0 where nodetypepropid in (" + PropIds + ")" ); } // update()
public override void update() { CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.MailReportClass ); CswNbtMetaDataObjectClassProp NameOCP = MailReportOC.getObjectClassProp( CswNbtObjClassMailReport.PropertyName.Name ); //Make sure all Mail reports have unique names foreach( CswNbtObjClassMailReport MailReport in MailReportOC.getNodes( false, true, false, true ) ) { _makeNameUnique( MailReportOC, NameOCP, MailReport, MailReport.Name.Text, 0 ); } //Make the Name property unique foreach( CswNbtMetaDataNodeTypeProp NameNTP in NameOCP.getNodeTypeProps() ) { CswNbtObjClassDesignNodeTypeProp NamePropertyNode = NameNTP.DesignNode; NamePropertyNode.Unique.Checked = CswEnumTristate.True; NamePropertyNode.postChanges( false ); } } // update()
public override void update() { CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass ); CswNbtMetaDataObjectClassProp OpenedDateOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.OpenedDate ); foreach( CswNbtMetaDataNodeTypeProp OpenedDateNTP in OpenedDateOCP.getNodeTypeProps() ) { OpenedDateNTP.DesignNode.ReadOnly.Checked = CswEnumTristate.True; OpenedDateNTP.DesignNode.postChanges( false ); CswNbtMetaDataNodeType nt = OpenedDateNTP.getNodeType(); OpenedDateNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, nt.getFirstNodeTypeTab().TabId ); } CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ); CswNbtMetaDataObjectClassProp OpenExpireIntervalOCP = ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.OpenExpireInterval ); foreach( CswNbtMetaDataNodeTypeProp OpenExpireIntervalNTP in OpenExpireIntervalOCP.getNodeTypeProps() ) { CswNbtMetaDataNodeType nt = OpenExpireIntervalNTP.getNodeType(); OpenExpireIntervalNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, nt.getFirstNodeTypeTab().TabId ); } } // update()
public override void update() { CswNbtMetaDataObjectClass materialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.MaterialClass ); CswNbtMetaDataObjectClassProp CASNoOCP = materialOC.getObjectClassProp( CswNbtObjClassMaterial.PropertyName.CasNo ); foreach( CswNbtMetaDataNodeTypeProp casNoNTP in CASNoOCP.getNodeTypeProps() ) { casNoNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); } CswNbtMetaDataNodeType chemicalNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Chemical" ); if( null != chemicalNT ) { CswNbtMetaDataNodeTypeTab chemicalTab = chemicalNT.getFirstNodeTypeTab(); CswNbtMetaDataNodeTypeProp chemicalCASNoNTP = chemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterial.PropertyName.CasNo ); CswNbtMetaDataNodeTypeProp chemicalSynoNTP = chemicalNT.getNodeTypeProp( "Synonyms" ); if( null != chemicalSynoNTP ) { _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, chemicalCASNoNTP, chemicalSynoNTP, true ); } } }
public override void update() { #region remove the receipt lot objclass from jct_modules_objectclass CswNbtMetaDataObjectClass receiptLotOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.ReceiptLotClass ); _CswNbtSchemaModTrnsctn.deleteAllModuleObjectClassJunctions( receiptLotOC ); _CswNbtSchemaModTrnsctn.createModuleObjectClassJunction( CswNbtModuleName.CISPro, receiptLotOC.ObjectClassId ); #endregion #region make the receipt lot NTP on containers hidden by default CswNbtMetaDataObjectClass containerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.ContainerClass ); CswNbtMetaDataObjectClassProp receiptLotOCP = containerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.ReceiptLot ); foreach( CswNbtMetaDataNodeTypeProp receiptLotNTP in receiptLotOCP.getNodeTypeProps() ) { receiptLotNTP.removeFromAllLayouts(); } #endregion }
} //ctor Vp private void setObjectClassPropListOptions(CswNbtMetaDataObjectClassProp ObjectClassProp) { if (ObjectClassProp.ListOptions != string.Empty) { ListOptions.FromString(ObjectClassProp.ListOptions); } else { // Get all options from all nodetypes foreach (CswNbtMetaDataNodeTypeProp VPNodeTypeProp in ObjectClassProp.getNodeTypeProps()) { CswCommaDelimitedString NTPListOptions = new CswCommaDelimitedString(); //NTPListOptions.FromString( VPNodeTypeProp.ListOptions ); if (VPNodeTypeProp.DesignNode.AttributeProperty.ContainsKey(CswEnumNbtPropertyAttributeName.Options)) { NTPListOptions.FromString(VPNodeTypeProp.DesignNode.AttributeProperty[CswEnumNbtPropertyAttributeName.Options].AsText.Text); } foreach (string Option in NTPListOptions) { ListOptions.Add(Option, false, true); } } } } // setObjectClassPropListOptions()
public override void update() { CswNbtMetaDataObjectClass roleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RoleClass ); CswNbtMetaDataObjectClassProp actionPermissionsOCP = roleOC.getObjectClassProp( CswNbtObjClassRole.ActionPermissionsPropertyName ); if( null != actionPermissionsOCP ) { foreach( CswNbtMetaDataNodeTypeProp permissions in actionPermissionsOCP.getNodeTypeProps() ) { permissions.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Preview ); } } CswNbtMetaDataObjectClassProp nodeTypePermissionsOCP = roleOC.getObjectClassProp( CswNbtObjClassRole.NodeTypePermissionsPropertyName ); if( null != nodeTypePermissionsOCP ) { foreach( CswNbtMetaDataNodeTypeProp permissions in nodeTypePermissionsOCP.getNodeTypeProps() ) { permissions.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Preview ); } } }//Update()
public override void update() { CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ); CswNbtMetaDataObjectClassProp ViewSDSOCP = ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.ViewSDS ); CswNbtMetaDataObjectClassProp RequestOCP = ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.Request ); CswCommaDelimitedString ViewSDSNTPIds = new CswCommaDelimitedString(); CswCommaDelimitedString RequestNTPIds = new CswCommaDelimitedString(); foreach( CswNbtMetaDataNodeTypeProp ViewSDSNTP in ViewSDSOCP.getNodeTypeProps() ) { ViewSDSNTPIds.Add( ViewSDSNTP.PropId.ToString() ); } foreach( CswNbtMetaDataNodeTypeProp RequestNTP in RequestOCP.getNodeTypeProps() ) { RequestNTPIds.Add( RequestNTP.PropId.ToString() ); } string sql = @"select j.nodeid, j.nodetypepropid, count(nodeid) as cnt from jct_nodes_props j where j.nodetypepropid in (" + ViewSDSNTPIds.ToString() + ") or j.nodetypepropid in (" + RequestNTPIds.ToString() + ") " + @"group by j.nodeid, j.nodetypepropid having count(nodeid) > 1"; CswArbitrarySelect arbSel = _CswNbtSchemaModTrnsctn.makeCswArbitrarySelect( "GetDupRowsNodeIds", sql ); CswCommaDelimitedString NodeIds = new CswCommaDelimitedString(); DataTable dupTbl = arbSel.getTable(); foreach( DataRow row in dupTbl.Rows ) { NodeIds.Add( row["nodeid"].ToString() ); } _deleteDuplicateRows( NodeIds, ViewSDSNTPIds ); _deleteDuplicateRows( NodeIds, RequestNTPIds ); } // update()
private bool _validateStatus(ref OperationData OpData) { bool ret = false; string status = OpData.Field1.Value; Regex alphNums = new Regex("[^a-zA-Z0-9]"); string strippedStatus = alphNums.Replace(status, ""); Collection <CswNbtMetaDataNodeTypeProp> statusNTPs = new Collection <CswNbtMetaDataNodeTypeProp>(); CswNbtMetaDataObjectClass equipmentOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.EquipmentClass); CswNbtMetaDataObjectClassProp statusOCP = equipmentOC.getObjectClassProp(CswNbtObjClassEquipment.PropertyName.Status); foreach (CswNbtMetaDataNodeTypeProp statusNTP in statusOCP.getNodeTypeProps()) { statusNTPs.Add(statusNTP); } CswNbtMetaDataObjectClass assemblyOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.EquipmentAssemblyClass); statusOCP = assemblyOC.getObjectClassProp(CswNbtObjClassEquipmentAssembly.PropertyName.Status); foreach (CswNbtMetaDataNodeTypeProp statusNTP in statusOCP.getNodeTypeProps()) { statusNTPs.Add(statusNTP); } foreach (CswNbtMetaDataNodeTypeProp statusNTP in statusNTPs) { CswCommaDelimitedString statusOptCDS = new CswCommaDelimitedString(); statusOptCDS.FromString(statusNTP.DesignNode.getAttributeValueByColumn(CswEnumNbtPropertyAttributeColumn.Listoptions)); foreach (string candidateStatus in statusOptCDS) { if (false == ret) { if (string.Equals(candidateStatus, status, StringComparison.CurrentCultureIgnoreCase)) { ret = true; OpData.Field1.Value = candidateStatus; } else { string strippedCandidateStatus = alphNums.Replace(candidateStatus, ""); if (strippedStatus.Equals(strippedCandidateStatus, StringComparison.CurrentCultureIgnoreCase)) { ret = true; OpData.Field1.Value = candidateStatus; } } } } } if (false == ret) { OpData.Field1.ServerValidated = false; OpData.Field1.StatusMsg = status + " is not a valid option for a Status Mode scan."; } return(ret); }
public override void update() { //get all Structure NTP ids CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ); CswNbtMetaDataObjectClassProp StructureOCP = ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.Structure ); CswCommaDelimitedString StructreNTPIds = new CswCommaDelimitedString(); foreach( CswNbtMetaDataNodeTypeProp StructureNTP in StructureOCP.getNodeTypeProps() ) { StructreNTPIds.Add( StructureNTP.PropId.ToString() ); } //get all node ids from jct_nodes_props that have more than one record for the Structure prop Collection<CswPrimaryKey> NodeIds = new Collection<CswPrimaryKey>(); string sql = "select nodeid, count(nodeid) as cnt from jct_nodes_props where nodetypepropid in (" + StructreNTPIds.ToString() + ") group by nodeid"; CswArbitrarySelect ArbSelect = _CswNbtSchemaModTrnsctn.makeCswArbitrarySelect( "GetDuplicateStructureRecords", sql ); DataTable jnpTbl = ArbSelect.getTable(); foreach( DataRow row in jnpTbl.Rows ) { if( CswConvert.ToInt32( row["cnt"] ) > 1 ) { NodeIds.Add( new CswPrimaryKey( "nodes", CswConvert.ToInt32( row["nodeid"] ) ) ); } } //Fix the Nodes foreach( CswPrimaryKey NodeId in NodeIds ) { CswCommaDelimitedString JctNodePropRowsToDelete = new CswCommaDelimitedString(); CswNbtObjClassChemical ChemicalNode = _CswNbtSchemaModTrnsctn.Nodes[NodeId]; if( String.IsNullOrEmpty( ChemicalNode.Structure.Mol ) ) //if there is no Mol, a user never uploaded a new Mol, find the JctNodeProp row that has the clob data and set it correctly { int newJctNodePropId = Int32.MinValue; DataTable JnpTbl = _getJNPTblUpdate( NodeId, StructreNTPIds ); foreach( DataRow row in JnpTbl.Rows ) { if( String.IsNullOrEmpty( row["clobdata"].ToString() ) ) { JctNodePropRowsToDelete.Add( CswConvert.ToInt32( row["jctnodepropid"] ).ToString() ); } else { newJctNodePropId = CswConvert.ToInt32( row["jctnodepropid"] ); } } CswTableUpdate blobDataTblUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "getBlobDataTblUpdate", "blob_data" ); DataTable blobDataTbl = blobDataTblUpdate.getTable( "where jctnodepropid in (" + JctNodePropRowsToDelete.ToString() + ")" ); if( blobDataTbl.Rows.Count > 0 ) { blobDataTbl.Rows[0]["jctnodepropid"] = newJctNodePropId; } blobDataTblUpdate.update( blobDataTbl ); } else //the user uploaded a new mol to the Chemical, throw out the old data and use the new data { DataTable JnpTbl = _getJNPTblUpdate( NodeId, StructreNTPIds ); foreach( DataRow row in JnpTbl.Rows ) { if( CswConvert.ToInt32( row["jctnodepropid"] ) != ChemicalNode.Structure.JctNodePropId ) { JctNodePropRowsToDelete.Add( CswConvert.ToInt32( row["jctnodepropid"] ).ToString() ); } } if( JctNodePropRowsToDelete.Count > 0 ) { CswTableUpdate BlobDataTblUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "DeleteOldBlobDataRows", "blob_data" ); DataTable blobDataTbl = BlobDataTblUpdate.getTable( "where jctnodepropid in (" + JctNodePropRowsToDelete.ToString() + ")" ); foreach( DataRow row in blobDataTbl.Rows ) { row.Delete(); } BlobDataTblUpdate.update( blobDataTbl ); } } CswTableUpdate JnpTblUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "DeleteBadJnpDataRows", "jct_nodes_props" ); DataTable jnpDataTbl = JnpTblUpdate.getTable( "where jctnodepropid in (" + JctNodePropRowsToDelete.ToString() + ")" ); foreach( DataRow row in jnpDataTbl.Rows ) { row.Delete(); } JnpTblUpdate.update( jnpDataTbl ); } } // update()