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.divulagadorapi
- Artifact Id: divulagadorapi
- Version: 0.0.1-SNAPSHOT
- Packaging: jar
- Name: Divulagador API
En el archivo pom.xml escribimos lo siguiente:
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutosoftware.divulagadorapi</groupId>
<artifactId>divulagadorapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Divulagador 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>com.google.apis</groupId>
<artifactId>google-api-services-drive</artifactId>
<version>v3-rev20240327-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>2.4.1</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=divulagadordb
spring.data.cassandra.contact-points=127.0.0.1
spring.data.cassandra.local-datacenter=datacenter1
spring.data.cassandra.port=9042
springdoc.swagger-ui.path=/apidivulagador.html
springdoc.swagger-ui.operationsSorter=method
server.port = 8888
spring.servlet.multipart.max-file-size=40MB
spring.servlet.multipart.max-request-size=40MB
En src/main/java creamos el paquete com.tutosoftware.divulgadorapi.domain
Creamos la clase Usuario
package com.tutosoftware.divulgadorapi.domain;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table
public class Usuario {
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
@PrimaryKey
private String email;
private String password;
public Usuario() {}
public Usuario(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;
}
}
Creamos la clase NoticiaKey
package com.tutosoftware.divulgadorapi.domain;
import java.io.Serializable;
import java.time.LocalDateTime;
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 NoticiaKey implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@PrimaryKeyColumn(name="titulonoticia",ordinal=0,type = PrimaryKeyType.PARTITIONED)
private String tituloNoticia;
@PrimaryKeyColumn(name="fechapublicacion",ordinal=2,type = PrimaryKeyType.CLUSTERED)
private LocalDateTime fechaPublicacion;
public NoticiaKey() {
}
public String getTituloNoticia() {
return tituloNoticia;
}
public void setTituloNoticia(String tituloNoticia) {
this.tituloNoticia = tituloNoticia;
}
public LocalDateTime getFechaPublicacion() {
return fechaPublicacion;
}
public void setFechaPublicacion(LocalDateTime fechaPublicacion) {
this.fechaPublicacion = fechaPublicacion;
}
}
Creamos la clase entidad llamada Noticia
package com.tutosoftware.divulgadorapi.domain;
import org.springframework.data.cassandra.core.mapping.Column;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table("noticia")
public class Noticia {
@PrimaryKey
private NoticiaKey nk;
private String comunicador;
private String tipoNoticia;
private String descripcion;
public Noticia() {}
public Noticia(NoticiaKey nk,String comunicador,String tipoNoticia,String descripcion) {
super();
this.nk=nk;
this.comunicador=comunicador;
this.tipoNoticia=tipoNoticia;
this.descripcion=descripcion;
}
public NoticiaKey getNk() {
return nk;
}
public void setNk(NoticiaKey nk) {
this.nk = nk;
}
public String getComunicador() {
return comunicador;
}
public void setComunicador(String comunicador) {
this.comunicador = comunicador;
}
public String getTipoNoticia() {
return tipoNoticia;
}
public void setTipoNoticia(String tipoNoticia) {
this.tipoNoticia = tipoNoticia;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
}
Creamos la clase EvidenciaKey
package com.tutosoftware.divulgadorapi.domain;
import java.time.LocalDateTime;
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 EvidenciaKey {
@PrimaryKeyColumn(name="titulo_noticia",ordinal=0,type = PrimaryKeyType.PARTITIONED)
private String tituloNoticia;
@PrimaryKeyColumn(name="fecha_publicacion",ordinal=1,type = PrimaryKeyType.CLUSTERED)
private LocalDateTime fechaPublicacion;
@PrimaryKeyColumn(name="id_archivo",ordinal=2,type = PrimaryKeyType.CLUSTERED)
private String idArchivo;
public EvidenciaKey() {
}
public String getTituloNoticia() {
return tituloNoticia;
}
public void setTituloNoticia(String tituloNoticia) {
this.tituloNoticia = tituloNoticia;
}
public LocalDateTime getFechaPublicacion() {
return fechaPublicacion;
}
public void setFechaPublicacion(LocalDateTime fechaPublicacion) {
this.fechaPublicacion = fechaPublicacion;
}
public String getIdArchivo() {
return idArchivo;
}
public void setIdArchivo(String idArchivo) {
this.idArchivo = idArchivo;
}
}
Creamos la clase de dominio Evidencia
package com.tutosoftware.divulgadorapi.domain;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table("evidencia")
public class Evidencia {
@PrimaryKey
EvidenciaKey ek;
String comunicador;
public Evidencia() {
}
public Evidencia(EvidenciaKey ek,String comunicador) {
super();
this.ek=ek;
this.comunicador=comunicador;
}
public EvidenciaKey getEk() {
return ek;
}
public void setEk(EvidenciaKey ek) {
this.ek = ek;
}
public String getComunicador() {
return comunicador;
}
public void setComunicador(String comunicador) {
this.comunicador = comunicador;
}