You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1714 lines
42 KiB
1714 lines
42 KiB
-- Script: uddi.v2.businessService.sql
|
|
-- Author: [email protected]
|
|
-- Description: Stored procedures associated with a businessService object.
|
|
-- Note: This file is best viewed and edited with a tab width of 2.
|
|
|
|
-- =============================================
|
|
-- Section: Get stored procedures
|
|
-- =============================================
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_get
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_get' and type = 'P')
|
|
DROP PROCEDURE net_businessService_get
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_get
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000)
|
|
|
|
SELECT
|
|
@businessKey = dbo.businessKey([businessID])
|
|
FROM
|
|
[UDC_businessServices]
|
|
WHERE
|
|
[serviceKey] = @serviceKey
|
|
|
|
IF @@ROWCOUNT = 0
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_businessService_get
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_get_batch
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_get_batch' and type = 'P')
|
|
DROP PROCEDURE net_businessService_get_batch
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_get_batch
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000)
|
|
|
|
SELECT
|
|
@businessKey = dbo.businessKey([businessID])
|
|
FROM
|
|
[UDC_businessServices]
|
|
WHERE
|
|
[serviceKey] = @serviceKey
|
|
|
|
IF @@ROWCOUNT = 0
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Retrieve the contained objects
|
|
EXEC net_businessService_descriptions_get @serviceKey
|
|
EXEC net_businessService_names_get @serviceKey
|
|
EXEC net_businessService_bindingTemplates_get @serviceKey
|
|
EXEC net_businessService_categoryBag_get @serviceKey
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_businessService_get_batch
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_serviceInfo_get_batch
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_serviceInfo_get_batch' and type = 'P')
|
|
DROP PROCEDURE net_serviceInfo_get_batch
|
|
GO
|
|
|
|
CREATE PROCEDURE net_serviceInfo_get_batch
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000)
|
|
|
|
SELECT
|
|
@businessKey = dbo.businessKey([businessID])
|
|
FROM
|
|
[UDC_businessServices]
|
|
WHERE
|
|
[serviceKey] = @serviceKey
|
|
|
|
IF @@ROWCOUNT = 0
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Retrieve the contained objects
|
|
EXEC net_businessService_names_get @serviceKey
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_businessService_get_batch
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_names_get
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_names_get' and type = 'P')
|
|
DROP PROCEDURE net_businessService_names_get
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_names_get
|
|
@serviceKey uniqueidentifier
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
SELECT
|
|
[isoLangCode],
|
|
[name]
|
|
FROM
|
|
[UDC_names_BS]
|
|
WHERE
|
|
([serviceID] = dbo.serviceID(@serviceKey))
|
|
|
|
RETURN 0
|
|
END -- net_businessService_names_get
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_descriptions_get
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_descriptions_get' and type = 'P')
|
|
DROP PROCEDURE net_businessService_descriptions_get
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_descriptions_get
|
|
@serviceKey uniqueidentifier
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
SELECT
|
|
[isoLangCode],
|
|
[description]
|
|
FROM
|
|
[UDC_serviceDesc]
|
|
WHERE
|
|
([serviceID] = dbo.serviceID(@serviceKey))
|
|
|
|
RETURN 0
|
|
END -- net_businessService_descriptions_get
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_categoryBag_get
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_categoryBag_get' and type = 'P')
|
|
DROP PROCEDURE net_businessService_categoryBag_get
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_categoryBag_get
|
|
@serviceKey uniqueidentifier
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
SELECT
|
|
[keyName],
|
|
[keyValue],
|
|
[tModelKey]
|
|
FROM
|
|
[UDC_categoryBag_BS]
|
|
WHERE
|
|
[serviceID] = dbo.serviceID(@serviceKey)
|
|
|
|
RETURN 0
|
|
END -- net_businessService_categoryBag_get
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_bindingTemplates_get
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_bindingTemplates_get' and type = 'P')
|
|
DROP PROCEDURE net_businessService_bindingTemplates_get
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_bindingTemplates_get
|
|
@serviceKey uniqueidentifier
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
SELECT
|
|
[bindingKey],
|
|
[lastChange],
|
|
[bindingID]
|
|
FROM
|
|
[UDC_bindingTemplates]
|
|
WHERE
|
|
([serviceID] = dbo.serviceID(@serviceKey))
|
|
ORDER BY
|
|
2 ASC, -- lastChange
|
|
3 ASC -- bindingID
|
|
|
|
RETURN 0
|
|
END -- net_businessService_bindingTemplates_get
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Section: Save stored procedures
|
|
-- =============================================
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_save
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_save' and type = 'P')
|
|
DROP PROCEDURE net_businessService_save
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_save
|
|
@PUID nvarchar(450),
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier,
|
|
@generic varchar(20),
|
|
@contextID uniqueidentifier,
|
|
@lastChange bigint
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@RC int,
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@serviceLimit int,
|
|
@serviceCount int,
|
|
@publisherID bigint,
|
|
@businessID bigint,
|
|
@isReplPublisher bit,
|
|
@original_businessID bigint
|
|
|
|
SET @RC = 0
|
|
SET @businessID = dbo.businessID(@businessKey)
|
|
|
|
-- businessKey validation must occur during save since its not always known at validate time
|
|
IF (@businessID IS NULL)
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Look up publisherID
|
|
SET @isReplPublisher = dbo.isReplPublisher(@PUID)
|
|
SET @publisherID = dbo.publisherID(@PUID)
|
|
|
|
IF (@publisherID IS NULL)
|
|
BEGIN
|
|
SET @error = 60150 -- E_unknownUser
|
|
SET @context = 'PUID = ' + @PUID
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Get the original businessID for this service. Use the existence of this key to determine
|
|
-- whether or not there was an existing service in the first place. If there was one, we'll delete
|
|
-- it. We'll need this ID later on to determine whether this save operation was actually a move
|
|
-- operation.
|
|
SELECT
|
|
@original_businessID = [businessID]
|
|
FROM
|
|
[UDC_businessServices]
|
|
WHERE
|
|
([serviceKey] = @serviceKey)
|
|
|
|
IF (@original_businessID IS NOT NULL)
|
|
BEGIN
|
|
DELETE [UDC_businessServices] WHERE [serviceKey] = @serviceKey
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF (@isReplPublisher) = 1
|
|
BEGIN
|
|
-- Perform this check only for replication publishers
|
|
IF (dbo.isUuidUnique(@serviceKey) = 0)
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKeyPassed
|
|
SET @context = 'Key is not unique. serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
END
|
|
END
|
|
|
|
-- Check limit
|
|
SELECT
|
|
@serviceLimit = [serviceLimit]
|
|
FROM
|
|
[UDO_publishers]
|
|
WHERE
|
|
([publisherID] = @publisherID)
|
|
|
|
SELECT
|
|
@serviceCount = COUNT(*)
|
|
FROM
|
|
[UDC_businessServices]
|
|
WHERE
|
|
([businessID] = @businessID)
|
|
|
|
IF ((@serviceCount + 1) > @serviceLimit)
|
|
BEGIN
|
|
SET @error = 60160 -- E_accountLimitExceeded
|
|
SET @context = 'Publisher limit for ''businessService'' exceeded (limit=' + CAST(@serviceLimit AS nvarchar(4000)) + ', count=' + CAST(@serviceCount AS nvarchar(4000)) + ')'
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Insert service
|
|
INSERT [UDC_businessServices](
|
|
[businessID],
|
|
[generic],
|
|
[serviceKey],
|
|
[lastChange])
|
|
VALUES(
|
|
@businessID,
|
|
@generic,
|
|
@serviceKey,
|
|
@lastChange)
|
|
|
|
-- The original business ID will be non-NULL if there this service existed before. It will
|
|
-- not be the value of the given business ID if this save operation was a move operation. If
|
|
-- both of these conditions are true, then we want to make sure that this service is not a
|
|
-- service projection for the given business. We need to remove this service projection since
|
|
-- this service actually belongs to the business now.
|
|
IF ((@original_businessID IS NOT NULL) AND (@original_businessID <> @businessID))
|
|
BEGIN
|
|
DELETE
|
|
[UDC_serviceProjections]
|
|
WHERE
|
|
([businessKey] = @businessKey) AND
|
|
([serviceKey] = @serviceKey)
|
|
|
|
-- TODO remove this check after a few clean test runs
|
|
IF (@@ROWCOUNT > 1)
|
|
BEGIN
|
|
SET @error = 60500 -- E_fatalError
|
|
SET @context = 'Error, multiple service projections were deleted.'
|
|
GOTO errorLabel
|
|
END
|
|
END
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_businessService_save
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_serviceProjection_save
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_serviceProjection_save' and type = 'P')
|
|
DROP PROCEDURE net_serviceProjection_save
|
|
GO
|
|
|
|
CREATE PROCEDURE net_serviceProjection_save
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier,
|
|
@lastChange bigint
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@RC int,
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@businessKey2 uniqueidentifier
|
|
|
|
SET @RC = 0
|
|
|
|
-- businessKey validation must occur during save since its not always known at validate time
|
|
IF NOT EXISTS(SELECT * FROM [UDC_businessEntities] WHERE [businessKey] = @businessKey)
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- serviceKey validation must occur during save since its not always known at validate time
|
|
IF NOT EXISTS(SELECT * FROM [UDC_businessServices] WHERE [serviceKey] = @serviceKey)
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Look up the true parent of the service, need this later in case true parent is deleted
|
|
SELECT
|
|
@businessKey2 = BE.[businessKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_businessEntities] BE ON BS.[businessID] = BE.[businessID]
|
|
WHERE
|
|
(BS.[serviceKey] = @serviceKey)
|
|
|
|
-- Add service projection if it doesn't already exist
|
|
IF NOT EXISTS(SELECT * FROM [UDC_serviceProjections] WHERE ([businessKey] = @businessKey) AND ([serviceKey] = @serviceKey))
|
|
BEGIN
|
|
INSERT [UDC_serviceProjections](
|
|
[businessKey],
|
|
[serviceKey],
|
|
[businessKey2],
|
|
[lastChange])
|
|
VALUES(
|
|
@businessKey,
|
|
@serviceKey,
|
|
@businessKey2,
|
|
@lastChange)
|
|
END
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_serviceProjection_save
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_serviceProjection_repl_save
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_serviceProjection_repl_save' and type = 'P')
|
|
DROP PROCEDURE net_serviceProjection_repl_save
|
|
GO
|
|
|
|
CREATE PROCEDURE net_serviceProjection_repl_save
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier,
|
|
@businessKey2 uniqueidentifier,
|
|
@lastChange bigint
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@RC int,
|
|
@error int,
|
|
@context nvarchar(4000)
|
|
|
|
SET @RC = 0
|
|
|
|
-- IMPORTANT: This sproc should only ever be called for replication. As per IN 60, we have to process service projection
|
|
-- change records even if they refer to business services that no longer exist. Both businesses referenced
|
|
-- by the service projection must exist.
|
|
|
|
-- businessKey validation must occur during save since its not always known at validate time
|
|
IF NOT EXISTS(SELECT * FROM [UDC_businessEntities] WHERE [businessKey] = @businessKey)
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
--
|
|
-- Commenting out the following check to comply with IN60 as per UDDI bug 2454
|
|
-- Which states that service projections that refer to a deleted service must be successfully saved
|
|
-- From this we can imply that service projections that refer to a deleted business must also be successfully saved
|
|
--
|
|
|
|
--IF NOT EXISTS(SELECT * FROM [UDC_businessEntities] WHERE [businessKey] = @businessKey2)
|
|
--BEGIN
|
|
--SET @error = 60210 -- E_invalidKey
|
|
--SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey2)
|
|
--GOTO errorLabel
|
|
--END
|
|
|
|
-- Add service projection if it doesn't already exist
|
|
IF NOT EXISTS(SELECT * FROM [UDC_serviceProjections] WHERE ([businessKey] = @businessKey) AND ([serviceKey] = @serviceKey))
|
|
BEGIN
|
|
INSERT [UDC_serviceProjections](
|
|
[businessKey],
|
|
[serviceKey],
|
|
[businessKey2],
|
|
[lastChange])
|
|
VALUES(
|
|
@businessKey,
|
|
@serviceKey,
|
|
@businessKey2,
|
|
@lastChange)
|
|
END
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_serviceProjection_repl_save
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_name_save
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_name_save' and type = 'P')
|
|
DROP PROCEDURE net_businessService_name_save
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_name_save
|
|
@serviceKey uniqueidentifier,
|
|
@isoLangCode varchar(17) = 'en',
|
|
@name nvarchar(450)
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@RC int,
|
|
@error int,
|
|
@context nvarchar(4000)
|
|
|
|
-- Check for valid name
|
|
IF (@name IS NULL) OR (LEN(@name) = 0)
|
|
BEGIN
|
|
SET @error = 60500 -- E_fatalError
|
|
SET @context = 'name cannot be blank.'
|
|
GOTO errorLabel
|
|
END
|
|
|
|
INSERT [UDC_names_BS](
|
|
[serviceID],
|
|
[isoLangCode],
|
|
[name])
|
|
VALUES(
|
|
dbo.serviceID(@serviceKey),
|
|
@isoLangCode,
|
|
@name)
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_businessService_name_save
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_description_save
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_description_save' and type = 'P')
|
|
DROP PROCEDURE net_businessService_description_save
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_description_save
|
|
@serviceKey uniqueidentifier,
|
|
@isoLangCode varchar(17) = 'en',
|
|
@description nvarchar(4000)
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
INSERT [UDC_serviceDesc](
|
|
[serviceID],
|
|
[isoLangCode],
|
|
[description])
|
|
VALUES(
|
|
dbo.serviceID(@serviceKey),
|
|
@isoLangCode,
|
|
@description)
|
|
|
|
RETURN 0
|
|
END -- net_businessService_save
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_categoryBag_save
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_categoryBag_save' and type = 'P')
|
|
DROP PROCEDURE net_businessService_categoryBag_save
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_categoryBag_save
|
|
@serviceKey uniqueidentifier,
|
|
@keyName nvarchar(255),
|
|
@keyValue nvarchar(255),
|
|
@tModelKey uniqueidentifier
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
INSERT [UDC_categoryBag_BS](
|
|
[serviceID],
|
|
[keyName],
|
|
[keyValue],
|
|
[tModelKey])
|
|
VALUES(
|
|
dbo.serviceID(@serviceKey),
|
|
@keyName,
|
|
@keyValue,
|
|
@tModelKey)
|
|
|
|
RETURN 0
|
|
END -- net_businessService_categoryBag_save
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Section: Delete stored procedures
|
|
-- =============================================
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_delete
|
|
-- =============================================
|
|
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_delete' and type = 'P')
|
|
DROP PROCEDURE net_businessService_delete
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_delete
|
|
@PUID nvarchar(450),
|
|
@serviceKey uniqueidentifier,
|
|
@contextID uniqueidentifier
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@RC int,
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@publisherID bigint,
|
|
@operatorID bigint
|
|
|
|
SET @RC = 0
|
|
|
|
--
|
|
-- Validate parameters
|
|
--
|
|
|
|
IF @serviceKey IS NULL
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = '@serviceKey is required.'
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Validate publisher
|
|
SET @publisherID = dbo.publisherID(@PUID)
|
|
|
|
IF @publisherID IS NULL
|
|
BEGIN
|
|
SET @error = 60150 -- E_unknownUser
|
|
SET @context = 'PUID = ' + ISNULL(@PUID, 'NULL')
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Validate operator
|
|
EXEC @RC=net_pubOperator_get @publisherID, @operatorID OUTPUT
|
|
|
|
IF @RC <> 0
|
|
BEGIN
|
|
SET @error = 50006 -- E_subProcFailure
|
|
SET @context = ''
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Validate businessService
|
|
IF EXISTS(SELECT * FROM [UDC_businessServices] WHERE ([serviceKey] = @serviceKey))
|
|
BEGIN
|
|
-- serviceKey exists. Make sure it belongs to current publisher
|
|
IF dbo.getServicePublisherID(@serviceKey) <> @publisherID
|
|
BEGIN
|
|
SET @error = 60140 -- E_userMismatch
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- serviceKey doesn't exist
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
|
|
DELETE [UDC_businessServices] WHERE [serviceKey] = @serviceKey
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_businessService_delete
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Section: Validation stored procedures
|
|
-- =============================================
|
|
|
|
-- =============================================
|
|
-- Name: net_serviceProjection_validate
|
|
-- =============================================
|
|
|
|
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'net_serviceProjection_validate' AND type = 'P')
|
|
DROP PROCEDURE net_serviceProjection_validate
|
|
GO
|
|
|
|
CREATE PROCEDURE net_serviceProjection_validate
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@businessID bigint
|
|
|
|
-- Try to get the parent business ID of this service
|
|
SET @businessID = (SELECT businessID from UDC_businessServices where serviceKey = @serviceKey)
|
|
IF (@businessID IS NOT NULL)
|
|
BEGIN
|
|
-- The service being projected exists, make sure it belongs to the specified business entity
|
|
IF (@businessID <> dbo.businessID(@businessKey))
|
|
BEGIN
|
|
-- Business service being projected does not belong to the specified business entity so
|
|
-- throw an error
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
END
|
|
|
|
-- It is not an error if the service being projected does not exist.
|
|
|
|
RETURN 0
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_businessService_validate
|
|
-- =============================================
|
|
|
|
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'net_businessService_validate' AND type = 'P')
|
|
DROP PROCEDURE net_businessService_validate
|
|
GO
|
|
|
|
CREATE PROCEDURE net_businessService_validate
|
|
@PUID nvarchar(450),
|
|
@serviceKey uniqueidentifier,
|
|
@businessKey uniqueidentifier,
|
|
@flag int = 0
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@RC int,
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@operatorID bigint,
|
|
@publisherID bigint,
|
|
@replActive bit
|
|
|
|
SET @RC = 0
|
|
SET @replActive = 0
|
|
|
|
IF @flag IS NULL
|
|
SET @flag = 0
|
|
|
|
--
|
|
-- Validate parameters
|
|
--
|
|
|
|
IF @serviceKey = @businessKey
|
|
BEGIN
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey ' + dbo.UUIDSTR(@serviceKey) + ' and businessKey ' + dbo.UUIDSTR(@businessKey) + ' are the same.'
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Validate publisher
|
|
SET @publisherID = dbo.publisherID(@PUID)
|
|
|
|
IF @publisherID IS NULL
|
|
BEGIN
|
|
SET @error = 60150 -- E_unknownUser
|
|
SET @context = 'PUID = ' + ISNULL(@PUID, 'NULL')
|
|
GOTO errorLabel
|
|
END
|
|
|
|
-- Validate operator / publisher association (replication only)
|
|
EXEC @RC=net_pubOperator_get @publisherID, @operatorID OUTPUT, @replActive OUTPUT
|
|
|
|
IF @RC <> 0
|
|
BEGIN
|
|
SET @error = 50006 -- E_subProcFailure
|
|
SET @context = ''
|
|
GOTO errorLabel
|
|
END
|
|
|
|
--
|
|
-- Validate parent business
|
|
--
|
|
|
|
IF (@businessKey IS NOT NULL) AND (EXISTS(SELECT * FROM [UDC_businessEntities] WHERE ([businessKey] = @businessKey)))
|
|
BEGIN
|
|
IF (dbo.getBusinessPublisherID(@businessKey) <> @publisherID)
|
|
BEGIN
|
|
SET @error = 60140 -- E_userMismatch
|
|
SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey)
|
|
GOTO errorLabel
|
|
END
|
|
END
|
|
|
|
--
|
|
-- Validate businessService
|
|
--
|
|
|
|
IF (@serviceKey IS NOT NULL)
|
|
BEGIN
|
|
IF EXISTS(SELECT * FROM [UDC_businessServices] WHERE ([serviceKey] = @serviceKey))
|
|
BEGIN
|
|
-- serviceKey exists. Make sure it belongs to current publisher
|
|
IF (dbo.getServicePublisherID(@serviceKey) <> @publisherID)
|
|
BEGIN
|
|
SET @error = 60140 -- E_userMismatch
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- serviceKey doesn't exist
|
|
IF (@replActive = 0) AND (@flag & 0x1 <> 0x1)
|
|
BEGIN
|
|
-- save isn't coming from replication and preassigned keys flag is not set so throw an error
|
|
SET @error = 60210 -- E_invalidKey
|
|
SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey)
|
|
GOTO errorLabel
|
|
END
|
|
END
|
|
END
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_businessService_validate
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Section: Find stored procedures
|
|
-- =============================================
|
|
|
|
-- =============================================
|
|
-- Name: net_find_businessService_businessKey
|
|
-- =============================================
|
|
|
|
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_find_businessService_businessKey' AND type = 'P')
|
|
DROP PROCEDURE net_find_businessService_businessKey
|
|
GO
|
|
|
|
CREATE PROCEDURE net_find_businessService_businessKey
|
|
@contextID uniqueidentifier,
|
|
@businessKey uniqueidentifier,
|
|
@rows int OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@contextRows int
|
|
|
|
DECLARE @tempKeys TABLE(
|
|
[entityKey] uniqueidentifier)
|
|
|
|
SET @contextRows = dbo.contextRows(@contextID)
|
|
|
|
IF @contextRows = 0
|
|
BEGIN
|
|
-- Standard services
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_businessEntities] BE ON BS.[businessID] = BE.[businessID]
|
|
WHERE
|
|
(BE.[businessKey] = @businessKey)
|
|
|
|
-- Projected services
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_serviceProjections] SP ON BS.[serviceKey] = SP.[serviceKey]
|
|
WHERE
|
|
(SP.[businessKey] = @businessKey)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- Standard services
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_businessEntities] BE ON BS.[businessID] = BE.[businessID]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE [contextID] = @contextID)) AND
|
|
(BE.[businessKey] = @businessKey)
|
|
|
|
-- Projected services
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_serviceProjections] SP ON BS.[serviceKey] = SP.[serviceKey]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE [contextID] = @contextID)) AND
|
|
(SP.[businessKey] = @businessKey)
|
|
END
|
|
|
|
-- All keys for this search argument are combined using a logical AND
|
|
|
|
IF @contextRows > 0
|
|
BEGIN
|
|
DELETE
|
|
[UDS_findResults]
|
|
WHERE
|
|
([entityKey] NOT IN (SELECT [entityKey] FROM @tempKeys WHERE [contextID] = @contextID))
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT [UDS_findResults] (
|
|
[contextID],
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
@contextID,
|
|
[entityKey]
|
|
FROM
|
|
@tempKeys
|
|
END
|
|
|
|
SELECT
|
|
@rows = COUNT(*)
|
|
FROM
|
|
[UDS_findResults]
|
|
WHERE
|
|
([contextID] = @contextID)
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_find_businessService_businessKey
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_find_businessService_name
|
|
-- =============================================
|
|
|
|
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'net_find_businessService_name' AND type = 'P')
|
|
DROP PROCEDURE net_find_businessService_name
|
|
GO
|
|
|
|
CREATE PROCEDURE net_find_businessService_name
|
|
@contextID uniqueidentifier,
|
|
@isoLangCode varchar(17) = '%',
|
|
@name nvarchar(450),
|
|
@exactNameMatch bit,
|
|
@caseSensitiveMatch bit,
|
|
@rows int OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
-- Adds name search arguments for a find_business
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@contextRows int,
|
|
@wildCardSarg nvarchar(451)
|
|
|
|
DECLARE @tempKeys TABLE(
|
|
[entityKey] uniqueidentifier,
|
|
[name] nvarchar(450))
|
|
|
|
SET @contextRows = dbo.contextRows(@contextID)
|
|
|
|
IF dbo.containsWildcard(@isoLangCode) = 0
|
|
SET @isoLangCode = @isoLangCode + N'%'
|
|
|
|
--
|
|
-- Do a wildcard search (default)
|
|
--
|
|
|
|
IF (@exactNameMatch = 0)
|
|
BEGIN
|
|
SET @wildCardSarg = @name
|
|
|
|
IF dbo.containsWildcard(@name) = 0
|
|
SET @wildCardSarg = @wildCardSarg + N'%'
|
|
|
|
IF @contextRows = 0
|
|
BEGIN
|
|
INSERT INTO @tempKeys(
|
|
[entityKey],
|
|
[name])
|
|
SELECT
|
|
BS.[serviceKey],
|
|
SN.[name]
|
|
FROM
|
|
[UDC_businessServices] BS JOIN
|
|
[UDC_names_BS] SN ON BS.[serviceID] = SN.[serviceID]
|
|
WHERE
|
|
(SN.[name] LIKE @wildCardSarg) AND
|
|
(SN.[isoLangCode] LIKE @isoLangCode)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO @tempKeys(
|
|
[entityKey],
|
|
[name])
|
|
SELECT
|
|
BS.[serviceKey],
|
|
SN.[name]
|
|
FROM
|
|
[UDC_businessServices] BS JOIN
|
|
[UDC_names_BS] SN ON BS.[serviceID] = SN.[serviceID]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE ([contextID] = @contextID))) AND
|
|
(SN.[name] LIKE @wildCardSarg) AND
|
|
(SN.[isoLangCode] LIKE @isoLangCode)
|
|
END
|
|
END
|
|
|
|
--
|
|
-- Do an exactNameMatch search
|
|
--
|
|
|
|
IF (@exactNameMatch = 1)
|
|
BEGIN
|
|
IF @contextRows = 0
|
|
BEGIN
|
|
INSERT INTO @tempKeys(
|
|
[entityKey],
|
|
[name])
|
|
SELECT
|
|
BS.[serviceKey],
|
|
SN.[name]
|
|
FROM
|
|
[UDC_businessServices] BS JOIN
|
|
[UDC_names_BS] SN ON BS.[serviceID] = SN.[serviceID]
|
|
WHERE
|
|
(SN.[name] = @name) AND
|
|
(SN.[isoLangCode] LIKE @isoLangCode)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO @tempKeys(
|
|
[entityKey],
|
|
[name])
|
|
SELECT
|
|
BS.[serviceKey],
|
|
SN.[name]
|
|
FROM
|
|
[UDC_businessServices] BS JOIN
|
|
[UDC_names_BS] SN ON BS.[serviceID] = SN.[serviceID]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE ([contextID] = @contextID))) AND
|
|
(SN.[name] = @name) AND
|
|
(SN.[isoLangCode] LIKE @isoLangCode)
|
|
END
|
|
END
|
|
|
|
IF (@caseSensitiveMatch = 1)
|
|
DELETE
|
|
@tempKeys
|
|
WHERE
|
|
(dbo.caseSensitiveMatch(@name, [name], @exactNameMatch) = 0)
|
|
|
|
-- name search arguments are combined using a logical OR by default
|
|
INSERT [UDS_findScratch] (
|
|
[contextID],
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
@contextID,
|
|
[entityKey]
|
|
FROM
|
|
@tempKeys
|
|
WHERE
|
|
([entityKey] NOT IN (SELECT [entityKey] FROM [UDS_findScratch] WHERE [contextID] = @contextID))
|
|
|
|
SET @rows = @@ROWCOUNT
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_find_businessService_name
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_find_businessService_categoryBag
|
|
-- =============================================
|
|
|
|
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_find_businessService_categoryBag' AND type = 'P')
|
|
DROP PROCEDURE net_find_businessService_categoryBag
|
|
GO
|
|
|
|
CREATE PROCEDURE net_find_businessService_categoryBag
|
|
@contextID uniqueidentifier,
|
|
@keyName nvarchar(4000),
|
|
@keyValue nvarchar(4000),
|
|
@tModelKey uniqueidentifier,
|
|
@orKeys bit = 0,
|
|
@rows int OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@contextRows int,
|
|
@genKeywordsMatch bit
|
|
|
|
DECLARE @tempKeys TABLE(
|
|
[entityKey] uniqueidentifier)
|
|
|
|
SET @contextRows = dbo.contextRows(@contextID)
|
|
|
|
SET @genKeywordsMatch = 0
|
|
|
|
IF @tModelKey = dbo.genKeywordsKey()
|
|
SET @genKeywordsMatch = 1
|
|
|
|
IF @contextRows = 0
|
|
BEGIN
|
|
IF @genKeywordsMatch = 0
|
|
BEGIN
|
|
-- Ignore keyName
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_categoryBag_BS] CB ON BS.[serviceID] = CB.[serviceID]
|
|
WHERE
|
|
([tModelKey] = @tModelKey) AND
|
|
([keyValue] = @keyValue)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- Include keyName
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_categoryBag_BS] CB ON BS.[serviceID] = CB.[serviceID]
|
|
WHERE
|
|
([tModelKey] = @tModelKey) AND
|
|
([keyValue] = @keyValue) AND
|
|
(ISNULL([keyName],'') = ISNULL(@keyName,''))
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF @genKeywordsMatch = 0
|
|
BEGIN
|
|
-- Ignore keyName
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_categoryBag_BS] CB ON BS.[serviceID] = CB.[serviceID]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE ([contextID] = @contextID))) AND
|
|
([tModelKey] = @tModelKey) AND
|
|
([keyValue] = @keyValue)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- Include keyName
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_categoryBag_BS] CB ON BS.[serviceID] = CB.[serviceID]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE ([contextID] = @contextID))) AND
|
|
([tModelKey] = @tModelKey) AND
|
|
([keyValue] = @keyValue) AND
|
|
(ISNULL([keyName],'') = ISNULL(@keyName,''))
|
|
END
|
|
END
|
|
|
|
IF @orKeys = 1
|
|
BEGIN
|
|
INSERT [UDS_findScratch] (
|
|
[contextID],
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
@contextID,
|
|
[entityKey]
|
|
FROM
|
|
@tempKeys
|
|
WHERE
|
|
([entityKey] NOT IN (SELECT [entityKey] FROM [UDS_findScratch] WHERE [contextID] = @contextID))
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF EXISTS(SELECT * FROM [UDS_findScratch] WHERE [contextID] = @contextID)
|
|
BEGIN
|
|
DELETE
|
|
[UDS_findScratch]
|
|
WHERE
|
|
([entityKey] NOT IN (SELECT [entityKey] FROM @tempKeys WHERE [contextID] = @contextID))
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT [UDS_findScratch] (
|
|
[contextID],
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
@contextID,
|
|
[entityKey]
|
|
FROM
|
|
@tempKeys
|
|
END
|
|
END
|
|
|
|
SELECT
|
|
@rows = COUNT(*)
|
|
FROM
|
|
[UDS_findScratch]
|
|
WHERE
|
|
([contextID] = @contextID)
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_find_businessService_categoryBag
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_find_businessService_tModelBag
|
|
-- =============================================
|
|
|
|
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_find_businessService_tModelBag' AND type = 'P')
|
|
DROP PROCEDURE net_find_businessService_tModelBag
|
|
GO
|
|
|
|
CREATE PROCEDURE net_find_businessService_tModelBag
|
|
@contextID uniqueidentifier,
|
|
@tModelKey uniqueidentifier,
|
|
@orKeys bit = 0,
|
|
@rows int OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@contextRows int
|
|
|
|
DECLARE @tempKeys TABLE(
|
|
[entityKey] uniqueidentifier)
|
|
|
|
SET @contextRows = dbo.contextRows(@contextID)
|
|
|
|
IF @contextRows = 0
|
|
BEGIN
|
|
-- check tModelInstances
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_bindingTemplates] BT ON BS.[serviceID] = BT.[serviceID]
|
|
JOIN [UDC_tModelInstances] TI ON BT.[bindingID] = TI.[bindingID]
|
|
WHERE
|
|
(TI.[tModelKey] = @tModelKey)
|
|
|
|
-- Check hostingRedirectors
|
|
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_bindingTemplates] BT ON BS.[serviceID] = BT.[serviceID]
|
|
JOIN [UDC_bindingTemplates] BT2 ON BT.[hostingRedirector] = BT2.[bindingKey]
|
|
JOIN [UDC_tModelInstances] TI ON BT2.[bindingID] = TI.[bindingID]
|
|
WHERE
|
|
(TI.[tModelKey] = @tModelKey)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- check tModelInstances
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_bindingTemplates] BT ON BS.[serviceID] = BT.[serviceID]
|
|
JOIN [UDC_tModelInstances] TI ON BT.[bindingID] = TI.[bindingID]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE ([contextID] = @contextID))) AND
|
|
(TI.[tModelKey] = @tModelKey)
|
|
|
|
-- Check hostingRedirectors
|
|
|
|
INSERT @tempKeys(
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
BS.[serviceKey]
|
|
FROM
|
|
[UDC_businessServices] BS
|
|
JOIN [UDC_bindingTemplates] BT ON BS.[serviceID] = BT.[serviceID]
|
|
JOIN [UDC_bindingTemplates] BT2 ON BT.[hostingRedirector] = BT2.[bindingKey]
|
|
JOIN [UDC_tModelInstances] TI ON BT2.[bindingID] = TI.[bindingID]
|
|
WHERE
|
|
(BS.[serviceKey] IN (SELECT [entityKey] FROM [UDS_findResults] WHERE ([contextID] = @contextID))) AND
|
|
(TI.[tModelKey] = @tModelKey)
|
|
END
|
|
|
|
|
|
IF @orKeys = 1
|
|
BEGIN
|
|
|
|
-- OR operation between @tempKeys and the UDS_findScratch table
|
|
|
|
INSERT [UDS_findScratch] (
|
|
[contextID],
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
@contextID,
|
|
[entityKey]
|
|
FROM
|
|
@tempKeys
|
|
WHERE
|
|
([entityKey] NOT IN (SELECT [entityKey] FROM [UDS_findScratch] WHERE [contextID] = @contextID))
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
-- AND operation between @tempKeys and the UDS_findScratch table
|
|
|
|
IF EXISTS(SELECT * FROM [UDS_findScratch] WHERE [contextID] = @contextID)
|
|
BEGIN
|
|
DELETE
|
|
[UDS_findScratch]
|
|
WHERE
|
|
([entityKey] NOT IN (SELECT [entityKey] FROM @tempKeys WHERE [contextID] = @contextID))
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT [UDS_findScratch] (
|
|
[contextID],
|
|
[entityKey])
|
|
SELECT DISTINCT
|
|
@contextID,
|
|
[entityKey]
|
|
FROM
|
|
@tempKeys
|
|
END
|
|
END
|
|
|
|
SELECT
|
|
@rows = COUNT(*)
|
|
FROM
|
|
[UDS_findScratch]
|
|
WHERE
|
|
([contextID] = @contextID)
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_find_businessService_tModelBag
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Name: net_find_businessService_commit
|
|
-- =============================================
|
|
|
|
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'net_find_businessService_commit' AND type = 'P')
|
|
DROP PROCEDURE net_find_businessService_commit
|
|
GO
|
|
|
|
CREATE PROCEDURE net_find_businessService_commit
|
|
@contextID uniqueidentifier,
|
|
@sortByNameAsc bit,
|
|
@sortByNameDesc bit,
|
|
@sortByDateAsc bit,
|
|
@sortByDateDesc bit,
|
|
@maxRows int,
|
|
@truncated int OUTPUT
|
|
WITH ENCRYPTION
|
|
AS
|
|
BEGIN
|
|
-- Finalizes a find_business and returns a key list
|
|
DECLARE
|
|
@error int,
|
|
@context nvarchar(4000),
|
|
@contextRows int
|
|
|
|
SET @contextRows = dbo.contextRows(@contextID)
|
|
SET @truncated = 0
|
|
|
|
IF @contextRows = 0
|
|
RETURN 0
|
|
|
|
DECLARE @tempKeys TABLE (
|
|
[seqNo] bigint IDENTITY PRIMARY KEY ,
|
|
[entityKey] uniqueidentifier,
|
|
[name] nvarchar(450) NULL,
|
|
[lastChange] bigint NULL,
|
|
[serviceID] bigint NULL)
|
|
|
|
-- Set default sorting option
|
|
IF (@sortByNameAsc = 0) AND (@sortByNameDesc = 0) AND (@sortByDateAsc = 0) AND (@sortByDateDesc = 0)
|
|
SET @sortByNameAsc = 1
|
|
|
|
-- Set maxRows if default was passed
|
|
IF ISNULL(@maxRows,0) = 0
|
|
SET @maxRows = dbo.configValue('Find.MaxRowsDefault')
|
|
|
|
-- sortByNameAsc
|
|
IF (@sortByNameAsc = 1)
|
|
BEGIN
|
|
IF (@sortByDateAsc = 0) AND (@sortByDateDesc = 0)
|
|
SET @sortByDateAsc = 1
|
|
|
|
IF (@sortByDateAsc = 1)
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
2 ASC,
|
|
3 ASC,
|
|
4 ASC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
2 ASC,
|
|
3 DESC,
|
|
4 DESC
|
|
END
|
|
|
|
GOTO endLabel
|
|
END
|
|
|
|
-- sortByNameDesc
|
|
IF (@sortByNameDesc = 1)
|
|
BEGIN
|
|
IF (@sortByDateAsc = 0) AND (@sortByDateDesc = 0)
|
|
SET @sortByDateAsc = 1
|
|
|
|
IF (@sortByDateAsc = 1)
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
2 DESC,
|
|
3 ASC,
|
|
4 ASC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
2 DESC,
|
|
3 DESC,
|
|
4 DESC
|
|
END
|
|
|
|
GOTO endLabel
|
|
END
|
|
|
|
-- sortByDateAsc
|
|
IF (@sortByDateAsc = 1)
|
|
BEGIN
|
|
IF (@sortByNameAsc = 0) AND (@sortByNameDesc = 0)
|
|
SET @sortByNameAsc = 1
|
|
|
|
IF (@sortByNameAsc = 1)
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
3 ASC,
|
|
4 ASC,
|
|
2 ASC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
3 ASC,
|
|
4 ASC,
|
|
2 DESC
|
|
END
|
|
|
|
GOTO endLabel
|
|
END
|
|
|
|
-- sortByDateDesc
|
|
IF (@sortByDateDesc = 1)
|
|
BEGIN
|
|
IF (@sortByNameAsc = 0) AND (@sortByNameDesc = 0)
|
|
SET @sortByNameAsc = 1
|
|
|
|
IF (@sortByNameAsc = 1)
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
3 DESC,
|
|
4 DESC,
|
|
2 ASC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT @tempKeys(
|
|
[entityKey],
|
|
[name],
|
|
[lastChange],
|
|
[serviceID])
|
|
SELECT DISTINCT
|
|
FR.[entityKey],
|
|
(SELECT TOP 1 [name] FROM [UDC_names_BS] WHERE ([serviceID] = dbo.serviceID([entityKey]))),
|
|
BS.[lastChange],
|
|
BS.[serviceID]
|
|
FROM
|
|
[UDS_findResults] FR
|
|
JOIN [UDC_businessServices] BS ON FR.[entityKey] = BS.[serviceKey]
|
|
WHERE
|
|
(@contextID = FR.[contextID])
|
|
ORDER BY
|
|
3 DESC,
|
|
4 DESC,
|
|
2 DESC
|
|
END
|
|
|
|
GOTO endLabel
|
|
END
|
|
|
|
endLabel:
|
|
-- Set @truncated
|
|
IF (SELECT COUNT(*) FROM @tempKeys) > @maxRows
|
|
SET @truncated = 1
|
|
|
|
-- Return keys
|
|
SELECT
|
|
TK.[entityKey],
|
|
BE.[businessKey] AS [parentEntityKey] -- Must look up parent businessKey in case find_service with no businessKey is requested
|
|
FROM
|
|
@tempKeys TK
|
|
JOIN [UDC_businessServices] BS ON TK.[entityKey] = BS.[serviceKey]
|
|
JOIN [UDC_businessEntities] BE ON BS.[businessID] = BE.[businessID]
|
|
WHERE
|
|
([seqNo] <= @maxRows)
|
|
|
|
-- Run cleanup
|
|
EXEC net_find_cleanup @contextID
|
|
|
|
RETURN 0
|
|
|
|
errorLabel:
|
|
RAISERROR (@error, 16, 1, @context)
|
|
RETURN 1
|
|
END -- net_find_businessService_commit
|
|
GO
|
|
|
|
|