Desarrollo
La propuesta solución es la siguiente se propone hacer un desarrollo multimodular de 3 modulos cliente de tipo war que son los siguientes:- Modulo Administrador de la liga
- Modulo informativo e inscripciones a la liga para público en general
- Modulo administrador para equipos
Api rest
Vamos a comenzar con el desarrollo back-end de nuestro sistema que va intereactuar con apache cassandra.Abrimos nuestro IDE eclipse y creamos un proyecto maven
Procedemos a abrir nuestro IDE eclipse y nos vamos al menú y le damos File->New->Maven Project
Seleccionamos Create a simple project (skip archetype selection) y Use default Workspace location y presionamos Next
Ahora llenamos los siguientes datos:
- Group Id: com.tutosoftware.ligaaztecaapi
- Artifact Id: ligaaztecaapi
- Version: 0.0.1-SNAPSHOT
- Packaging: jar
- Name: LigaAzteca API
En el archivo pom.xml escribimos lo siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutosoftware.ligaaztecaapi</groupId>
<artifactId>ligaaztecaapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>LigaAzteca API</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-groovy-dsl</artifactId>
<version>2.1.1</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-sql</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-sql</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
En el directorio src/main/resources creamos el archivo application.properties
spring.data.cassandra.keyspace-name=ligadb
spring.data.cassandra.contact-points=127.0.0.1
spring.data.cassandra.local-datacenter=datacenter1
spring.data.cassandra.port=9042
springdoc.swagger-ui.path=/apiligaazteca.html
springdoc.swagger-ui.operationsSorter=method
server.port = 8888
En src/main/java creamos el paquete com.tutosoftware.ligaaztecaapi.domain
Este paquete creamos la clase Torneo
package com.tutosoftware.ligaaztecaapi.domain;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table
public class Torneo {
@PrimaryKey
private String idTorneo;
private String nombreTorneo;
private int cantidadEquipos;
private int activarTorneo;
private double costoInscripcion;
private int numJugPorEquipo;
private int numVueltas;
private int refuerzos;
public Torneo() {}
public Torneo(String idTorneo, String nombreTorneo, int cantidadEquipos, int activarTorneo,
double costoInscripcion, int numJugPorEquipo, int numVueltas, int refuerzos) {
super();
this.idTorneo = idTorneo;
this.nombreTorneo = nombreTorneo;
this.cantidadEquipos = cantidadEquipos;
this.activarTorneo = activarTorneo;
this.costoInscripcion = costoInscripcion;
this.numJugPorEquipo = numJugPorEquipo;
this.numVueltas = numVueltas;
this.refuerzos = refuerzos;
}
public String getIdTorneo() {
return idTorneo;
}
public void setIdTorneo(String idTorneo) {
this.idTorneo = idTorneo;
}
public String getNombreTorneo() {
return nombreTorneo;
}
public void setNombreTorneo(String nombreTorneo) {
this.nombreTorneo = nombreTorneo;
}
public int getCantidadEquipos() {
return cantidadEquipos;
}
public void setCantidadEquipos(int cantidadEquipos) {
this.cantidadEquipos = cantidadEquipos;
}
public int getActivarTorneo() {
return activarTorneo;
}
public void setActivarTorneo(int activarTorneo) {
this.activarTorneo = activarTorneo;
}
public double getCostoInscripcion() {
return costoInscripcion;
}
public void setCostoInscripcion(double costoInscripcion) {
this.costoInscripcion = costoInscripcion;
}
public int getNumJugPorEquipo() {
return numJugPorEquipo;
}
public void setNumJugPorEquipo(int numJugPorEquipo) {
this.numJugPorEquipo = numJugPorEquipo;
}
public int getNumVueltas() {
return numVueltas;
}
public void setNumVueltas(int numVueltas) {
this.numVueltas = numVueltas;
}
public int getRefuerzos() {
return refuerzos;
}
public void setRefuerzos(int refuerzos) {
this.refuerzos = refuerzos;
}
}
Ahora creamos la clase UsuarioAdmin
package com.tutosoftware.ligaaztecaapi.domain;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table
public class UsuarioAdmin {
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
@PrimaryKey
private String email;
private String password;
public UsuarioAdmin() {}
public UsuarioAdmin(String nombre, String apellidoPaterno, String apellidoMaterno, String email, String password) {
super();
this.nombre = nombre;
this.apellidoPaterno = apellidoPaterno;
this.apellidoMaterno = apellidoMaterno;
this.email = email;
this.password = password;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidoPaterno() {
return apellidoPaterno;
}
public void setApellidoPaterno(String apellidoPaterno) {
this.apellidoPaterno = apellidoPaterno;
}
public String getApellidoMaterno() {
return apellidoMaterno;
}
public void setApellidoMaterno(String apellidoMaterno) {
this.apellidoMaterno = apellidoMaterno;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
A contonuación creamos la calse EquipoKey esta clase es para la llave compuesta de la tabla equipo
package com.tutosoftware.ligaaztecaapi.domain;
import java.io.Serializable;
import org.springframework.data.cassandra.core.cql.PrimaryKeyType;
import org.springframework.data.cassandra.core.mapping.PrimaryKeyClass;
import org.springframework.data.cassandra.core.mapping.PrimaryKeyColumn;
@PrimaryKeyClass
public class EquipoKey implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@PrimaryKeyColumn(name = "idTorneo", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
private String idTorneo;
@PrimaryKeyColumn(name = "idEquipo", ordinal = 1, type = PrimaryKeyType.CLUSTERED)
private String idEquipo;
public EquipoKey(){}
public String getIdTorneo() {
return idTorneo;
}
public void setIdTorneo(String idTorneo) {
this.idTorneo = idTorneo;
}
public String getIdEquipo() {
return idEquipo;
}
public void setIdEquipo(String idEquipo) {
this.idEquipo = idEquipo;
}
}
Ahora creamos la clase Equipo
package com.tutosoftware.ligaaztecaapi.domain;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table
public class Equipo {
@PrimaryKey
private EquipoKey pk;
private String nombreEquipo;
private String delegado;
private String campo;
private String email;
private String password;
private String telefono;
private int idStatus;
public Equipo() {}
public Equipo(EquipoKey pk, String nombreEquipo, String delegado, String campo, String email, String password,
String telefono, int idStatus) {
super();
this.pk = pk;
this.nombreEquipo = nombreEquipo;
this.delegado = delegado;
this.campo = campo;
this.email = email;
this.password = password;
this.telefono = telefono;
this.idStatus = idStatus;
}
public EquipoKey getPk() {
return pk;
}
public void setPk(EquipoKey pk) {
this.pk = pk;
}
public String getNombreEquipo() {
return nombreEquipo;
}
public void setNombreEquipo(String nombreEquipo) {
this.nombreEquipo = nombreEquipo;
}
public String getDelegado() {
return delegado;
}
public void setDelegado(String delegado) {
this.delegado = delegado;
}
public String getCampo() {
return campo;
}
public void setCampo(String campo) {
this.campo = campo;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public int getIdStatus() {
return idStatus;
}
public void setIdStatus(int idStatus) {
this.idStatus = idStatus;
}
}