Bueno pues yo he tratado de simular lo que es una base de datos el proyecto aun esta en beta y tiene actualmente dos funcionalidades el almacenar cadenas y objetos.
¿Como funciona?
El funcionamiento es sencillo aun que un poco revoltoso; Como objeto principal se utilizan HashMap es una especie de simulacion de arboles (no arboles binarios) un ejemplo grafico de lo que quiero demostrar es este:
Cada nodo del arbol es uun hashmap
usuarios->sistema->roles->administrador
y la representacion en objetos nativos de java seria
hashmap->hashmap->hashmap->ObjetoSerializado
Se tiene que tener en cuenta que los objetos a guardar tienen que implementar la interface Serializable, yo construí una clase llamado ObjetoSerializado el cual implementa esta interface y es usada dentro de la la clase principal.
import com.base.beans.ObjetoSerializado;
/**
*
* @author Carlos Landin
*/
public class Usuario implements Serializable{
private String nombre;
private String apellido;
public Usuario(String nombre, String apellido) {
this.nombre = nombre;
this.apellido = apellido;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
package basededatos;
import com.base.Db;
import java.util.Iterator;
import java.util.List;
/**
*
* @author root
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//se crea el objeto que sera la base de datos esto generara un archivo binario en la raiz del proyecto que facilmente se puede transportar
//el constructor esta sobrecargado pasandole el parametro booleano crea una nueva base de datos y sin el se utilisa una existente
Db base = new Db("ejemplo4",true);
//se apunta a la base de datos este metodo originalmente se tiene el constructor pero lo apunto aqui
//para simular una base datos, mas aaadelante se podran utilizar mas de una base de datos
base.use();
//yo construi un lector de querys el cual se representa de la siguente manera
base.execQuery("usuarios->1", new Usuario("Carlos", "Landin"));
//como se puede ver en el query primero se crea un nodo llamado usuario y dentro de este se pone un "id" pero en realidad es otro nodo
base.execQuery("usuarios->2", new Usuario("Alma", "Rodriguez"));
base.execQuery("usuarios->3", new Usuario("Francisco", "Diaz"));
//se recupera objeto que previamente se guardo
//es importante tener en cuenta que estos datos despues de ejecutar este query se escriven en un archivo
//se recuperan todos los nodos en este nivel del arbol
List u= (List) base.getObjetoSerializado("usuarios->*");
//tambien se puede recuperar un solo objeto
//List u= (List) base.getObjetoSerializado("usuarios->1");
//se muestran los datos el cual la salida tendria que ser
for (Iterator it = u.iterator(); it.hasNext();) {
usuario object = it.next();
System.out.println(object.getNombre());
}
//Salida
// Carlos
//Alma
//Francisco
//tambien esta libreria permite almacenar strings implementado algunos metodos mas como busqueda por ejemplo
//aqui se crean objetos en el mismo nivel que seria configuracion
base.execQuery("put tabla->configuracion->clave1");
base.execQuery("put tabla->configuracion->clave2");
//el siguiente metodo es para buscar seria el equivalente al LIKE en sql pero aqui se utiliza ' (comilla simple)
//la siguiente linea busca todos los que contengan la letra "o" no importa si tiene caracteres adelante o detras de el
List l = base.execQuery("get tabla->configuracion->'0'");
for (Object object : l) {
System.out.println(object);
}
//recuperando todos los elementos en este nivel
List l = base.executarQuery("get tabla1->ususarios->nombre->*");
for (Object object : l) {
System.out.println(object);
}
}
}
Ojala les paresca interesante aqui les adjunto el proyecto que estaba haciendo en Netbeans http://www.megaupload.com/?d=XDQN7JG8 disculpen la hora per deverdad el universo conspiro en mi contra XD bueno ya como conclucion les pregunto
¿Y tu para que la usarias?
editado
Bueno pues una severa disculpa por mis horrores pero ese dia estaba tan apurado no habia visto la prorroga que habian dado jejejej, muchas gracias por las observaciones que me hicieron, la verdad si tenia contemplado refinar el idioma y esas cosas del spanglish, es solo que deverdad desarrolle rapidisimo la libreria que ni pense en ese momento en eso, bueno como sea aqui esta la version alfa del proyecto https://sourceforge.net/projects/liladb/les pido de favor que si alguien quisiera aportar al proyecto ya sea agregar alguna funcionalidad o alguna sugerencia (o quisaz echarme la mano a traducirlo) prometo subir el proyecto ya con todos los metodos documentados SALUDOS A TODOS
Editado
La libreria se modifico para poder implementar nadamas la interface Serializable