package guitest.persistent;

import guitest.model.Concat;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;

public class ConcatPersistent extends SqliteDao{
 private Properties pro;
 private String fileName;
 public  ConcatPersistent(){
  pro = new Properties();
 }
 
 public  ConcatPersistent(String fileName){
  this();
  this.fileName = fileName;
 }
 
 
 
 public void loadPropertiesFile(){
  try {
   pro.load(new FileInputStream(this.fileName));
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 @Override
 public void add(Object concat) throws FileNotFoundException, IOException{
  loadPropertiesFile();
  String name  = ((Concat) concat).getName();
  String age   = String.valueOf(((Concat) concat).getAge());
  String sex   = ((Concat) concat).getSex();
  String email = ((Concat) concat).getEmail();
  String phone = ((Concat) concat).getPhone();
  
  pro.setProperty(name+".name", name);
  pro.setProperty(name+".age", age);
  pro.setProperty(name+".sex", sex);
  pro.setProperty(name+".email", email);
  pro.setProperty(name+".phone", phone);
  
  
  pro.store(new FileOutputStream(this.fileName), null);
  
  pro.clear();
 }
 @Override
 public List  findAll(){
  loadPropertiesFile();
  Set set = pro.keySet();
  
  List list = new ArrayList<Concat>();
  for(Object o:set){
   Concat concat = new Concat();
   if(o.toString().endsWith("name")){
    String name = o.toString().split("\\.")[0];
    concat.setName(pro.getProperty(name+".name"));
    concat.setAge(Integer.parseInt(pro.getProperty(name+".age").toString().trim()));
    concat.setSex(pro.getProperty(name+".sex"));
    concat.setEmail(pro.getProperty(name+".email"));
    concat.setPhone(pro.getProperty(name+".phone"));
    list.add(concat);
   }
  }
  pro.clear();
  return list;
 }
 @Override
 public Concat findByName(String name){
  loadPropertiesFile();
  Concat concat = new Concat();
  concat.setName(pro.getProperty(name+".name"));
  concat.setAge(Integer.parseInt(pro.getProperty(name+".age").toString().trim()));
  concat.setSex(pro.getProperty(name+".sex"));
  concat.setEmail(pro.getProperty(name+".email"));
  concat.setPhone(pro.getProperty(name+".phone"));
  pro.clear();
  return concat;
 }
 @Override
 public boolean delete(Object concat){
  boolean flag=false;
  String name = ((Concat) concat).getName();
  if(name==null || "".equals(name)){
   flag =  false;
  }else{
   loadPropertiesFile();
   pro.remove(name+".name");
   pro.remove(name+".age");
   pro.remove(name+".sex");
   pro.remove(name+".email");
   pro.remove(name+".phone");
   try {
    pro.store(new FileOutputStream(this.fileName), null);
    pro.clear();
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    flag =  false;
   } catch (IOException e) {
    // TODO Auto-generated catch block
    flag =  false;
   }
   flag = true;
  }
  
  return flag;
 }
 
 public boolean update(Concat concat){
  boolean flag = false;
  String name = concat.getName();
  if(name==null || "".equals(name)){
   flag =  false;
  }else{
   this.delete(concat);
   try {
    this.add(concat);
    flag = true;
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    flag =  false;
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    flag =  false;
   }
  }
  return flag;
 }
 
 public  static void main(String [] args){
  ConcatPersistent cp = new ConcatPersistent("concat.properties");
  Concat concat = new Concat();
  concat.setName("何健");
  concat.setAge(21);
  concat.setSex("男");
  concat.setEmail("wjh@126.com");
  concat.setPhone("13979877788");
  
  
  cp.update(concat);
  
  
 }

 @Override
 public Object findByName(String name, int pwd) {
  // TODO Auto-generated method stub
  return null;
 }

 @Override
 public Object findNext() {
  // TODO Auto-generated method stub
  return null;
 }

 @Override
 public Object findpre() {
  // TODO Auto-generated method stub
  return null;
 }

 @Override
 public Object findFirst() {
  // TODO Auto-generated method stub
  return null;
 }

 @Override
 public Object findLast() {
  // TODO Auto-generated method stub
  return null;
 }


}