//----------------------------------------------------------------------------- void TAdministradora :: LoadDomainsNacionales(AnsiString pDomainNacional) { TFile* TreeFile = new TFile(pDomainNacional); TreeFile->Open("rb+"); TreeFile->SeekTo(0); if(TreeFile->IsOpen()) { TSDomainInfo SDominio; TreeFile->Read(&SDominio,sizeof(TSServerInfo)); while(!TreeFile->Eof()) { TPreOrderNode* node = new TPreOrderNode(); TDomain* domain = new TDomain(); node->End(SDominio.End); node->RightLink(SDominio.LinkedRight); domain->NameDomain(SDominio.Name); node->Info(domain); aDomainsPreOrderList->Insert(node); TreeFile->Read(&SDominio,sizeof(TSDomainInfo)); } } TreeFile->Close(); delete TreeFile; }
//----------------------------------------------------------------------------- //Internacionales Servers void TAdministradora :: SaveServersInternacional(AnsiString pNameFile) { TFile* internacional = new TFile(pNameFile); internacional->Open("wb"); internacional->SeekTo(0); if(internacional->IsOpen()) { TSServerInfo server; for(int i = 0; i < aInternacionales->Length(); i++) { TServidor* servidor = (TServidor*)aInternacionales->ItemInfo(i); server.Tope = servidor->Tope(); server.MaxMail = servidor->Max(); strcpy(server.Name,servidor->NameDomain().c_str()); internacional->Write(&server,sizeof(TSServerInfo)); } } internacional->Close(); delete internacional; }
//----------------------------------------------------------------------------- //::::::::::::::::::::::::::::LOAD/SAVE SERVERS:::::::::::::::::::::::::::::::::::: //----------------------------------------------------------------------------- //Nacionales Servers void TAdministradora :: SaveServersNacionales(AnsiString pServerName) { TFile* serverFile = new TFile(pServerName); serverFile->Open("wb"); serverFile->SeekTo(0); if(serverFile->IsOpen()) { FiltrarServerNacional(); TSServerInfo server; for(int i = 0; i < aNacionalesServers->Length(); i++) { TServidor* servidor = (TServidor*)aNacionalesServers->ItemInfo(i); server.Tope = servidor->Tope(); server.MaxMail = servidor->Max(); strcpy(server.Name,servidor->NameDomain().c_str()); serverFile->Write(&server,sizeof(TSServerInfo)); } } serverFile->Close(); delete serverFile; }
//----------------------------------------------------------------------------- void TAdministradora::LoadServersInternacional(AnsiString pNameFile) { TFile* internacional = new TFile(pNameFile); internacional->Open("rb+"); internacional->SeekTo(0); if(internacional->IsOpen()) { TSServerInfo server; internacional->Read(&server,sizeof(TSServerInfo)); while(!internacional->Eof()) { TServidor* Servidor = new TServidor(); Servidor->Tope(server.Tope); Servidor->Max(server.MaxMail); Servidor->NameDomain(server.Name); aInternacionales->Insert(Servidor); internacional->Read(&server,sizeof(TSServerInfo)); } } internacional->Close(); delete internacional; }
//----------------------------------------------------------------------------- void TAdministradora :: LoadServersNacionales(AnsiString pServerName) { TFile* serverFile = new TFile(pServerName); serverFile->Open("rb+"); serverFile->SeekTo(0); if(serverFile->IsOpen()) { TSServerInfo server; serverFile->Read(&server,sizeof(TSServerInfo)); while(!serverFile->Eof()) { TServidor* Servidor = new TServidor(); Servidor->Tope(server.Tope); Servidor->Max(server.MaxMail); Servidor->NameDomain(server.Name); aNacionalesServers->Insert(Servidor); serverFile->Read(&server,sizeof(TSServerInfo)); } } serverFile->Close(); delete serverFile; }
//----------------------------------------------------------------------------- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //::::::::::::::::::: METODOS DE GUARDAR/CARGAR EN FICHEROS::::::::::::::::::: //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //----------------------------------------------------------------------------- //Nacionales Domains void TAdministradora :: SaveDominioTree(AnsiString pNameDomain) { TFile* TreeFile = new TFile(pNameDomain); TreeFile->Open("wb"); TreeFile->SeekTo(0); TSeqPreOrderTree* preorder = new TSeqPreOrderTree(aTree); if(TreeFile->IsOpen()) { TSDomainInfo SDominio; for(int i = 0; i < preorder->Length(); i++) { TPreOrderNode* node = (TPreOrderNode*)preorder->ItemInfo(i); SDominio.End = node->End(); SDominio.LinkedRight = node->RightLink(); TDomain* domain = (TDomain*)node->Info(); strcpy(SDominio.Name,domain->NameDomain().c_str()); TreeFile->Write(&SDominio,sizeof(TSDomainInfo)); } } TreeFile->Close(); delete TreeFile; }
//----------------------------------------------------------------------------- void TAdministradora :: LoadAccounts(AnsiString pFileName)//ver lo del buffer cuando voy a escribir un parrafo { //eso hay que arreglarlo TFile* AccountFile = new TFile(pFileName); AccountFile->Open("rb+"); AccountFile->SeekTo(0); if(AccountFile->IsOpen()) { TGLinkedList* Servers = new TGLinkedList(); AllServers(Servers); if(Servers) { while(AccountFile->FilePos() < AccountFile->FileSize()) { TSAccount account; AccountFile->Read(&account,sizeof(TSAccount)); //primera lectura AnsiString ServidorNombre = account.server; TServidor* Server = (TServidor*)Servers->FirstThat(Daemon::FindNameList,&ServidorNombre); if(Server) { TCuenta* cuenta = new TCuenta(); cuenta->Usuario(account.usuario); cuenta->Password(account.password); cuenta->Address(account.address); TSPerson person; cuenta->Person()->Name(account.persona.name); cuenta->Person()->Apellidos(account.persona.apellidos); cuenta->Person()->Sexo(account.persona.sexo); cuenta->Person()->Ocupacion(account.persona.ocupation); cuenta->Person()->Age(account.persona.age); cuenta->Cuota(account.cuota); cuenta->Cuotafree(account.cuotafree); cuenta->Salida(account.internacional); Server->Cuentas()->Insert(cuenta); int i = 0; while(i < account.emails) { TSMail mail; AccountFile->Read(&mail,sizeof(TSMail)); //segunda lectura TMail* Mail = new TMail(); Mail->Parrafo(mail.parrafo); Mail->Asunto(mail.asunto); Mail->Remitente(mail.remitente); Mail->Size(mail.size); cuenta->Correos()->Insert(Mail); i++; int j = 0; while(j < mail.adjunts) { TSAdjunt adjunt; AccountFile->Read(&adjunt,sizeof(TSAdjunt)); //tercera lectura TFichero* fichero = new TFichero(); fichero->Adress(adjunt.adress); fichero->Tipo(adjunt.tipo); fichero->Size(adjunt.length); Mail->InsertAdjunt(fichero); j++; } } int c = 0; while(c < account.agendas) { char direccion[36]; AccountFile->Read(&direccion,36); AnsiString nombre = direccion; cuenta->Agendas()->Insert(&nombre); } } } } } AccountFile->Close(); delete AccountFile; }
//----------------------------------------------------------------------------- //::::::::::::::FIN METODOS DE GUARDAR/CARGAR EN FICHEROS:::::::::::::::::::::::: //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //::::::::::::::::::::TRABAJO CON LOS FICHEROS CUENTAS:::::::::::::::::::::::::: //::::::::::::::::::::::::::::::::CARGA/GUARDA:::::::::::::::::::::::::::::::::: //----------------------------------------------------------------------------- void TAdministradora :: SaveAccounts(AnsiString pFileName) //ver lo del buffer cuando voy a escribir un parrafo { //eso hay que arreglarlo TFile* AccountFile = new TFile(pFileName); AccountFile->Open("wb"); AccountFile->SeekTo(0); if(AccountFile->IsOpen()) { TGLinkedList* servidores = new TGLinkedList(); AllServers(servidores); for(int i = 0; i < servidores->Length(); i++) { TServidor* Server = (TServidor*)servidores->ItemInfo(i); if(Server) { for(int j = 0; j < Server->Cuentas()->Length(); j++) { TCuenta* account = (TCuenta*)Server->Cuentas()->ItemInfo(j); if(account) { TSPerson person; strcpy(person.name,account->Person()->Name().c_str()); strcpy(person.apellidos,account->Person()->Apellidos().c_str()); person.sexo = account->Person()->Sexo(); person.ocupation = account->Person()->Ocupacion(); person.age = account->Person()->Age(); TSAccount cuenta; strcpy(cuenta.server,Server->NameDomain().c_str()); strcpy(cuenta.usuario,account->Usuario().c_str()); strcpy(cuenta.password,account->Password().c_str()); strcpy(cuenta.address,account->Address().c_str()); cuenta.persona = person; cuenta.cuota = account->Cuota(); cuenta.cuotafree = account->Cuotafree(); cuenta.internacional = account->Salida(); cuenta.emails = account->Correos()->Length(); cuenta.agendas = account->Agendas()->Length(); AccountFile->Write(&cuenta,sizeof(TSAccount)); //primera escritura for(int k = 0; k < account->Correos()->Length(); k++) { TMail* mail = (TMail*)account->Correos()->ItemInfo(k); if(mail) { TSMail correo; strcpy(correo.parrafo,mail->Parrafo().c_str()); strcpy(correo.asunto,mail->Asunto().c_str()); strcpy(correo.remitente,mail->Remitente().c_str()); correo.size = mail->Size(); correo.adjunts = mail->Adjunts()->Length(); AccountFile->Write(&correo,sizeof(TSMail)); //segunda escritura for(int l = 0; l < mail->Adjunts()->Length(); l++) { TFichero* file = (TFichero*)mail->Adjunts()->ItemInfo(l); if(file) { TSAdjunt adjunto; strcpy(adjunto.adress,file->Adress().c_str()); strcpy(adjunto.tipo,file->Tipo().c_str()); adjunto.length = file->Size(); AccountFile->Write(&adjunto,sizeof(TSAdjunt)); //tercera escritura } } } } for(int c = 0; c < cuenta.agendas; c++) { AnsiString* name = (AnsiString*)account->Agendas()->ItemInfo(c); AnsiString aqui = *name; char direccion[36]; strcpy(direccion,aqui.c_str()); AccountFile->Write(&direccion,aqui.Length()-1); } } } } } } AccountFile->Close(); delete AccountFile; }