Skip to content
Snippets Groups Projects
Commit 8c1c3327 authored by Anusha Ranganathan's avatar Anusha Ranganathan
Browse files

Merge branch 'fix_bug/334_importer_validate_title' into 'develop'

Validate and fix title in importer

Closes FDM/rdm-system/antleaf-projectmanagement#334

See merge request !258
parents 074959ce 188aa765
Branches
Tags
1 merge request!258Validate and fix title in importer
Pipeline #12995 failed
......@@ -2,11 +2,12 @@
module Bulkrax
class CrcFolderComplexModalityEntry < CrcFolderEntry
include ComplexHelper
def build
begin
raise ComplexSessionCreatedError unless session_created?
complex_modality = ComplexModality.new(modality_title: raw_metadata['title'], modality: self.raw_metadata['modality'])
complex_modality = ComplexModality.new(modality_title: validate_and_fix_title, modality: self.raw_metadata['modality'])
complex_modality.source_identifier = identifier
complex_modality.parent_source_identifier = self.raw_metadata['parents']
......@@ -29,5 +30,25 @@ module Bulkrax
def session_created?
ComplexSession.find_by(source_identifier: self.raw_metadata['parents'])
end
def validate_and_fix_title
parent = ::ComplexSession.find_by(source_identifier: self.raw_metadata['parents'])
siblings = parent.complex_modalities
modality_title = sanitize_title(self.raw_metadata['title'])
modality_title = modality_title.rjust(3, '0') if modality_title.length < 3
suffix = 1
new_title = modality_title
if siblings.present?
while siblings.where(modality_title: new_title).present?
new_title = "#{modality_title}_#{suffix}"
suffix += 1
end
end
new_title
end
end
end
......@@ -2,11 +2,12 @@
module Bulkrax
class CrcFolderComplexSessionEntry < CrcFolderEntry
include ComplexHelper
def build
begin
raise ComplexSubjectCreatedError unless subject_created?
complex_session = ComplexSession.new(session_title: self.raw_metadata['title'], session_date_recorded: self.raw_metadata['record_date'])
complex_session = ComplexSession.new(session_title: validate_and_fix_title, session_date_recorded: self.raw_metadata['record_date'])
complex_session.source_identifier = identifier
complex_session.parent_source_identifier = self.raw_metadata['parents']
......@@ -29,5 +30,26 @@ module Bulkrax
def subject_created?
ComplexSubject.find_by(source_identifier: self.raw_metadata['parents'])
end
def validate_and_fix_title
parent = ::ComplexSubject.find_by(source_identifier: self.raw_metadata['parents'])
siblings = parent.complex_sessions
session_title = sanitize_title(self.raw_metadata['title'])
session_title = session_title.rjust(3, '0') if session_title.length < 3
suffix = 1
new_title = session_title
if siblings.present?
while siblings.where(session_title: new_title).present?
new_title = "#{session_title}_#{suffix}"
suffix += 1
end
end
new_title
end
end
end
......@@ -2,12 +2,13 @@
module Bulkrax
class CrcFolderComplexSubjectEntry < CrcFolderEntry
include ComplexHelper
def build
begin
raise CrcDatasetCreatedError unless crc_dataset_created?
complex_subject = ComplexSubject.new(self.raw_metadata.slice('subject_species', 'subject_type', 'subject_sex', 'subject_age'))
complex_subject.subject_title = raw_metadata['title']
complex_subject.subject_title = validate_and_fix_title
complex_subject.source_identifier = identifier
complex_subject.parent_source_identifier = self.raw_metadata['parents']
......@@ -30,5 +31,25 @@ module Bulkrax
def crc_dataset_created?
::CrcDataset.where(source: self.raw_metadata['parents']).present?
end
def validate_and_fix_title
parent = ::CrcDataset.where(source: self.raw_metadata['parents']).first
siblings = parent.complex_subjects
subject_title = sanitize_title(self.raw_metadata['title'])
subject_title = subject_title.rjust(3, '0') if subject_title.length < 3
suffix = 1
new_title = subject_title
if siblings.present?
while siblings.where(subject_title: new_title).present?
new_title = "#{subject_title}_#{suffix}"
suffix += 1
end
end
new_title
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment