package topica.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import topica.moduel.CanBo;
import topica.moduel.GiangVien;
import topica.moduel.NhanVien;
import topica.moduel.Time;

public class function implements Comparator<NhanVien>  {

	

	public static boolean addnhanvien(NhanVien nv,String path)
	{
		ArrayList<NhanVien> arr = docFile(path);
		if(arr==null)
		{
			arr = new ArrayList<>();
		}
		arr.add(nv);
		
		return luuFile(arr, path);
		
		
		
	}
	
	
public static  boolean luuFile(ArrayList<NhanVien> arr ,String path)
	{
		
		
		ObjectOutputStream oos = null;
		try {
			
			oos  = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(path,false)));
			oos.writeObject(arr);
			return true;
			
		} catch (IOException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		finally {
			try {
				oos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		return false;
		
	}
	
	
     
     

     @SuppressWarnings("unchecked")
	public static ArrayList<NhanVien> docFile(String path)
	{
		ArrayList<NhanVien> arr = new ArrayList<>();
		ObjectInputStream ois = null;
		try {
			ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path)));
			
			Object o = ois.readObject();
			 arr = (ArrayList<NhanVien>) o;
			 return arr;
			
		
			
		} 
		catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		finally {
			
			try {
				ois.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	
		return null;
		
	}
	
	
	
	
	 public static NhanVien find(String str,String path)
	{
		
		ArrayList<NhanVien> arr = docFile(path);
		
		for (NhanVien nhanVien : arr) {
			if(nhanVien.getID().equals(str))
			{
				return nhanVien;
			}
			
		}
		return null;
	}
	
	
	 
	 
	 public static  void comparato(String path)
	 {
		 ArrayList<NhanVien> arr = docFile(path);
		 Collections.sort(arr,new function());
		 System.out.println("!--------------Mảng sau khi sắp xếp-----------!");
		 for (NhanVien nhanVien : arr) {
			System.out.println(nhanVien.toString());
		}
		
		 
	 }
	  
	 
	 
	 



	@Override
	public  int compare(NhanVien o1, NhanVien o2) {
		// TODO Auto-generated method stub
		int value = o1.getName().compareTo(o2.getName());
		if(value!=0)
		{
			return value;
		}
		value = Time.compare(o1.getAge(),o2.getAge());
		
		return value;
		
	}
	
	
	public static int findID(String s ,String path)
	{
		
		ArrayList<NhanVien> arr = docFile(path);
		
		for (int i = 0; i < arr.size(); i++) {
			
			if(arr.get(i).getID().equals(s))
			{
				return i;
			}
			
		}
		return -1;
		
		
		
		
		
	}
	
	
	
	
	
	
	
}

