def execute
      allocation = {}
      File.open(infile).each_with_index do |line, index|
        row = row_filter.process(line, row: index)
        next if row.nil? or row.empty?
        key = key_filter.process(row)
        allocation[key] = [] if allocation[key].nil?
        allocation[key] << col_filter.process(row).split(';') 
      end

      File.open(outfile, 'w') do |out|
        allocation.each do |key, values|
          out.puts "#{key};#{values.flatten.uniq.sort.join(';')}"
        end
      end
    end
def execute
      allocation = {}
      File.open(infile).each_with_index do |line, index|
        row = row_filter.process(line, row: index)
        next if row.nil? or row.empty?
        key = key_filter.process(row)
        allocation[key] = [] if allocation[key].nil?
        allocation[key] << col_filter.process(row).split(';') 
      end

      File.open(outfile, 'w') do |out|
        allocation.each do |key, values|
          out.puts "#{key};#{values.flatten.uniq.sort.join(';')}"
        end
      end
    end
Creates a new allocator. Options are infile, outfile, key, rows and columns to allocate to key
 Executes the allocator and assigns column values to the key