Skip to content
Snippets Groups Projects
Commit 188aa765 authored by Gyan Gupta's avatar Gyan Gupta Committed by Anusha Ranganathan
Browse files

Validate and fix title in importer

parent ae2e670f
Branches
Tags
1 merge request!258Validate and fix title in importer
......@@ -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