miércoles, 27 de julio de 2016

Esfera de nodos


import java.io.*;
import java.util.Scanner;

class  Nodo_esfera{
    Nodo_esfera atraz,adelante,abajo,arriba ;
    String dato;

public Nodo_esfera(){
    dato="";
}

public Nodo_esfera(String dato){
    this.dato=dato;
}

public void verdato(){
System.out.print("\t"+dato+"\t");  
}

public void crearnreg(Nodo_esfera p, String dat){
    Nodo_esfera a =new Nodo_esfera();
    a.adelante=p.adelante;
    a.atraz=p;
    p.adelante.atraz=a;
    p.adelante=a;
    a.dato=dat;
}

public void crearnreg2(Nodo_esfera p, String dat){
    Nodo_esfera a =new Nodo_esfera();
    a.abajo=p.abajo;
    a.arriba=p;
    p.abajo.arriba=a;
    p.abajo=a;
    a.dato=dat;
}

public void unenodosesfera(Nodo_esfera aux){

    aux.arriba=aux.atraz.arriba.adelante;
    aux.abajo=aux.atraz.abajo.adelante;
    aux.arriba.abajo=aux;
    aux.abajo.arriba=aux;
}

public void unenodosesfera2(Nodo_esfera aux){

    aux.atraz=aux.arriba.atraz.abajo;
    aux.adelante=aux.arriba.adelante.abajo;
    aux.atraz.adelante=aux;
    aux.adelante.atraz=aux;
}

}   //-----Clase nodo esfera

class Mi_esfera{
    Mi_esfera adelante, atraz;
    Nodo_esfera headF,tailF,keyF,headC,tailC,keyC,keyfaux,keycaux;
    String nombre;

//-----------Constructor --Inicializa todos los elementos de la tabla esferal (se inicializa la esfera)-->>

public  Mi_esfera(){
    headF=tailF=headC=tailC=keyF=keyfaux=keycaux=null;
     }

public void crearnesf(Mi_esfera p, String dat){
    Mi_esfera a =new Mi_esfera();
    a.adelante=p.adelante;
    a.atraz=p;
    p.adelante.atraz=a;
    p.adelante=a;
    a.nombre=dat;
}

//-----------Metodo qu emuestra el contenido de un registro completo o los campos (Muestra un anillo)--->> 

public  void verfilas(Nodo_esfera q){
       Nodo_esfera p = new Nodo_esfera();
    q.verdato();
    p=q;
    q=q.adelante;
    while(q!=p)
    {q.verdato();
    q=q.adelante;
    }
    System.out.println("");
  }

//-----------Metodos para crear los nombres y estructura de os campos ----->>

public Nodo_esfera busquedaxfilas(String dato){
    Nodo_esfera p=headF;
    if(headF==null)
        return null;
        else if(headF==tailF)
        {if(headF.dato.compareToIgnoreCase(dato)==0)
            return headF;
        }      
         else
         {
             while(p!=tailF){
                 if(p.dato.compareToIgnoreCase(dato)==0)
                     return p;
                     else if(p.adelante.dato.compareToIgnoreCase(dato)==0)
                      return p.adelante;
                    p=p.adelante;
             }

         }
    return null;
}   //---Metodo que ealiza la busqueda de forma horizontal-->

public void crearcolumna()throws IOException{
    String nom="";
    Nodo_esfera aux = new Nodo_esfera();
    Nodo_esfera aux2 = new Nodo_esfera();
    aux = keyfaux;
    aux2 = keyF.abajo;
    aux = aux.abajo;

    while (aux2!=keyF){
    System.out.println("Ingresa "+keyfaux.dato+" para: "+aux2.dato);
    BufferedReader leem = new BufferedReader(new InputStreamReader(System.in));
    nom=leem.readLine();
    aux.crearnreg2(aux,nom);
    aux=aux.abajo;
    aux2=aux2.abajo;
    }
    unecolumna();
}

public void unecolumna(){
Nodo_esfera aux= new Nodo_esfera();
aux=keyfaux.abajo;
while(aux!=keyfaux)
    {
    aux.unenodosesfera2(aux);
    aux=aux.abajo;
    }  
}

public int ubicaxfilas(String dato){
    Nodo_esfera aux = new Nodo_esfera();
    aux=busquedaxfilas(dato);
    if(aux!=null)
    return 1;
     else if(headF==null)
         crearnodoprimero(dato);
          else if(headF==tailF)
              crearnodosegundo(dato);
          else if(headF.dato.compareToIgnoreCase(dato)>0)
              crearnodoinicio(dato);
              else if (tailF.dato.compareToIgnoreCase(dato)<0)
             crearnodofinal(dato);

          else  
          {   aux=headF;
              while(aux.adelante.dato.compareToIgnoreCase(dato)<0)
                    aux=aux.adelante;  

                        crearnodomedio(dato,aux);  
                        }

    return 0;
}

public void crearnodoprimero(String Dato){

    Nodo_esfera p = new Nodo_esfera(Dato);
    headF=tailF=headC=tailC=keyF=keyC=p;
    p.abajo=p.adelante=p.atraz=p.arriba=p;
    keyfaux=keycaux=keyF;
    }

public void crearnodosegundo(String Dato){

    Nodo_esfera p = new Nodo_esfera(Dato);
   if(headF.dato.compareToIgnoreCase(Dato)<0)
   {tailF=p;
    p.adelante=p.atraz=headF;
    headF.adelante=headF.atraz=p;
   }
      else{
          headF=p;
          p.adelante=p.atraz=tailF;
          tailF.adelante=tailF.atraz=p;
      }
    p.abajo=p.arriba=p;
    keyfaux = p;
    }

public void crearnodoinicio(String Dato){
    Nodo_esfera p = new Nodo_esfera(Dato);
    p.adelante=headF;
    p.atraz=tailF;
    headF.atraz=p;
    tailF.adelante=p;
    headF=p;
    p.abajo=p.arriba=p;
    keyfaux=p;
   }

public void crearnodofinal(String Dato){
    Nodo_esfera p = new Nodo_esfera(Dato);

    p.adelante=headF;
    p.atraz=tailF;
    headF.atraz=p;
    tailF.adelante=p;
    tailF=p;
    p.abajo=p.arriba=p;
   keyfaux=p;
   }

public  void crearnodomedio(String Dato,Nodo_esfera aux){
             Nodo_esfera p = new Nodo_esfera(Dato);
             p.adelante=aux.adelante;
             p.atraz=aux;
             aux.adelante.atraz=p;
             aux.adelante=p;
             p.arriba=p.abajo=p;
             keyfaux=p;
        }

//---------Metodos para genrar los registros / segeneran los anillos que posteriormente se unen a la esfera--->>      

public  void crearfila(String Dato)throws IOException{
    String nom="";
    Nodo_esfera a = new Nodo_esfera();
    Nodo_esfera b = new Nodo_esfera();
    crearnodoprimero2(Dato);
    b=keyC;
    a=keyF.adelante;  
    while (a!=keyF){
    System.out.println("Ingresa "+a.dato);
    BufferedReader leem = new BufferedReader(new InputStreamReader(System.in));
    nom=leem.readLine();
    b.crearnreg(b,nom);
    b=b.adelante;
    a=a.adelante;
    }
}        //---------|
                                                            //         |-Se crea el anillo (Para despues ubicarlo y unirlo
public void crearnodoprimero2(String Dato){
    Nodo_esfera p = new Nodo_esfera(Dato);
    p.abajo=p.adelante=p.atraz=p.arriba=p;
    keyC=p;
    }                 //---------|

public Nodo_esfera busquedaxcolumnas(String dato){
    Nodo_esfera p=headC;
    if(headC==null)
        return null;
        else if(headC==tailC)
        {if(headC.dato.compareToIgnoreCase(dato)==0)
            return headC;
        }      
         else
         {
             while(p!=keyF){
                 if(p.dato.compareToIgnoreCase(dato)==0)
                     return p;
                 p=p.abajo;
             }

         }
    return null;
}

public void  ubicaxcolumnas()throws IOException{
    Nodo_esfera p = new Nodo_esfera();

     if(headC==keyF)
      crearfilaprimera();
           else if((keyC.dato.compareToIgnoreCase(headC.dato)<=0)||(keyC.dato.compareToIgnoreCase(tailC.dato)>0))
              crearfilasegunda();
             else  
              {  p=headC;
                  while(p!=tailC){
                 if((p.dato.compareToIgnoreCase(keyC.dato)<0)&&(p.abajo.dato.compareToIgnoreCase(keyC.dato)>=0))
                     crearfilamedia(p.abajo);
                 p=p.abajo;  
                  }
}
}

public void crearfilaprimera()throws IOException{
    Nodo_esfera aux= new Nodo_esfera();
    Nodo_esfera aux2= new Nodo_esfera();

    aux=keyC;
    aux2=keyF;
    headC=tailC=keyC;
    aux.arriba=aux.abajo=keyF;
    keyF.abajo=keyF.arriba=aux;
    aux=aux.adelante;
    aux2=aux2.adelante;

    while(aux2!=keyF)
    {
    aux.unenodosesfera(aux);
    aux=aux.adelante;
    aux2=aux2.adelante;  
    }
    }

public void crearfilasegunda()throws IOException{
    Nodo_esfera aux= new Nodo_esfera();
    Nodo_esfera aux2= new Nodo_esfera();
    Nodo_esfera aux3= new Nodo_esfera();

    aux=keyC;
    aux2=headC;
    aux3=aux2;
    if(keyC.dato.compareToIgnoreCase(headC.dato)
    keyC.arriba=headC.arriba;
    keyC.abajo=headC;
    headC.arriba.abajo=headC.arriba=keyC;
    headC=keyC;
    }
    if(keyC.dato.compareToIgnoreCase(tailC.dato)>0){
    keyC.arriba=tailC;
    keyC.abajo=tailC.abajo;
    tailC.abajo.arriba=tailC.abajo=keyC;
    tailC=keyC;
    }
    aux=aux.adelante;
    aux2=aux2.adelante;
    while(aux2!=aux3)
    {
    aux.unenodosesfera(aux);
    aux=aux.adelante;
    aux2=aux2.adelante;  
    }
}

public void crearfilamedia(Nodo_esfera aux)throws IOException{
    Nodo_esfera aux2= new Nodo_esfera();
    aux2=keyF.adelante;

    keyC.abajo=aux;
    keyC.arriba=aux.arriba;
    aux.arriba.abajo=aux.arriba=keyC;  

    aux=keyC;
    aux=aux.adelante;
    while(aux2!=keyF)
    {
    aux.unenodosesfera(aux);
    aux=aux.adelante;
    aux2=aux2.adelante;  
    }
    }

//---Metodos para orden y limpieza-------------------->>

public void eliminarcampo(Nodo_esfera aux){

    Nodo_esfera recorre = new Nodo_esfera();
    recorre=aux;
    if(aux==headF)
    headF=aux.adelante;
    else if(aux==tailF)
        tailF=aux.atraz;

        recorre.atraz.adelante=recorre.adelante;
        recorre.adelante.atraz=recorre.atraz;
        recorre.adelante=recorre.atraz=recorre;
        recorre=recorre.abajo;


        while(aux!=recorre){

        recorre.atraz.adelante=recorre.adelante;
        recorre.adelante.atraz=recorre.atraz;
        recorre.adelante=recorre.atraz=recorre;
        recorre=recorre.abajo;

        }
}

public void eliminarregistro(Nodo_esfera aux){
    Nodo_esfera recorre = new Nodo_esfera();
    recorre=aux;

    if(aux==keyC)
    keyC=aux.arriba;  
    else if(aux==headC)
    headC=aux.abajo;
    else if(aux==tailC)
        tailC=aux.arriba;

        recorre.arriba.abajo=recorre.abajo;
        recorre.abajo.arriba=recorre.arriba;
        recorre.arriba=recorre.abajo=recorre;
        recorre=recorre.abajo;


        while(aux!=recorre){

        recorre.arriba.abajo=recorre.abajo;
        recorre.abajo.arriba=recorre.arriba;
        recorre.arriba=recorre.abajo=recorre;
        recorre=recorre.abajo;

        }
}

public void ordenax(Nodo_esfera aux)throws IOException{
keyfaux = keyF;
keyC=headC=tailC=keyF=aux;
aux=aux.abajo;
ubicaxcolumnas();
while(aux!=keyF){
 keyC=aux;
 aux=aux.abajo;
 ubicaxcolumnas();
}
keyF = keyfaux;  
}

//----Muestra la tabla (esfera)-------------->>

public void  mostrartabla(){
    Nodo_esfera q = new Nodo_esfera();
    q = keyF;
    verfilas(q);
    q=q.abajo;
    while(q!=keyF){
    verfilas(q);
    q=q.abajo;
    }
}

//----Metodo que arroja el dato degun la interseccion de 2 nodos-------------->>

public Nodo_esfera busquedaxtodo(Nodo_esfera p, Nodo_esfera q){
    Nodo_esfera aux=keyF;
    if(aux==q)
        return q;
        p=p.adelante;
        aux=aux.adelante;

        while(p!=q){
                 if(aux==q)
                     return p;
                 p=p.adelante;
                aux=aux.adelante;
             }          
return q;
}

}

class Anillodeesferas{

Mi_esfera head;
Mi_esfera tail;
Mi_esfera key;
Mi_esfera aux;
String nom;

public Anillodeesferas(){
    head=tail=key=null;
    nom = " ";
}  

public Mi_esfera busquedaxesferas(String nom){
    Mi_esfera p = new Mi_esfera();
    p=head;
    if(head==null)
        return null;
        else if(head==tail)
        {if(head.nombre.compareToIgnoreCase(nom)==0)
            return head;
        }      
         else
         {
             while(p!=tail){
                 if(p.nombre.compareToIgnoreCase(nom)==0)
                     return p;
                     else if(p.adelante.nombre.compareToIgnoreCase(nom)==0)
                      return p.adelante;
                    p=p.adelante;
             }

         }
    return null;
}   //---Metodo que ealiza la busqueda de forma horizontal-->

public int ubicaxesferas(String nom){
    Mi_esfera aux = new Mi_esfera();
    aux=busquedaxesferas(nom);
    if(aux!=null)
    return 1;
     else if(head==null)
         crearesfprimera(nom);
          else if(head==tail)
              crearesfsegunda(nom);
          else if(head.nombre.compareToIgnoreCase(nom)>0)
              crearesfinicio(nom);
              else if (tail.nombre.compareToIgnoreCase(nom)<0)
             crearesffinal(nom);

          else  
          {   aux=head;
              while(aux.adelante.nombre.compareToIgnoreCase(nom)<0)
                    aux=aux.adelante;  

                        crearesfmedia(nom,aux);  
        }

    return 0;
}

public void crearesfprimera(String Dato){

    Mi_esfera p = new Mi_esfera();
    head=tail=key=p;
    p.adelante=p.atraz=p;
    p.nombre=Dato;
    }

public void crearesfsegunda(String Dato){

    Mi_esfera p = new Mi_esfera();
   if(head.nombre.compareToIgnoreCase(Dato)<0)
   {tail=p;
    p.adelante=p.atraz=head;
    head.adelante=head.atraz=p;
    p.nombre=Dato;
   }
      else{
          head=p;
          p.adelante=p.atraz=tail;
          tail.adelante=tail.atraz=p;
          p.nombre=Dato;
      }
    }

public void crearesfinicio(String Dato){
    Mi_esfera p = new Mi_esfera();
    p.adelante=head;
    p.atraz=tail;
    head.atraz=p;
    tail.adelante=p;
    head=p;
    p.nombre=Dato;
   }

public void crearesffinal(String Dato){
    Mi_esfera p = new Mi_esfera();
    p.adelante=head;
    p.atraz=tail;
    head.atraz=p;
    tail.adelante=p;
    tail=p;
    p.nombre=Dato;
   }

public  void crearesfmedia(String Dato,Mi_esfera aux){
             Mi_esfera p = new Mi_esfera();
             p.adelante=aux.adelante;
             p.atraz=aux;
             aux.adelante.atraz=p;
             aux.adelante=p;
             p.nombre=Dato;
        }

public  void vernombresanillo(){
       Mi_esfera p = new Mi_esfera();
       p=key;
    System.out.println("+ "+p.nombre);
    p=p.adelante;
    while(p!=key)
    {
    System.out.println("+ "+p.nombre);
    p=p.adelante;
    }
    System.out.println("");
  }      

public  void veresferaanillo(Mi_esfera p){
    System.out.println("+ "+p.nombre);
    p.mostrartabla();

  }  

public void eliminaresfera(Mi_esfera aux){

    Mi_esfera recorre = new Mi_esfera();
    recorre=aux;
    if((head==tail)&&(head==aux))
        head=tail=key=null;
    if(aux==head)
    head=aux.adelante;
    else if(aux==tail)
        tail=aux.atraz;

        recorre.atraz.adelante=recorre.adelante;
        recorre.adelante.atraz=recorre.atraz;
        recorre.adelante=recorre.atraz=recorre;
        aux.adelante=aux.atraz=aux;
}  

public static void main (String[]args)throws IOException {

    Anillodeesferas db = new Anillodeesferas();  
    Mi_esfera p=new Mi_esfera();
    Nodo_esfera q=new Nodo_esfera();
    Nodo_esfera r=new Nodo_esfera();
    Nodo_esfera s=new Nodo_esfera();
    String nom,nom1;
    String opc="S";
    int opc1;

    do{
    System.out.println("\t\t --------MENU--------");
    System.out.println("\t 1* Crear una tabla");
    System.out.println("\t 2* Insertar campos en una tabla");
    System.out.println("\t 3* Llenar tabla");
    System.out.println("\t 4* Modificar tabla");
    System.out.println("\t 5* Borrar una tabla");
    System.out.println("\t 6* Salir");

    Scanner leer= new Scanner(System.in);
    opc1= leer.nextInt();
    BufferedReader lee = new BufferedReader(new InputStreamReader(System.in));

    switch(opc1){
        case 1: System.out.println("\tIngresa el nombre de la tabla: ");
                 nom=lee.readLine();
                 if(db.busquedaxesferas(nom)!=null)
                 System.out.println("Tabla ya existente, no se creo");
                 else{
                 db.ubicaxesferas(nom);
                 p=db.busquedaxesferas(nom);
                 do{
                System.out.println("Ingresa el nombre del campo: ");
                nom=lee.readLine();
                if(p.ubicaxfilas(nom)==1)
                 System.out.println("Campo ya existente, no se creo");
                System.out.println("Ingresar otro campo? s/n");
                opc = lee.readLine();
                }while(opc.compareToIgnoreCase("S")==0);}
                break;

        case 2: do{
                System.out.println("\tIngresa el nombre de la tabla a la que le deseas meter campos: ");
                 db.vernombresanillo();
                nom=lee.readLine();
                }while(db.busquedaxesferas(nom)==null);
                p=db.busquedaxesferas(nom);

                do{
                System.out.println("Ingresa el nombre del campo: ");
                nom=lee.readLine();
                if(p.ubicaxfilas(nom)==1)
                 System.out.println("Campo ya existente, no se creo");
                 else
                   p.crearcolumna();
                System.out.println("Ingresar otro campo? s/n");
                opc = lee.readLine();
                }while(opc.compareToIgnoreCase("S")==0);


                break;

        case 3:
                do{
                System.out.println("\tIngresa el nombre de la tabla que deseas llenar: ");
                 db.vernombresanillo();
                nom=lee.readLine();
                }while(db.busquedaxesferas(nom)==null);
                p=db.busquedaxesferas(nom);


                do{
                do{
                        System.out.println("Ingresa  "+p.keyF.dato+" ");
                    nom=lee.readLine();
                    if(p.busquedaxcolumnas(nom)!=null)
                    System.out.println("Registro ya existente");
                    }while(p.busquedaxcolumnas(nom)!=null);
                     p.crearfila(nom);
                     p.ubicaxcolumnas();
                 System.out.println("Ingresar otro registro? s/n");
                  opc = lee.readLine();
                 }while(opc.compareToIgnoreCase("S")==0);
                break;

        case 4:do{
                System.out.println("\tIngresa el nombre de la tabla que deseas modificar: ");
                 db.vernombresanillo();
                nom=lee.readLine();
                }while(db.busquedaxesferas(nom)==null);
                p=db.busquedaxesferas(nom);

                int opc2=0;

                do{
                    System.out.println("\t\t --------MENU MODIFICAR TABLA--------");
                    System.out.println("\t 1* Eliminar campo");
                    System.out.println("\t 2* Eliminar registro");
                    System.out.println("\t 3* Cambiar nombre de la tabla");
                    System.out.println("\t 4* Modificar dato");
                    System.out.println("\t 5* Ordenar por campo");
                    System.out.println("\t 6* Mostrar tabla");
                    System.out.println("\t 7* Salir");

                    opc2= leer.nextInt();

                    switch(opc2){
                            case 1:do{
                                 System.out.println("\tIngresa el nombre del campo que deseas eliminar: ");
                                  p.verfilas(p.keyF);
                                 nom=lee.readLine();
                                 }while(p.busquedaxfilas(nom)==null);
                                 if(p.busquedaxfilas(nom)!=p.keyF){
                                 q=p.busquedaxfilas(nom);
                                 p.eliminarcampo(q);}
                                 else
                                     System.out.println("\tNo puedes eliminar el campo llave: ");
                           break;
                           case 2:if(p.headC!=p.keyF){
                                    do{
                                 System.out.println("\tIngresa el nombre del registro que deseas eliminar: ");
                                  nom=lee.readLine();
                                 }while(p.busquedaxcolumnas(nom)==null);
                                 q=p.busquedaxcolumnas(nom);
                                 p.eliminarregistro(q);}
                                  else
                                      System.out.println("\tNo hay mas registros para eliminar! ");
                           break;
                           case 3:
                                 System.out.println("\tIngresa el nuevo nombre: ");
                                  nom=lee.readLine();
                                 p.nombre=nom;
                           break; 
                               case 4:
                                 System.out.println("\tIngresa el campo: ");
                                  nom=lee.readLine();
                                 q=p.busquedaxfilas(nom);
                                 if(q==p.keyF)
                                 {System.out.println("\tNo se puede modificar los campos llave");
                                  break;
                                 }
                                 System.out.println("\tIngresa el nombre: ");
                                  nom=lee.readLine();
                                 r=p.busquedaxcolumnas(nom);
                                 s=p.busquedaxtodo(r,q);
                                 System.out.println("\tIngresa "+q.dato+":");
                                  nom=lee.readLine();
                                 s.dato=nom;
                           break;
                            case 5:
                                 System.out.println("\tIngresa el campo: ");
                                  nom=lee.readLine();
                                  if(p.busquedaxfilas(nom)==null)
                                      System.out.println("\tNo existe ese campo");
                                      else
                                 p.ordenax(p.busquedaxfilas(nom));

                            case 6:
                                 if(p.keyF==null){
                                     System.out.println("\tLa tabla no contiene datos: ");
                                     break;
                                 }
                                 System.out.println("\tTABLA: "+p.nombre);
                                 p.mostrartabla();
                                 p.ordenax(p.keyF);
                           break;
                           case 7: break;
                           default:
                                   System.out.println("\tOpcion no valida");
                           break;

                }
                   }while(opc2!=7);
                break;
        case 5:do{
                System.out.println("\tIngresa el nombre de la tabla que deseas llenar: ");
                 db.vernombresanillo();
                nom=lee.readLine();
                }while(db.busquedaxesferas(nom)==null);
                db.eliminaresfera(db.busquedaxesferas(nom));
            break;

        default: System.out.println("opcion no valida");
          break;
        }
    }while(opc1!=6);
}

}

martes, 26 de julio de 2016

Compatibility about DynamicJasper And JasperReport

This is the table of compatibility about DynamicJasper And JasperReport 

DJ 5.x works with JasperReposrts 4.6+ (and 5.0+, 5.1+ and 5.2) and needs JDK 1.6
DJ 4.x workrs with JasperReports 4.1 to 4.5.x
DJ 3.0.5 works with JR 3.5 up to 4.0