private static void addRepartoWithChofer(Schema schema) { Entity reparto = schema.addEntity("Reparto"); reparto.addIdProperty(); reparto.addStringProperty("codigo").notNull(); reparto.addDateProperty("date"); Entity chofer = schema.addEntity("Chofer"); chofer.addIdProperty(); chofer.addStringProperty("nombre").notNull(); // Relaciones // Un Reparto tiene un Chofer : Relacion toOne 1:1 // Creo una foreign key para luego agregar a la tabla reparto Property idChofer = reparto.addLongProperty("idChofer").notNull().getProperty(); // agrego a reparto la relacion toOne que saca el id de chofer y lo agrega como foreign key // en la tabla reparto como choferId reparto.addToOne(chofer, idChofer); // La linea anterior permite trabajar directamente en un Reparto con su respectivo Chofer // con un getChofer/setChofer creados por greenDao // Un Chofer tiene muchos Repartos: Relacion toMany 1:N // To-many relations are modeled like to-one relations, // except that the foreign key is placed in the destination table. ToMany repartosDeUnChofer = chofer.addToMany(reparto, idChofer); repartosDeUnChofer.setName("repartos"); // Entonces ahora podemos llamar a chofer.getRepartos() // que nos retornara la lista de repartos del chofer }
public static Entity createParishEntity(Schema schema, Entity subcounty) { Entity parish = schema.addEntity("Parish"); parish.addStringProperty("uuid").notNull().unique().primaryKey(); parish.addStringProperty("name").notNull(); Property subcountyId = parish.addStringProperty("subCountyId").notNull().getProperty(); ToMany subcountyToParishes = subcounty.addToMany(parish, subcountyId); subcountyToParishes.setName("parishes"); parish.addToOne(subcounty, subcountyId); return parish; }
private static void addCustomerOrder(Schema schema) { Entity customer = schema.addEntity("Customer"); customer.addIdProperty(); customer.addStringProperty("name").notNull(); Entity order = schema.addEntity("Order"); order.setTableName("ORDERS"); // "ORDER" is a reserved keyword order.addIdProperty(); Property orderDate = order.addDateProperty("date").getProperty(); Property customerId = order.addLongProperty("customerId").notNull().getProperty(); order.addToOne(customer, customerId); ToMany customerToOrders = customer.addToMany(order, customerId); customerToOrders.setName("orders"); customerToOrders.orderAsc(orderDate); }
public static Entity createProductEntity(Schema schema, Entity group) { Entity product = schema.addEntity("Product"); product.addStringProperty("uuid").notNull().unique().primaryKey(); product.addStringProperty("name").notNull(); product.addStringProperty("unitOfMeasure"); product.addStringProperty("formulation"); product.addStringProperty("unitPrice"); product.addStringProperty("groupName"); Property groupId = product.addStringProperty("groupId").notNull().getProperty(); ToMany groupToProducts = group.addToMany(product, groupId); groupToProducts.setName("products"); product.addToOne(group, groupId); return product; }
private static void addTable(Schema schema) { // Tabla 1. Valoraciones // Ver pojoValoraciones ->> ResultValoraciones Entity valoraciones = schema.addEntity("Valoraciones"); valoraciones.addIdProperty(); valoraciones.addStringProperty("objectId"); valoraciones.addStringProperty("updateAt"); // ¿Hace falta updateAt en todas las tablas? valoraciones.addStringProperty("valoracion"); // Tabla 2. Sitios // Ver Sitios ->> Result Entity sitios = schema.addEntity("Sitios"); sitios.addIdProperty(); sitios.addStringProperty("objectId"); sitios.addStringProperty("updateAt"); sitios.addStringProperty("nombre"); sitios.addStringProperty("categoria"); sitios.addStringProperty("direccion"); sitios.addStringProperty("tlf"); sitios.addStringProperty("descripcion"); sitios.addStringProperty("fotoUrl"); sitios.addStringProperty("latitud"); sitios.addStringProperty("longitud"); // Tabla 3. Usuarios // Ver Login Entity usuarios = schema.addEntity("Usuarios"); usuarios.addIdProperty(); usuarios.addStringProperty("objectId"); usuarios.addStringProperty("updateAt"); usuarios.addStringProperty("sessionToken"); usuarios.addStringProperty("user"); usuarios.addStringProperty("nombre"); usuarios.addStringProperty("email"); usuarios.addStringProperty("fotoUrl"); // Tabla 4. Comentarios // Ver Comentario ->> Result Entity comentarios = schema.addEntity("Comentarios"); comentarios.addIdProperty(); comentarios.addStringProperty("objectId"); comentarios.addStringProperty("updateAt"); comentarios.addStringProperty("comentario"); // Relación Sitio - Comentarios // Un Sitio tendrá varios Comentarios (1:N) y un // Comentario sólo puede pertenecer a un Sitio (1:1). Property idSitioC = comentarios.addLongProperty("idSitioC").notNull().getProperty(); comentarios.addToOne( sitios, idSitioC); // La tabla comentarios tiene como clave foránea el idSitioC de sitios ToMany comentariosDeUnSitio = sitios.addToMany(comentarios, idSitioC); comentariosDeUnSitio.setName("comentariosDeUnSitio"); comentariosDeUnSitio.orderAsc(idSitioC); // Relación Usuario - Comentarios // Un Usuario podrá hacer varios Comentarios (1:N) y un // Comentario sólo puede pertenecer a un Usuario (1:1). Property idUsuarioC = comentarios.addLongProperty("idUsuarioC").notNull().getProperty(); comentarios.addToOne( usuarios, idUsuarioC); // La tabla comentarios tiene como clave foránea el idUsuarioC de usuarios ToMany comentariosDeUnUsuario = usuarios.addToMany(comentarios, idUsuarioC); comentariosDeUnUsuario.setName("comentariosDeUnUsuario"); comentariosDeUnUsuario.orderAsc(idUsuarioC); // Relación Valoraciones - Usuario // Un Usuario podrá hacer varias Valoraciones (1:N) y una // Valoración sólo puede pertenecer a un Usuario (1:1). Property idUsuarioV = valoraciones.addLongProperty("idUsuarioV").notNull().getProperty(); valoraciones.addToOne( usuarios, idUsuarioV); // La tabla comentarios tiene como clave foránea el idUsuarioV de usuarios ToMany valoracionesDeUnUsuario = usuarios.addToMany(valoraciones, idUsuarioV); valoracionesDeUnUsuario.setName("valoracionesDeUnUsuario"); valoracionesDeUnUsuario.orderAsc(idUsuarioV); // Relación Valoraciones - Sitio // Un Sitio podrá hacer tener varias Valoraciones (1:N) y una // Valoración sólo puede pertenecer a un Sitio (1:1). Property idSitioV = valoraciones.addLongProperty("idSitioV").notNull().getProperty(); valoraciones.addToOne( sitios, idSitioV); // La tabla comentarios tiene como clave foránea el idSitioV de sitios ToMany valoracionesDeUnSitio = usuarios.addToMany(valoraciones, idSitioV); valoracionesDeUnSitio.setName("valoracionesDeUnSitio"); valoracionesDeUnSitio.orderAsc(idSitioV); }