Парсер Univocity - итератор, генерирующий классы scala case

Использование платформы Univocity для выполнения пользовательских требований к синтаксическому анализу. у нас есть итератор, выводящий каждую строку как событие, вызывая parseNext(), мы не хотим использовать "parse(File file)" .

У нас есть этот кейс-класс Scala в качестве окончательного вывода, но на данный момент мы обрабатываем вывод парсера и используем фабричный класс для создания кейс-классов Scala.

Есть ли способ итератора для создания объектов класса case из однозначности (я нашел BeanListProcessor, но он не работает для итератора)?

Ответ может быть на Java или Scala.

Спасибо, Р

  def parseRecord(field: Array[String], univocityContext: Option[ParsingContext]): Option[lineEvent] = {

        val parsingContext = univocityContext.get
        val parsedEvent = new ParsedEventConstructor()

      for ((index, counter) <- parsingContext.extractedFieldIndexes().zipWithIndex){

        val columnHeader  = parsingContext.headers()(index)

        columnHeader match {

          case "header1" => {
            parsedEvent.parsedheader1 += field(counter)
          }
          case "header2" => {
            parsedEvent.parsedheader2 += field(counter)
          }
          case _ => parsedEvent.parsedOtherValues += field(counter)
        }
      }

    Some(parsedEvent.getParsedEvent())
  }

person Ramesh Sivaraman    schedule 11.09.2016    source источник


Ответы (1)


uniVocity-parsers имеет BeanProcessor (без слова "список" в названии), который будет отправлять каждый проанализированный bean-компонент в метод обратного вызова beanProcessed, который необходимо реализовать. BeanListProcessor — это просто удобный класс, который расширяет BeanProcessor для добавления каждого объекта в список, это не единственный способ получить объекты.

Вы также можете использовать объект CsvRoutines и его метод iterate для перебора bean-компонентов без использования обратного вызова, упомянутого выше. Проверьте этот пример.

person Jeronimo Backes    schedule 12.09.2016
comment
Большое спасибо, Джеронимо.. это помогло, я узнал из других ваших тем, что вы разработали Univocity?? Отличная работа, я очень впечатлен выступлением .. Я хотел бы внести свой вклад, если я могу каким-либо образом, если это возможно? Привет, Р - person Ramesh Sivaraman; 12.09.2016
comment
Рад помочь и услышать, что вы заинтересованы в содействии. Не стесняйтесь отправлять запросы на вытягивание с улучшениями или сообщать о любых найденных ошибках. Ваше здоровье! - person Jeronimo Backes; 12.09.2016