Files
DP44/DataPRO/Modules/Database/DatabaseMigrationScripts/.svn/pristine/8c/8ce350df8b8690081a54f76e8eb1e11068df608b.svn-base
2026-04-17 14:55:32 -04:00

77 lines
6.2 KiB
Plaintext

--This procedure takes a RegionsOfInterest string and stores the values in the
--TestSetupROIs and ROIPeriodChannels tables.
CREATE PROCEDURE [dbo].[sp_StringToRegionsOfInterestTables]
(
@TestSetupId int,
@RegionsOfInterest nvarchar(Max)
)
AS
BEGIN
--DECLARE @TestSetupId int = 1
--DECLARE @RegionsOfInterest nvarchar(Max) = '[{"Suffix":"_ROI Period 1","Start":-0.6,"End":0.6,"IsEnabled":true,"IsDefault":true,"ChannelNames":["an1","an2","an3"]},{"Suffix":"_ROI Period 2","Start":-0.5,"End":0.5,"IsEnabled":true,"IsDefault":true,"ChannelNames":["an1","an3"]}]'
DECLARE @CurrentSubString nvarchar(MAX)
DECLARE @CurrentSubStringStartIndex int
DECLARE @CurrentSubStringEndIndex int
DECLARE @SuffixValue nvarchar(255)
DECLARE @ROIStartValue float
DECLARE @ROIEndValue float
DECLARE @IsEnabledValue nvarchar(255)
DECLARE @IsDefaultValue nvarchar(255)
DECLARE @ChannelNames nvarchar(MAX)
DECLARE @TestSetupROIId int
-- [{"Suffix":"_ROI Period 1","Start"...},{"Suffix":"_ROI Period 2","Start"...}]
SET @CurrentSubStringStartIndex = 1
WHILE (@CurrentSubStringStartIndex < LEN(@RegionsOfInterest))
BEGIN
SET @CurrentSubStringEndIndex = CHARINDEX('}', @RegionsOfInterest, @CurrentSubStringStartIndex) + 1
SET @CurrentSubString = SUBSTRING(@RegionsOfInterest, @CurrentSubStringStartIndex, (@CurrentSubStringEndIndex - @CurrentSubStringStartIndex))
SET @SuffixValue = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'Suffix":"', '"')
SET @ROIStartValue = CAST([dbo].[foo_ROIStringToValueString](@CurrentSubString, 'Start":', ',') AS FLOAT)
SET @ROIEndValue = CAST([dbo].[foo_ROIStringToValueString](@CurrentSubString, 'End":', ',') AS FLOAT)
SET @IsEnabledValue = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'IsEnabled":', ',')
IF @IsEnabledValue = 'true'
SET @IsEnabledValue = 1
ELSE
SET @IsEnabledValue = 0
SET @IsDefaultValue = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'IsDefault":', ',')
IF @IsDefaultValue = 'true'
SET @IsDefaultValue = 1
ELSE
SET @IsDefaultValue = 0
SET @ChannelNames = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'ChannelNames":[', ']')
INSERT INTO TestSetupROIs VALUES (@TestSetupId, @SuffixValue, @ROIStartValue, @ROIEndValue, @IsEnabledValue, @IsDefaultValue)
SET @TestSetupROIId = scope_identity()
IF (@SuffixValue <> '' AND LEN(@ChannelNames) > 0)
BEGIN
DECLARE @CurrentChannelName nvarchar(255)
DECLARE @ChannelNameStartIndex int
DECLARE @ChannelNameEndIndex int
-- "an1","an2","an3"
SET @ChannelNameStartIndex = 2
WHILE (@ChannelNameStartIndex < LEN(@ChannelNames))
BEGIN
SET @ChannelNameEndIndex = CHARINDEX('"', @ChannelNames, @ChannelNameStartIndex) - 1
SET @CurrentChannelName = SUBSTRING(@ChannelNames, @ChannelNameStartIndex, (@ChannelNameEndIndex - @ChannelNameStartIndex) + 1)
INSERT INTO ROIPeriodChannels (TestSetupROIId, ChannelName) VALUES (@TestSetupROIId, @CurrentChannelName)
SET @ChannelNameStartIndex = @ChannelNameEndIndex + 4 -- ","x
END
END
SET @CurrentSubStringStartIndex = @CurrentSubStringEndIndex + 1 -- }
END
END