0% found this document useful (0 votes)
42 views13 pages

tmpB5B TMP

The document describes the process for inserting and updating publication records in a database. It involves: 1. Deduplicating the publication, inserting/updating the core publication tables, then associating authors, keywords, affiliations, and other metadata while following a specific lock order on the tables. 2. For insertions, it additionally suggests publications to potential author users, confirms author associations, and handles author keyword suggestions. 3. Updates remove authors and keywords for authors no longer associated with the publication, update existing author associations and keywords, and reset affiliations.

Uploaded by

nithiananthi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views13 pages

tmpB5B TMP

The document describes the process for inserting and updating publication records in a database. It involves: 1. Deduplicating the publication, inserting/updating the core publication tables, then associating authors, keywords, affiliations, and other metadata while following a specific lock order on the tables. 2. For insertions, it additionally suggests publications to potential author users, confirms author associations, and handles author keyword suggestions. 3. Updates remove authors and keywords for authors no longer associated with the publication, update existing author associations and keywords, and reset affiliations.

Uploaded by

nithiananthi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

FeedPublications

22 September 2015

11:49

For each publication in payload


Deduplication
GetPublicationStatus
If insert, GetPublicationsByTitle
If DoiExists, GetRepositoriesToInsert
If Insert
InsertPublication (PUB_Publication, PUB_Publication_Repositories)
InsertMasterAuthorNames (PUB_Author)
For each author
InsertPublicationAuthors (PUB_Publication_Author)
SuggestPublicationForUser (For each match for each author with User_Id == 0)
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
SuggestPublicationForUser (For each confirmed author)
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
ConfirmPublicationForUser (For each confirmed author)
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
EnablePublicationAuthorUser (PUB_Publication_Author_User)
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)
SaveNewMasterKeywords
InsertPublicationKeywords (PUB_Publication_Keyword)
GetKeywordsByPublicationIds
For each confirmed author
GetKeywordsCountByUserId
For New Keywords
InsertKeywordOnPublicationInsert
Else
UpdateKeywordOnPublicationsert
StorePublicationAffiliations
SaveMasterRepositories (PUB_Affiliation_Repository)
SaveMasterAffiliations (PUB_Affiliation, PUB_Affiliation_Repositories)
SavePublicationAffiliation (PUB_Publication_Affiliations)
SaveAuthorAffiliations (PUB_Publication_Author_Affiliations)
If Update
UpdatePublication (PUB_Publication_Repositories, PUB_Publication)

CrawledPublicationsController Page 1

Crawled Publication Insertion Lock Order


PUB_Publication
PUB_Publication_Repositories
PUB_Author
PUB_Publication_Author
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity
PUB_Publication_Keyword
PUB_Affiliation_Repository
PUB_Affiliation
PUB_Affiliation_Repositories
PUB_Publication_Affiliations
PUB_Publication_Author_Affiliations

Crawled Publication Update Lock Order


PUB_Publication_Repositories
PUB_Publication

FeedInternalPublications
22 September 2015

11:49

For each publication in payload


Deduplication
GetFrontiersPublicationStatus
If insert, GetPublicationsByTitle
If DoiExists, GetRepositoriesToInsert
If Insert
InsertPublication (PUB_Publication, PUB_Publication_Repositories)
InsertMasterAuthorNames (PUB_Author)
For each author
InsertPublicationAuthors (PUB_Publication_Author)
SuggestPublicationForUser (For each match for each author with User_Id == 0)
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
SuggestPublicationForUser (For each confirmed author)
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
ConfirmPublicationForUser (For each confirmed author)
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
EnablePublicationAuthorUser (PUB_Publication_Author_User)
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)
SaveNewMasterKeywords
InsertPublicationKeywords (PUB_Publication_Keyword)
GetKeywordsByPublicationIds
For each confirmed author
GetKeywordsCountByUserId
For New Keywords
InsertKeywordOnPublicationInsert
Else
UpdateKeywordOnPublicationsert
StorePublicationAffiliations
SaveMasterRepositories (PUB_Affiliation_Repository)
SaveMasterAffiliations (PUB_Affiliation, PUB_Affiliation_Repositories)
SavePublicationAffiliation (PUB_Publication_Affiliations)
SaveAuthorAffiliations (PUB_Publication_Author_Affiliations)
If Update
InsertOrUpdateInternalPublication (PUB_Publication)
RemoveKeywordsForPreviousAuthors
GetKeywordsByPublicationIds
GetAuthorsByPublicationId
For each author in previous authors
GetKeywordsCountByUserId
UpdateKeywordOnPublicationInsert
UpdateKeywords
GetUserStatusByPublicationId
For each previously confirmed user TryRemoveUserKeywordsOnPublicationUpdate
GetKeywordsByPublicationIds
UpdateKeywordOnPublicationReject
UpdateYourKeywordsAfterRejection
DeduplicateInternalAuthors
InsertMasterAuthorNames (PUB_Authors)
ResetRelationForPublicationAuthors (PUB_Publication_Author_User, PUB_Publication_Author)
For each author
SavePublicationAuthor (PUB_Publication_Author)
If confirmed
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
ConfirmPublicationForUser
GetUserStatusByPublicationId
InternalPublicationsController Page 2

Internal Publication Insertion Lock Order


PUB_Publication
PUB_Publication_Repositories
PUB_Author
PUB_Publication_Author
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity
PUB_Publication_Keyword
PUB_Affiliation_Repository
PUB_Affiliation
PUB_Affiliation_Repositories
PUB_Publication_Affiliations
PUB_Publication_Author_Affiliations
Internal Publication Update Lock Order
PUB_Publication
PUB_Authors
PUB_Publication_Author_User
PUB_Publication_Author
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity
PUB_Publication_Affiliations
PUB_Publication_Author_Affiliations
PUB_Affiliation
PUB_Affiliation_Repository
PUB_Affiliation_Repositories

GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
EnablePublicationAuthorUser (PUB_Publication_Author_User)
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)
Else
For each match
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
RemoveAllPublicationAffiliations (PUB_Publication_Affiliations, PUB_Publication_Author_Affiliations,
PUB_Affiliation)
StorePublicationAffiliations
SaveMasterRepositories (PUB_Affiliation_Repository)
SaveMasterAffiliations (PUB_Affiliation, PUB_Affiliation_Repositories)
SavePublicationAffiliation (PUB_Publication_Affiliations)
SaveAuthorAffiliations (PUB_Publication_Author_Affiliations)

InternalPublicationsController Page 3

Insert
22 September 2015

16:56

DeduplicatePublication
GetPublicationIdsByDoi
InsertPublication (PUB_Publication, PUB_Publication_Repositories)
SaveNewMasterKeywords
InsertPublicationKeywords (PUB_Publication_Keyword)
InsertMasterAuthorNames (PUB_Author)
InsertPublicationAuthors (PUB_Publication_Author)
For each confirmed author
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
ConfirmPublicationForUser
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
EnablePublicationAuthorUser (PUB_Publication_Author_User)
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)
StorePublicationAffiliations
SaveMasterRepositories (PUB_Affiliation_Repository)
SaveMasterAffiliations (PUB_Affiliation, PUB_Affiliation_Repositories)
SavePublicationAffiliation (PUB_Publication_Affiliations)
SaveAuthorAffiliations (PUB_Publication_Author_Affiliations)
InsertOrUpdateUploadedFile (PUB_Publication_UploadFile)

ManuallyAddedPublicationsController Page 4

Manually Added Publication insertion lock order


PUB_Publication
PUB_Publication_Repositories
PUB_Publication_Keyword
PUB_Author
PUB_Publication_Author
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity
PUB_Affiliation_Repository
PUB_Affiliation
PUB_Affiliation_Repositories
PUB_Publication_Affiliations
PUB_Publication_Author_Affiliations
PUB_Publication_UploadFile

Edit
23 September 2015

08:59

UpdatePublicationComplete (PUB_Publication)
InsertOrUpdateUploadedFile (PUB_Publication_UploadFile)
PopulateConfirmedAuthors
GetExistingUsers
RemoveKeywordsForPreviousAuthors
GetKeywordsByPublicationIds
GetAuthorsByPublicationId
For each author
GetKeywordsCountByUserId
UpdateKeywordOnPublicationInsert
UpdateKeywords
GetUserStatusByPublicationId
For each previously confirmed user TryRemoveUserKeywordsOnPublicationUpdate
GetKeywordsByPublicationIds
UpdateKeywordOnPublicationReject
UpdateYourKeywordsAfterRejection
DeduplicateInternalAuthors
InsertMasterAuthorNames (PUB_Authors)
ResetRelationForPublicationAuthors (PUB_Publication_Author_User, PUB_Publication_Author)
For each author
SavePublicationAuthor (PUB_Publication_Author)
If confirmed
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
If confirmed user is owner
ConfirmPublicationForUser
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
EnablePublicationAuthorUser (PUB_Publication_Author_User)
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)
Else
For each match
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
RemoveAllPublicationAffiliations (PUB_Publication_Affiliations, PUB_Publication_Author_Affiliations,
PUB_Affiliation)
StorePublicationAffiliations
SaveMasterRepositories (PUB_Affiliation_Repository)
SaveMasterAffiliations (PUB_Affiliation, PUB_Affiliation_Repositories)
SavePublicationAffiliation (PUB_Publication_Affiliations)
SaveAuthorAffiliations (PUB_Publication_Author_Affiliations)

ManuallyAddedPublicationsController Page 5

Manually added publication update lock order


PUB_Publication
PUB_Publication_Upload_File
PUB_Authors
PUB_Publication_Author_User
PUB_Publication_Author
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity
PUB_Publication_Affiliations
PUB_Publication_Author_Affiliations
PUB_Affiliation
PUB_Affiliation_Repository
PUB_Affiliation_Repositories

InsertManuallyCrawled
23 September 2015

10:56

Ends up calling CrawledPublicationService.SaveSinglePublication. Same DB operations that


FeedPublications

ManuallyAddedPublicationsController Page 6

ConfirmUpdateInvite
23 September 2015

10:56

GetPublicationById
GetUserStatusByPublicationId
SaveEmailCases
UpdateAuthorEmails (PUB_Publication_Author, PUB_Publication)
GetMatchedAuthor
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
SaveConfirmCases
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser
ConfirmPublicationForUser
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
EnablePublicationAuthorUser (PUB_Publication_Author_User)
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)
UpdateAuthorUserEmail
UpdateAuthorUserEmail (PUB_Publication_Author)
SaveInviteCases
SaveMasterAuthorNames
InsertMasterAuthorNames (PUB_Author)
InsertAuthorsInPublication
InsertNewAuthorInPublication (PUB_Publication_Author)
SuggestPublicationToAuthorList
GetMatchedAuthor
SuggestPublicationForUser
GetPublicationAuthorIdFromPublicationSequence
GetPublicationAuthorUserIdFromPublicationAuthorAndUser
SavePublicationAuthorUser (PUB_Publication_Author_User)
GetKeywordsByPublicationIds
SaveNewMasterKeywords
SuggestKeywordsToUser

ManuallyAddedPublicationsController Page 7

ConfirmUpdateInvite Lock Order


PUB_Publication_Author
PUB_Publication
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity
PUB_Author

ImportPublications
22 September 2015

16:56

PreprocessToImport
HasValidRepositories
GetAllRepositories
DeduplicatePublicationsAndUpdateStatus
GetAllPublicationsByDOIs
GetAllPublicationsByRepositories
GetPublicationStatusForUser
Import
For each publication
Existing
GetPublicationById
UpdatePublication
InsertCitation (PUB_Publication_Citation)
UpdatePublication (PUB_Publication_Repositories, PUB_Publication)
InsertUntrustedRepositories (PUB_Publication_Untrusted_Repository)
ConfirmPublication
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
GetAuthorNamesComparison
GetAuthorsByPublicationId
GetUserNamesByUserId
RemoveUserLinksFromPublication (PUB_Publication_Author_User)
SavePublicationAuthorUser (PUB_Publication_Author_User)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)
New
InsertPublication
InsertPublication (PUB_Publication, PUB_Publication_Repositories)
InsertOrUpdateCitation (PUB_Publication_Citation)
InsertUntrustedRepositories (PUB_Publication_Untrusted_Repository)
InsertMasterAuthorNames (PUB_Author)
InsertPublicationAuthors (PUB_Publication_Author)
ConfirmPublication
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
GetAuthorNamesComparison
GetAuthorsByPublicationId
GetUserNamesByUserId
RemoveUserLinksFromPublication (PUB_Publication_Author_User)
SavePublicationAuthorUser (PUB_Publication_Author_User)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)

ORCIDController Page 8

ORCID ImportPublications Insertion Lock Order


PUB_Publication
PUB_Publication_Repositories
PUB_Publication_Citation
PUB_Publication_Untrusted_Repository
PUB_Author
PUB_Publication_Author
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity

ORCID ImportPublications Update Lock Order


PUB_Publication_Citation
PUB_Publication_Repositories
PUB_Publication
PUB_Publication_Untrusted_Repository
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity

ConfirmPublicationByUser
22 September 2015

16:57

ConfirmPublication
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
GetAuthorNamesComparison
GetAuthorsByPublicationId
GetUserNamesByUserId
RemoveUserLinksFromPublication (PUB_Publication_Author_User)
SavePublicationAuthorUser (PUB_Publication_Author_User)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)

UsersController Page 9

ConfirmPublicationByUser Lock Order


PUB_Publication
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity

ConfirmPublication
23 September 2015

10:53

GetPublicationIdFromDoi
ConfirmPublication
GetUserStatusByPublicationId
If empty keywords
GetKeywordsByPublicationId
SaveNewMasterKeywords
InsertUserKeywords
SavePublicationUser (PUB_Publication)
UpdateVersioningDates (PUB_Publication)
GetAuthorNamesComparison
GetAuthorsByPublicationId
GetUserNamesByUserId
RemoveUserLinksFromPublication (PUB_Publication_Author_User)
SavePublicationAuthorUser (PUB_Publication_Author_User)
UpdatePublicationsUser (PUB_Publication_User)
If previously rejected
SuggestKeywordsToUser
InsertSyncQueue for Coauthor (PUB_Sync_Queue)
InsertPublicationSyncQueue (PUB_Sync_Queue)
PublicationActivityInsert (PUB_Activity)

UsersController Page 10

ConfirmPublication Lock Order


PUB_Publication
PUB_Publication_Author_User
PUB_Publication_User
PUB_Sync_Queue
PUB_Activity

ConfirmAllPublications
23 September 2015

10:53

Iterates through the same ConfirmPublication used in ConfirmPublicationByUser

UsersController Page 11

RejectPublicationByUser
23 September 2015

10:53

RejectPublication
RejectPublicationForUser
GetExistingUsers
GetPublicationById
GetUserStatusByPublicationId
RejectPublication
RejectPublications (PUB_Publication_User, PUB_Publication_Author_User)
UpdateVersioningDates (PUB_Publication)
PublicationActivityUpdate (PUB_Activity)
InsertToSyncQueueForAddOrRemoveCoAuthorsForActivityUser (PUB_Sync_Queue)
InsertToSyncQueueForAddOrRemoveActivityUserForCoAuthors (PUB_Sync_Queue)
RemoveKeywords
GetKeywordsByPublicationIds
UpdateKeywordOnPublicationReject
UpdateYourKeywordsAfterRejection
InsertPublicationSyncQueue (PUB_Sync_Queue)

UsersController Page 12

RejectPublicationByUser Lock Order


PUB_Publication_User
PUB_Publication_Author_User
PUB_Publication
PUB_Activity
PUB_Sync_Queue

RejectAllPublications
23 September 2015

10:54

Iterates through the same RejectPublication used in RejectPublicationByUser

UsersController Page 13

You might also like