Desarrollo
Vamos a comenzar con el desarrollo de back-end tenemos que realizar una api rest o microservicio con spring boot que nos genere un método de tipo post para insertar en base de datos a la poblacion.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.mivacuna
- Artifact Id: mivacuna
- Version: 0.0.1-SNAPSHOT
- Packaging: jar
- Name: MiVacuna
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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.tutosoftware.mivacuna</groupId>
<artifactId>mivacuna</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MiVacuna</name>
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-cassandra -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>2.0.8.RELEASE</version><!--$NO-MVN-MAN-VER$-->
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version><!--$NO-MVN-MAN-VER$-->
<scope>provided</scope>
</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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
NOTA: Todavía puede modificarse esto para que comiences a trabajar.
En src/main/java creamos el paquete com.tutosoftware.mivacuna.config y creamos la clase CassandraConfig
package com.tutosoftware.mivacuna.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.cassandra.SessionFactory;
import org.springframework.data.cassandra.config.CassandraClusterFactoryBean;
import org.springframework.data.cassandra.config.CassandraSessionFactoryBean;
import org.springframework.data.cassandra.config.SchemaAction;
import org.springframework.data.cassandra.core.CassandraOperations;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.data.cassandra.core.convert.CassandraConverter;
import org.springframework.data.cassandra.core.convert.MappingCassandraConverter;
import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext;
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.core.mapping.SimpleUserTypeResolver;
import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories;
@SuppressWarnings("deprecation")
@Configuration
@PropertySource(value = { "classpath:cassandra.properties" })
@EnableCassandraRepositories(basePackages = { "com.tutosoftware.mivacuna" })
public class CassandraConfig {
@Autowired
private Environment env;
@Bean
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints(env.getProperty("cassandra.contactpoints"));
cluster.setPort(Integer.parseInt(env.getProperty("cassandra.port")));
cluster.setJmxReportingEnabled(false);
return cluster;
}
@Bean
public CassandraMappingContext mappingContext() {
return new BasicCassandraMappingContext();
}
@Bean
public CassandraConverter converter() {
return new MappingCassandraConverter(mappingContext());
}
@Bean
public CassandraSessionFactoryBean session() throws Exception {
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
session.setCluster(cluster().getObject());
session.setKeyspaceName(env.getProperty("cassandra.keyspace"));
session.setConverter(converter());
session.setSchemaAction(SchemaAction.NONE);
return session;
}
@Bean
public CassandraOperations cassandraTemplate() throws Exception {
return new CassandraTemplate(session().getObject());
}
}
Ahora nos cambiamos al directorio src/main/resources y creamos el archivo cassandra.properties
cassandra.contactpoints=localhost,127.0.0.1
cassandra.port=9042
cassandra.keyspace=vacunacoviddb
Nos pasamos al directorio src/main/java y creamos el paquete com.tutosoftware.mivacuna.entity En este paquete creamos la clase entidadPoblacion2021
package com.tutosoftware.mivacuna.entity;
import java.time.LocalDateTime;
import org.springframework.data.cassandra.core.mapping.Column;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Table(value="poblacion2021")
@Getter @Setter @NoArgsConstructor
public class Poblacion2021 {
@PrimaryKey(value="curp")
private String curp;
@Column(value="nombre")
private String nombre;
@Column(value="apellido_paterno")
private String apellidoPaterno;
@Column(value="apellido_materno")
private String apellidoMaterno;
@Column(value="edad")
private int edad;
@Column(value="codigo_postal")
private int codigoPostal;
@Column(value="email")
private String email;
@Column(value="fecha_registro")
private LocalDateTime fechaRegistro;
@Column(value="dosis_uno")
private boolean dosisUno;
@Column(value="fecha_aplicacion_uno")
private LocalDateTime fechaAplicacionUno;
@Column(value="sede_aplicacion_uno")
private String sedeAplicacionUno;
@Column(value="folio_aplicacion_uno")
private String folioAplicacionUno;
@Column(value="laborartorio_uno")
private String laboratorioUno;
@Column(value="dosis_dos")
private boolean dosisDos;
@Column(value="fecha_aplicacion_dos")
private LocalDateTime fechaAplicacionDos;
@Column(value="sede_aplicacion_dos")
private String sedeAplicacionDos;
@Column(value="folio_aplicacion_dos")
private String folioAplicacionDos;
@Column(value="laborartorio_dos")
private String laboratorioDos;
}