Imported from Rommel110207/ProyectoFinalPOOIIIcorte (
AGENTS.md). Install upstream withnpx skills add Rommel110207/ProyectoFinalPOOIIIcorte. Copyright stays with the author.
AGENTS.md
Al crear una entidad en este proyecto, sigue estas reglas:
-
Usa Lombok para generar automáticamente getters y setters
-
Añade las anotaciones
@Gettery@Setterde Lombok a nivel de clase -
Los campos NO deben ser
private -
Usa acceso a nivel de paquete (sin modificador de visibilidad)
package com.tuempresa.ProyectoFinalIICorte.modelo;
import javax.persistence.*;
import org.openxava.annotations.*;
import lombok.*;
@Entity
@Getter @Setter
public class MiEntidad {
@Id
@Column(length=10)
String codigo;
@Column(length=50)
@Required
String nombre;
}
Al crear una estructura maestro-detalle, la colección de detalles en la entidad maestra debe usar @ElementCollection en lugar de @OneToMany. La clase de detalle debe estar anotada con @Embeddable en lugar de @Entity.
package com.tuempresa.ProyectoFinalIICorte.modelo;
import javax.persistence.*;
import org.openxava.annotations.*;
import lombok.*;
@Entity
@Getter @Setter
public class Factura {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
int id;
@Column(length=50)
@Required
String cliente;
@ElementCollection
@ListProperties("producto, cantidad, precio")
Collection<DetalleFactura> detalles;
}
package com.tuempresa.ProyectoFinalIICorte.modelo;
import javax.persistence.*;
import org.openxava.annotations.*;
import lombok.*;
@Embeddable
@Getter @Setter
public class DetalleFactura {
@Column(length=50)
String producto;
int cantidad;
@Money
java.math.BigDecimal precio;
}
- ✅
@Getter @Setterde Lombok - ✅ Campos sin modificador (acceso de paquete)
- ✅ Usa
@ElementCollection+@Embeddablepara colecciones maestro-detalle - ❌ No uses
privateen los campos - ❌ No escribas getters/setters manualmente
- ❌ No uses
@OneToMany/@Entitypara colecciones de detalles
Este proyecto depende de una carpeta .xava que contiene recursos para agentes (ejemplos de tests, definiciones de controladores, etc.). Si la carpeta .xava no existe en la raíz del proyecto:
- Ejecuta
mvn packagepara generarla - NO añadas
.xavaa.gitignore— debe permanecer en el repositorio
Al crear un test automatizado o test JUnit en este proyecto, consulta los ejemplos ubicados en ./.xava/agents/test.
-
Ubicación de ejemplos:
./.xava/agents/test -
Acciones disponibles: Consulta
default-controllers.xmldentro de./.xava/agents/test -
Usamos JUnit 4
-
Extiende
ModuleTestBasepara tests de módulos OpenXava -
La primera línea de cada método de test debe ser
login("admin", "admin"); -
Sigue la estructura de paquetes por módulo como se muestra en los ejemplos
-
NO intentes ejecutar tests con
mvn— el usuario los ejecutará desde el IDE
package com.tuempresa.ProyectoFinalIICorte.pruebas;
import org.openxava.tests.*;
public class ClienteTest extends ModuleTestBase {
public ClienteTest(String testName) {
super(testName, "agenttest", "Cliente");
}
public void testCrearCliente() throws Exception {
login("admin", "admin");
// Lógica del test aquí
}
}
- ✅ Consulta ejemplos en
./.xava/agents/test - ✅ Usa
ModuleTestBasepara tests de módulos - ✅ Primera línea de cada test:
login("admin", "admin"); - ✅ Consulta
default-controllers.xmlpara acciones disponibles - ❌ NO ejecutes tests con
mvn