import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import us.jubat.stat.StatClient;

public class trival_stat {
	
	public void start() throws Exception{
		String host = "127.0.0.1";
		int port = 9199;
		String name = "test";	
		StatClient stat = new StatClient(host, port, name, 5); 
		
		try {
		      File csv = new File("dat/fruit.csv"); 
		      BufferedReader br = new BufferedReader(new FileReader(csv));
		      // 最終行まで読み込む
		      String line = "";
		      while ((line = br.readLine()) != null) {
		    	  //split_line
		    	  int i=0;
		    	  String[] tmp=new String[4];
		    	  StringTokenizer st = new StringTokenizer(line, ",");
		    	  while (st.hasMoreTokens()) {
		           tmp[i++]=st.nextToken();
		          }
		    	  //直径
		    	  stat.push(tmp[0]+"dia",Double.parseDouble(tmp[1]));
		    	  //重さ
		    	  stat.push(tmp[0]+"wei",Double.parseDouble(tmp[2]));
		    	  //価格
		    	  stat.push(tmp[0]+"pri",Double.parseDouble(tmp[3]));
		       }
		      br.close();
		    } catch (FileNotFoundException e) {
		      // Fileオブジェクト生成時の例外捕捉
		      e.printStackTrace();
		    } catch (IOException e) {
		      // BufferedReaderオブジェクトのクローズ時の例外捕捉
		      e.printStackTrace();
		    }
		    
		    String[] fruit={"orange","apple","melon"};
		    String[] value={"dia","wei","pri"};
		    for(int j=0;j<3;j++){
		    	System.out.println("_________________"+fruit[j]+"____________________");
		    	for(int k=0;k<3;k++){
		    		//合計値を返す
		    		System.out.println("sum:"+fruit[j]+"_"+value[k]+"::"+stat.sum(fruit[j]+value[k]));
		    		//標準偏差を返す
		    		System.out.println("sdv:"+fruit[j]+"_"+value[k]+"::"+stat.stddev(fruit[j]+value[k]));
		    		//最大値を返す
		    		System.out.println("max:"+fruit[j]+"_"+value[k]+"::"+stat.max(fruit[j]+value[k]));
		    		//最小値を返す
		    		System.out.println("min:"+fruit[j]+"_"+value[k]+"::"+stat.min(fruit[j]+value[k]));
		    		//エントロピーを返す
		    		System.out.println("ent:"+fruit[j]+"_"+value[k]+"::"+stat.entropy(fruit[j]+value[k]));
		    		//（key,degree,center）centerを中心にdegree次のモーメントを返す
		    		System.out.println("mmt:"+fruit[j]+"_"+value[k]+"::"+stat.moment(fruit[j]+value[k],1,0.0));
		    		System.out.println();
		    	}
		    }
	}
	
	static public void main(String args[]) throws Exception{
		new trival_stat().start();
		System.exit(0);
		}

}
