View Javadoc
1   package net.sumaris.importation.util.csv;
2   
3   /*-
4    * #%L
5    * SUMARiS:: Core Importation
6    * %%
7    * Copyright (C) 2018 - 2019 SUMARiS Consortium
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the
12   * License, or (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU General Public
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
23   */
24  
25  import com.google.common.base.Preconditions;
26  import net.sumaris.core.dao.technical.schema.SumarisColumnMetadata;
27  import net.sumaris.core.dao.technical.schema.SumarisTableMetadata;
28  
29  public class FileMessageFormatter {
30  
31      public static String format(FileReader reader, Integer columnIndex, String message) {
32          Preconditions.checkArgument(columnIndex == null || columnIndex.intValue() >= 0);
33          int lineNumber = reader.getCurrentLine();
34          Preconditions.checkArgument(lineNumber > 0);
35          StringBuilder sb = new StringBuilder();
36          sb.append("[").append(reader.getFileName());
37          if (columnIndex != null) {
38              String[] headers = reader.getHeaders();
39              if (headers != null && columnIndex.intValue() < headers.length) {
40                  sb.append(".").append(headers[columnIndex]);
41              }
42          }
43          sb.append(":")
44                  .append(lineNumber)
45                  .append("] ")
46                  .append(message);
47          return sb.toString();
48      }
49  
50      public static String format(SumarisTableMetadata table, SumarisColumnMetadata colMeta, int lineNumber, String message) {
51          StringBuilder sb = new StringBuilder();
52          sb.append("[").append(table.getName());
53          if (colMeta != null) {
54              sb.append(".").append(colMeta.getName());
55          }
56          if (lineNumber != -1) {
57              sb.append(" / ").append(lineNumber);
58          }
59          sb.append("] ").append(message);
60          return sb.toString();
61  
62      }
63  
64  }