View Javadoc
1   /*
2    * CSVeed (https://github.com/42BV/CSVeed)
3    *
4    * Copyright 2013-2023 CSVeed.
5    *
6    * All rights reserved. This program and the accompanying materials
7    * are made available under the terms of The Apache Software License,
8    * Version 2.0 which accompanies this distribution, and is available at
9    * https://www.apache.org/licenses/LICENSE-2.0.txt
10   */
11  package org.csveed.bean;
12  
13  import java.util.List;
14  
15  import org.csveed.api.Header;
16  import org.csveed.row.RowReader;
17  
18  /**
19   * <p>
20   * The BeanReader is responsible for reading CSV rows and converting those into beans. There are two ways to initialize
21   * a {@link org.csveed.bean.BeanReaderImpl}:
22   * </p>
23   * <ul>
24   * <li>Point it to class. The {@link org.csveed.annotations} in the class are read, as is the order of the properties
25   * within the class.</li>
26   * <li>Roll your own. Pass a {@link BeanInstructions} implementation with your own configuration settings</li>
27   * </ul>
28   *
29   * @param <T>
30   *            the bean class into which the rows are converted
31   */
32  public interface BeanReader<T> {
33  
34      /**
35       * Reads all rows from the file and return these as beans.
36       *
37       * @return all beans read from the Reader
38       */
39      List<T> readBeans();
40  
41      /**
42       * Reads a single row and returns this as a bean. The RowReader will keep track of its state.
43       *
44       * @return Bean read from the Reader
45       */
46      T readBean();
47  
48      /**
49       * Returns the first readable line of the CSV file as header, regardless if useHeader==true.
50       *
51       * @return header
52       */
53      Header readHeader();
54  
55      /**
56       * Returns the line from which the bean was read. Note that a line is seen as a legitimate CSV row, not necessarily
57       * a printable line (unless multi-lines are used, these values are the same).
58       *
59       * @return current line number
60       */
61      int getCurrentLine();
62  
63      /**
64       * States whether the Reader is done with the file.
65       *
66       * @return true if file is finished
67       */
68      boolean isFinished();
69  
70      /**
71       * Returns the underlying line reader for the bean reader.
72       *
73       * @return the underlying line reader
74       */
75      RowReader getRowReader();
76  
77      /**
78       * The set of instructions for dealing with beans.
79       *
80       * @return bean instructions
81       */
82      BeanInstructions getBeanInstructions();
83  
84  }