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
java project
Seleccionamos Create a simple project (skip archetype selection) y Use default Workspace location y presionamos Next
java project
Ahora llenamos los siguientes datos:
y presionamos finish.
java project
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;
	}