#include "apilo.h"

void apilo::Apilar(char *remoto,char *apilado)
{ 
char caracter, *micadena,cadena[256];
int i,counter;
counter=0;
entrada.open(remoto);
if (!entrada)
    {
    printf("\n Imposible abrir archivo %s.",remoto );
    }
salida.open(apilado,ios::app);
if (!salida)
    {
    salida.open(apilado); // Abre flujo para crear
    }
   
do  {
    fflush(stdin);
    if(entrada.getline(cadena,256,'\n')!=NULL)
	{
	counter++;
	micadena = strtok(cadena,",;#");
	if(strcmp(micadena, "codigo")==0)
	    {
    	    micadena = strtok(NULL, ",;#");
	    salida << "codigo:" << micadena << "\n";
	    micadena = strtok(NULL, ",;#");
	    i=1;
	    do
		{
		i++;
		if(i%2==0)
		    {
		    salida << micadena << ":";
    		    micadena = strtok(NULL, ",;#");
		    }
		else
		    {
		    salida << micadena << "\n";
    		    micadena = strtok(NULL, ",;#");
		    }
		}while(micadena!=NULL);
	    }
	else
	    {
	    cout << "\nError, en fichero: " << remoto << ", la linea "<< counter << " es errónea";
	    }
	}
    salida << "#\n";
    }while(entrada!=NULL);
cout << "pasado";
entrada.close();
salida.close();
} 
    

void apilo::Ver(char *apilo)
{
char car;
entrada.open(apilo);
if (!entrada) 
    {
    cout << "\nError...El fichero no existe. Debe crearlo.";
    }                                                            
    else
    {
    while(!entrada.eof())
    	{
    	entrada.get(car);
    	cout << car;	
    	}
    entrada.close();
    }
}

void apilo::Recuperar(char *cod, char *f)
{
char cadena[256], car, * micadena;
int encontrado, error;
encontrado=error=0;
entrada.open(f);
if (!entrada)
    {
    printf("\n Imposible abrir archivo %s.",f );
    }
do  {
    fflush(stdin);
    if(entrada.getline(cadena,256,'\n')!=NULL)
	{
	micadena = strtok(cadena,": ");
	if(strcmp(micadena, "codigo")==0)
	    {
    	    micadena = strtok(NULL, ": ");
	    if(strcmp(micadena,cod)==0); // si el cod coincide
		{
		encontrado=1;
		cout << "codigo: " << micadena << endl;
		micadena = strtok(NULL, " :");
		cout << "fecha: " << micadena << endl;
		do
		    {
		    
		    if(entrada.getline(cadena,256,'\n')!=NULL);
		       {
		       if(strstr(cadena,"#")==NULL) /* es NULL cuando no encuentra el caracter */
		           {
			   cout << cadena << endl;
			   }
		       else
		           {
			   error=1;
			   } 
			}
		    }while(error!=1);
		}
	    }
	}
    error=0;
    }while(entrada!=NULL);
if(encontrado=0)
    {
    cout << "\nNo se a encontrado el registro: " << cod ;
    }
entrada.close();
}


void apilo::ApiloEstructurado(char *tip, char *f)
{
char car;
char codigo[10], fecha[15], tipo[25], marca[25], modelo[20], matricula[10];
char remolque[4],color[10], pasajeros[3], velocidad[5];
char cadena[256], cadena2[256], * micadena;
int encontrado;
encontrado=0;

entrada.open(f);
salida.open("estruct.txt");

/* inicializamos las cadenas si hay alguna nula */
strcpy(codigo,"");
strcpy(fecha,"");
strcpy(tipo,"");
strcpy(marca,"");
strcpy(modelo,"");
strcpy(matricula,"");
strcpy(remolque,"");
strcpy(color,"");
strcpy(pasajeros,"");
strcpy(velocidad,"");	



do  {
    fflush(stdin);
    if(entrada.getline(cadena,256,'\n')!=NULL)
	{
	micadena = strtok(cadena," ;:");
	if(strcmp(micadena, "codigo")==0)
	    {
    	    micadena = strtok(NULL, ": ");
	    strcpy(codigo,micadena);
	    micadena = strtok(NULL, ": ");
	    strcpy(fecha,micadena);
	    entrada.getline(cadena,256,'\n');
	    micadena = strtok(cadena, ":");
	    if(strcmp(micadena,"tipo")==0)
		{
		micadena = strtok(NULL,":");
		if(strcmp(tipo,tip)==0);
		    {
		    encontrado++;
    		    do
			{
			entrada.getline(cadena,256,'\n');
			micadena = strtok(micadena,":");
			if(strcmp(micadena,"marca")==0)
			    {
			    micadena = strtok(NULL, ":");
			    strcpy(marca,micadena);
			    }
			if(strcmp(micadena,"modelo")==0)
			    {
			    micadena = strtok(NULL, ":");
			    strcpy(modelo,micadena);
			    }
			if(strcmp(micadena,"matricula")==0)
			    {
			    micadena = strtok(NULL, ":");
			    strcpy(matricula,micadena);
			    }
			if(strcmp(micadena,"remolque")==0)
			    {
			    micadena = strtok(NULL, ":");
			    strcpy(remolque,micadena);
			    }
			if(strcmp(micadena,"color")==0)
			    {
			    micadena = strtok(NULL, ":");
			    strcpy(color,micadena);
			    }
			if(strcmp(micadena,"pasajeros")==0)
			    {
			    micadena = strtok(NULL, ":");
		    	    strcpy(pasajeros,micadena);
			    }
			if(strcmp(micadena,"velocidad")==0)
			    {
			    micadena = strtok(NULL, ":");
			    strcpy(velocidad,micadena);
			    }
			}while(strcmp(cadena,"#")!=0);
		    salida << "CODIGO : "<< codigo << endl;
		    salida << "FECHA : " << fecha << endl;
        	    salida << "TIPO : "<< tipo << endl;
        	    salida << "MARCA : "<< marca << endl;
        	    salida << "MODELO : "<< modelo << endl;
        	    salida << "MATRICULA : "<< matricula << endl;
        	    salida << "REMOLQUE : "<< remolque << endl;
        	    salida << "COLOR : "<< color << endl;
        	    salida << "PASAJEROS : "<< pasajeros << endl;
        	    salida << "VELOCIDAD : "<< velocidad << endl << endl;   
		    }
		}
	    }
	}
    }while(entrada!=NULL);
entrada.close();
salida.close(); 
}
