Normand Briere
2018-07-07 e416acb9b012b17d1efe49ad2199ea7132d874d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package timeflow.format.field;
 
import timeflow.util.*;
 
public class FieldFormatGuesser {
   
   FieldFormat[] scores;
   
   private FieldFormatGuesser()
   {
       scores=FieldFormatCatalog.listFormats();
   }
   public static Class[] analyze(String[][] data, int startRow, int numRows)
   {
       int n=data[0].length;
       FieldFormatGuesser[] g=new FieldFormatGuesser[n];
       for (int i=0; i<n; i++)
           g[i]=new FieldFormatGuesser();
       for (int i=startRow; i<startRow+numRows && i<data.length; i++)
       {
           for (int j=0; j<n; j++)
               g[j].add(data[i][j]);
       }
       Class[] c=new Class[n];
       for (int i=0; i<n; i++)
           c[i]=g[i].best();
       return c;
   }    
   
   private void add(String s)
   {
       for (int i=0; i<scores.length; i++)
           scores[i].note(s);
   }
   
   private Class best()
   {
       double max=scores[0].value;
       Class best=scores[0].getType();
       for (int i=1; i<scores.length; i++)
       {
           if (scores[i].value>max)
           {
               max=scores[i].value;
               best=scores[i].getType();
           }
       }
       return best;
   }
}