import java.io.*;
import java.util.Scanner;
public class PBCollection{
private PhoneBook[] collection;
private PhoneBook[] midtm; //�˻���Phonebook ����� �迭
private String file = "phonebooklist.txt"; //'����ó ����Ʈ' ����� �����̸�
private String pw_file = "password.txt"; //'�н�����' ����� �����̸�
private String pw;//�ʱ� ��� 0000
private int count; //PhoneBook �迭ũ�� count ����
//file open ���� -> op_arr[][] ����.
private String[][] op_arr;//file open��, "phonebooklist.txt" �������� ����� �迭
private String[][] s_arr; //file search��, ��������� �迭
private int opnum=count;//setOparr()���� op_arr[][]�� ����� ��ġ���� ����
private int searchnum=0; //�˻��� PhoneBook �����, s_arr[][]�� ����� ��ġ���� ����
private int searchtime=0;//PhoneBook �˻���, �˻��Ȱ� ����� Ƚ��
//������
public PBCollection(){
collection = new PhoneBook[100];
count = 0;
op_arr=new String[100][11];
midtm = new PhoneBook[100];
s_arr=new String[100][11];
pw="0000"; //�н����� �ʱⰪ "0000"
}
//file open ���� -> op_arr[][] ����. set~()
public void setOparr(){
op_arr[opnum][0]=collection[opnum].getFname();
op_arr[opnum][1]=collection[opnum].getLname();
op_arr[opnum][2]=collection[opnum].getPos();
op_arr[opnum][3]=collection[opnum].getDepart();
op_arr[opnum][4]=collection[opnum].getCompname();
op_arr[opnum][5]=collection[opnum].getAddr();
op_arr[opnum][6]=collection[opnum].getTnum();
op_arr[opnum][7]=collection[opnum].getFnum();
op_arr[opnum][8]=collection[opnum].getMnum();
op_arr[opnum][9]=collection[opnum].getEmail();
op_arr[opnum][10]=collection[opnum].getHomepage();
opnum++;
}
public String[][] getOparr(){return op_arr;}
public void setSarr(){
for(int i=0;i<searchtime;i++){
s_arr[searchnum][0]=midtm[i].getFname();
s_arr[searchnum][1]=midtm[i].getLname();
s_arr[searchnum][2]=midtm[i].getPos();
s_arr[searchnum][3]=midtm[i].getDepart();
s_arr[searchnum][4]=midtm[i].getCompname();
s_arr[searchnum][5]=midtm[i].getAddr();
s_arr[searchnum][6]=midtm[i].getTnum();
s_arr[searchnum][7]=midtm[i].getFnum();
s_arr[searchnum][8]=midtm[i].getMnum();
s_arr[searchnum][9]=midtm[i].getEmail();
s_arr[searchnum][10]=midtm[i].getHomepage();
searchnum++;
}
}
public String[][] getSarr(){return s_arr;}
public int getSearchtime(){return searchtime;}
public int getCount(){return count;}
//�н����� ���� �Լ�
public void setPW(String mpw){
FileWriter fw=null;
BufferedWriter bw=null;
PrintWriter output=null;
try {
pw=mpw;
fw = new FileWriter(pw_file);
bw = new BufferedWriter(fw);
output = new PrintWriter(bw);
output.print(pw);//pw�� ���Ͽ� ����Ʈ.
}catch (IOException ioe){ioe.printStackTrace();
}finally{try{output.close();}catch(Exception e){}}
//close() : file������ �������� close()
}
//���Ͽ� ����� �н����� �������� �Լ�
public String getPW(){
try {
Scanner fileScan = new Scanner(new File(pw_file));
while(fileScan.hasNext()){
pw = fileScan.nextLine();
}
fileScan.close();//file scan������, close()
}catch (FileNotFoundException fnfe){
setPW(pw);//���Ͼ����ϱ� save()�̿��ؼ� �ٷ� ���� ���� ���� -> �̶�, �н����� �ʱⰪ���� ����.
}finally{}
return pw;
}
//����ó �߰�
public void addPB(String f_name, String l_name, String pos, String depart, String comp_name, String addr, String t_num, String f_num, String m_num, String email, String homepage){
if(count == collection.length)
increaseSize();
collection[count] = new PhoneBook(f_name, l_name, pos, depart, comp_name, addr, t_num, f_num, m_num, email, homepage);
count++;
}
//����ó �˻�
public void searchPB(String sname){
int j=0; //midtm[]�� ����� �迭�ѹ�
midtm=null;//������ �˻��� �� �����.
//if(!sname.equals("")){ //�̸����� �˻�
for(int i=0;i<count;i++){
if(SoundSearcher.matchString(collection[i].getName(), sname)){//�ʼ� �˻�
midtm[j]=collection[i];searchtime++;j++;
}else{//�Ϲ� �˻�
if((collection[i].getName()).equals(sname)){
midtm[j]=collection[i];searchtime++;j++;
}
}
}
//}
if(midtm != null)
setSarr();
}
//����ó ����
public void modifyPB(String mname,String modifyinform,int mcolnum){
PhoneBook[] tmp = new PhoneBook[collection.length];
for(int i=0;i<count;i++){
if((collection[i].getName()).equals(mname)){
if(mcolnum==1){
collection[i].setFname(modifyinform);
}else if(mcolnum==2){
collection[i].setLname(modifyinform);
}else if(mcolnum==3){
collection[i].setPos(modifyinform);
}else if(mcolnum==4){
collection[i].setDepart(modifyinform);
}else if(mcolnum==5){
collection[i].setCompname(modifyinform);
}else if(mcolnum==6){
collection[i].setAddr(modifyinform);
}else if(mcolnum==7){
collection[i].setTnum(modifyinform);
}else if(mcolnum==8){
collection[i].setFnum(modifyinform);
}else if(mcolnum==9){
collection[i].setMnum(modifyinform);
}else if(mcolnum==10){
collection[i].setEmail(modifyinform);
}else if(mcolnum==11){
collection[i].setHomepage(modifyinform);
}
}
}
for(int pb=0; pb<collection.length; pb++)
tmp[pb]=collection[pb];
collection = tmp;
}
public void deletePB(String dname, String YorN){
//�̸����� ����ó �˻��ؼ� ����
int delPoint=-1;
PhoneBook[] tm = new PhoneBook[collection.length];
if(YorN.equals("y") || YorN.equals("Y")){
if(!dname.equals("")){//�������� ����
for(int i=0;i<count;i++){
if((collection[i].getName()).equals(dname)){
delPoint=i;
}
}
for(int j=delPoint;j<count-1;j++){
collection[j]=collection[j+1];
}
count--;//�ϳ� ���ﶧ���� count -1�� �پ��
}else{//��ü ����
for(int i=0;i<count;i++){
collection[i]=null;
}
count=0;//��ü ����ϱ� count=0 �ʱ�ȭ
}
}
for(int pb=0; pb<collection.length; pb++)
tm[pb]=collection[pb];
collection = tm;
}
//PhoneBook �迭 Ȯ��
private void increaseSize(){
PhoneBook[] tmp = new PhoneBook[collection.length*2];
String[][] tmp_oparr = new String[op_arr.length*2][11];
PhoneBook[] stmp = new PhoneBook[collection.length*2];
for(int pb=0; pb<collection.length; pb++){
tmp[pb]=collection[pb];
tmp_oparr[pb]=op_arr[pb];
stmp[pb]=midtm[pb];
}
collection = tmp;
op_arr = tmp_oparr;
midtm = stmp;
}
public String toString()
{/*
String contents = "\nPhoneBook List\n";
contents += "\n��\t�̸�\t����\t�μ�\tȸ���\t�ּ�\t��ȭ��ȣ\t�ѽ���ȣ\t�ڵ�����ȣ\t�̸����ּ�\tȨ������\n";
*/
String contents="";
for (int i = 0; i < count ; i++ )
contents += collection[i].toString() + "\n";
return contents;
}
//file open��
public void open(){
//���̺��� ��� ���� �������, �ٽ� ���µǰ�(����� ���븸)
String url;
try {
deletePB("","Y");//���� ������ ��� ���� �� �����,
Scanner fileScan = new Scanner(new File(file));
while(fileScan.hasNext()){
fileScan.useDelimiter("\n");
url = fileScan.nextLine();
Scanner urlScan = new Scanner(url);
urlScan.useDelimiter("/");//"/"�� ������ ����
while(urlScan.hasNext()){//addMovie()�� �ϳ�������. "/"��������.
addPB(urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next(),urlScan.next());
}
setOparr();
urlScan.close();
}
fileScan.close();//file scan������, close()
}catch (FileNotFoundException fnfe){
//fnfe.printStackTrace();
save();//���Ͼ����ϱ� save()�̿��ؼ� �ٷ� ���� ���� ����.
}finally{opnum=count;}
}
//file�� save��
public void save() {
FileWriter fw=null;
BufferedWriter bw=null;
PrintWriter output=null;
try {
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
output = new PrintWriter(bw);
output.print(toString());//toString()�� ���Ͽ� ����Ʈ.
//toString(), �����ϱ� �� �ѹ��� ���ֱ�!
}catch (IOException ioe){ioe.printStackTrace();
}finally{try{output.close();}catch(Exception e){}}
//close() : file������ �������� close()
}
}