Class: ASpaceImport::RecordBatch
- Inherits:
 - 
      Object
      
        
- Object
 - ASpaceImport::RecordBatch
 
 - Defined in:
 - backend/app/converters/lib/parse_queue.rb
 
Overview
Manages the JSON object batch set
Class Method Summary (collapse)
Instance Method Summary (collapse)
- 
  
    
      - (Object) <<(obj) 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      - (Object) each_open_file_path {|@working_file.path| ... }
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      - (Object) flush 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      - (Object) flush_last 
    
    
  
  
  
  
  
  
  
  
  
    
This URI check stops regular JSONModels from going through.
 - 
  
    
      - (Object) get_output_path 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      - (RecordBatch) initialize(opts = {}) 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of RecordBatch.
 - 
  
    
      - (Object) record_filter=(predicate) 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      - (Object) working_area 
    
    
  
  
  
  
  
  
  
  
  
    
 
Constructor Details
- (RecordBatch) initialize(opts = {})
Returns a new instance of RecordBatch
      11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 11 def initialize(opts = {}) opts.each do |k,v| instance_variable_set("@#{k}", v) end @must_be_unique = ['subject'] @record_filter = ->(record) { true } @uri_remapping = {} @seen_records = {} @working_file = opts[:working_file] || ASUtils.tempfile("import_batch_working_file") @working_area = [] end  | 
  
Class Method Details
+ (Object) dedupe_subrecords(obj)
      28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 28 def self.dedupe_subrecords(obj) ASpaceImport::FIELDS_TO_DEDUPE.each do |subrecord| if obj.respond_to?(subrecord) && obj.send(subrecord).is_a?(Array) hashes = [] obj.send(subrecord).map! { |json| hash = json.to_hash.hash if hashes.include?(hash) nil else hashes << hash json end } obj.send(subrecord).compact! end end end  | 
  
Instance Method Details
- (Object) <<(obj)
      54 55 56 57  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 54 def <<(obj) self.class.dedupe_subrecords(obj) @working_area.push(obj) end  | 
  
- (Object) each_open_file_path {|@working_file.path| ... }
      84 85 86 87  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 84 def each_open_file_path yield @working_file.path if @working_file && @working_file.path yield @batch_file.path if @batch_file && @batch_file.path end  | 
  
- (Object) flush
      60 61 62 63 64  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 60 def flush while !@working_area.empty? flush_last end end  | 
  
- (Object) flush_last
This URI check stops regular JSONModels from going through. JSONModelWrap is what puts that here…
      69 70 71 72 73 74 75  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 69 def flush_last last = @working_area.pop if last.class.method_defined? :uri and !last.uri.nil? _push(last) end end  | 
  
- (Object) get_output_path
      78 79 80 81  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 78 def get_output_path close @batch_file.path end  | 
  
- (Object) record_filter=(predicate)
      90 91 92  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 90 def record_filter=(predicate) @record_filter = predicate end  | 
  
- (Object) working_area
      49 50 51  | 
    
      # File 'backend/app/converters/lib/parse_queue.rb', line 49 def working_area @working_area end  |