Skip to content

Commit

Permalink
* Codigo compila
Browse files Browse the repository at this point in the history
  • Loading branch information
ripper2hl committed Apr 8, 2024
2 parents ef90d3d + f53abba commit ad8e5bc
Show file tree
Hide file tree
Showing 18 changed files with 593 additions and 218 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
push:
branches: [ "*" ]
pull_request:
branches: [ "master" ]
branches: [ "master", "dev" ]

jobs:
build:
Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,8 @@ docker push gcr.io/clever-hangar-286504/sepomex-api
```

* Deployar en el UI de GCP.


### Curl para actualizar

curl -X 'PATCH' 'http://localhost:8080/v1/colonia/actualizacion' -H 'accept: application/json;charset=UTF-8' -H 'Content-Type: multipart/form-data;charset=UTF-8' -F 'file=@archivo.txt'
16 changes: 9 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,31 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.release>16</java.release>
<java.release>17</java.release>
<java.version>17</java.version>
<servlet.version>4.0.1</servlet.version>
<hibernate.validator.version>7.0.5.Final</hibernate.validator.version>
<jackson.version>2.13.3</jackson.version>
<lombok.version>1.18.24</lombok.version>
<jackson.version>2.16.1</jackson.version>
<lombok.version>1.18.30</lombok.version>
<jsonpath.version>2.7.0</jsonpath.version>
<dbunit.version>2.7.0</dbunit.version>
<dbunit.spring.version>1.3.0</dbunit.spring.version>
<google.guava.version>31.1-jre</google.guava.version>
<h2.version>2.1.214</h2.version>
<google.guava.version>33.0.0-jre</google.guava.version>
<h2.version>2.2.224</h2.version>
<javax.el.api.version>3.0.1-b06</javax.el.api.version>
<javax.el.version>3.0.1-b12</javax.el.version>
<jaxb.api.version>2.4.0-b180830.0359</jaxb.api.version>
<hibernate.search.orm.version>6.0.10.Final</hibernate.search.orm.version>
<hamcrest.all.version>1.3</hamcrest.all.version>
<postgresql.version>42.4.2</postgresql.version>
<jakarta.validation.api>2.0.2</jakarta.validation.api>
<springdoc.openapi.ui>1.6.11</springdoc.openapi.ui>
<springdoc.openapi.ui>1.7.0</springdoc.openapi.ui>
</properties>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<version>2.7.18</version>
</parent>

<dependencies>
Expand Down Expand Up @@ -127,6 +128,7 @@
<artifactId>hibernate-search-v5migrationhelper-orm</artifactId>
<version>${hibernate.search.orm.version}</version>
</dependency>

<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
Expand Down Expand Up @@ -55,6 +56,11 @@ public Colonia borrar(@PathVariable Integer id) {
public boolean cargaMasiva( @RequestPart("file") MultipartFile file ) throws IOException {
return coloniaService.cargaMasiva( file );
}

@PatchMapping(value = "/actualizacion", produces = "application/json; charset=UTF-8", consumes = "multipart/form-data;charset=UTF-8")
public boolean actualizacionMasiva( @RequestPart("file") MultipartFile file ) throws IOException {
return coloniaService.actualizacionMasiva( file );
}

@GetMapping(value = "/municipio/{id}", params = {"page", "size"}, produces = "application/json")
public Page<Colonia> findByEstadoId(@PathVariable Integer id, @RequestParam int page, @RequestParam int size) {
Expand All @@ -71,4 +77,10 @@ public Boolean index() throws InterruptedException {
public List<Colonia> search(Colonia colonia) {
return coloniaService.search(colonia);
}

@GetMapping("/codigopostal/{codigoPostal}")
public ResponseEntity<List<Colonia>> buscarColoniasPorCodigoPostal(@PathVariable String codigoPostal) {
List<Colonia> colonias = coloniaService.buscarColoniasPorCodigoPostal(codigoPostal);
return ResponseEntity.ok(colonias);
}
}
83 changes: 83 additions & 0 deletions src/main/java/com/perales/sepomex/model/Archivo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.perales.sepomex.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;
import java.util.Objects;

@Entity(name = "archivo")
public class Archivo {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

private LocalDateTime fechaCarga;

@Column(columnDefinition = "TEXT")
private String contenido;

// Constructor vacío requerido por JPA
public Archivo() {
}

// Constructor con todos los atributos
public Archivo(int id, LocalDateTime fechaCarga, String contenido) {
this.id = id;
this.fechaCarga = fechaCarga;
this.contenido = contenido;
}

// Getters y setters
public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public LocalDateTime getFechaCarga() {
return fechaCarga;
}

public void setFechaCarga(LocalDateTime fechaCarga) {
this.fechaCarga = fechaCarga;
}

public String getContenido() {
return contenido;
}

public void setContenido(String contenido) {
this.contenido = contenido;
}

// Método equals generado automáticamente por IntelliJ IDEA
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Archivo archivo = (Archivo) o;
return id == archivo.id && Objects.equals(fechaCarga, archivo.fechaCarga) && Objects.equals(contenido, archivo.contenido);
}

// Método hashCode generado automáticamente por IntelliJ IDEA
@Override
public int hashCode() {
return Objects.hash(id, fechaCarga, contenido);
}

// Método toString generado automáticamente por IntelliJ IDEA
@Override
public String toString() {
return "Archivo{" +
"id=" + id +
", fechaCarga=" + fechaCarga +
", contenido='" + contenido + '\'' +
'}';
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/perales/sepomex/model/Municipio.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.hibernate.search.annotations.Analyzer;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
Expand All @@ -22,6 +23,7 @@
@EqualsAndHashCode( exclude = { "id", "colonias", "codigosPostales"})
@NoArgsConstructor
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
@ToString(exclude = {"estado","ciudad", "colonias", "codigosPostales"})
@Entity(name = "municipio")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Municipio implements Serializable {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.perales.sepomex.repository;

import com.perales.sepomex.model.Archivo;
import com.perales.sepomex.model.AsentamientoTipo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ArchivoRepository extends JpaRepository<Archivo, Integer> {
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,34 @@
package com.perales.sepomex.repository;

import com.perales.sepomex.model.Colonia;
import com.perales.sepomex.model.Municipio;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface ColoniaRepository extends JpaRepository<Colonia, Long> {

Page<Colonia> findByMunicipioId(Integer municipioId, Pageable pageable);

@EntityGraph(value = "Colonia.detail", type = EntityGraph.EntityGraphType.LOAD)
Colonia findOneById(Long id);

@Query("SELECT c FROM colonia c JOIN FETCH c.estado JOIN FETCH c.municipio WHERE c.codigoPostal.nombre = :codigoPostal")
List<Colonia> findByCodigoPostal_Nombre(@Param("codigoPostal") String codigoPostal);

List<Colonia> findByNombreAndMunicipioIdAndEstadoId(String nombreColonia,
Integer municipioId,
Integer estadoId);


@Query("SELECT c FROM colonia c JOIN FETCH c.municipio m JOIN FETCH m.estado")
List<Colonia> findAllColoniasWithEstadoAndMunicipio();

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@
@Repository
public interface EstadoRepository extends JpaRepository<Estado, Integer> {
Estado findFirstByInegiClave(String inegiClave);

Estado findFirstByNombre(String nombre);
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
package com.perales.sepomex.repository;

import com.perales.sepomex.model.Estado;
import com.perales.sepomex.model.Municipio;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface MunicipioRepository extends JpaRepository<Municipio, Integer> {

Municipio findFirstByNombreAndEstadoId(String nombre, Integer estadoId);

Page<Municipio> findByEstadoIdOrderByNombre(Integer estadoId, Pageable pageable);

@Query("SELECT m FROM municipio m JOIN FETCH m.estado WHERE m.nombre = :nombre")
List<Municipio> findFirstByNombre(String nombre);

@Query("SELECT m FROM municipio m JOIN FETCH m.estado e WHERE m.nombre = :nombreMunicipio AND e.nombre = :nombreEstado")
Municipio findFirstByNombreAndNombreEstado(String nombreMunicipio, String nombreEstado);

@Query("SELECT m FROM municipio m JOIN FETCH m.estado e WHERE m.nombre = :nombreMunicipio AND e.id = :idEstado")
Municipio findFirstByNombreAndIdEstado(String nombreMunicipio, Integer idEstado);

@Query("SELECT m FROM municipio m JOIN FETCH m.estado")
List<Municipio> findAllMunicipiosWithEstado();
}
58 changes: 58 additions & 0 deletions src/main/java/com/perales/sepomex/service/ArchivoService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.perales.sepomex.service;

import com.perales.sepomex.contract.ServiceGeneric;
import com.perales.sepomex.model.Archivo;
import com.perales.sepomex.model.Archivo;
import com.perales.sepomex.repository.ArchivoRepository;
import org.apache.lucene.search.Query;
import org.hibernate.search.jpa.FullTextEntityManager;
import org.hibernate.search.jpa.Search;
import org.hibernate.search.query.dsl.QueryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;
import java.util.concurrent.TimeUnit;

@Service
public class ArchivoService implements ServiceGeneric<Archivo, Integer> {

@Autowired
private ArchivoRepository ArchivoRepository;

@PersistenceContext
private EntityManager em;

@Transactional(readOnly = true)
public Archivo buscarPorId(Integer id) {
return ArchivoRepository.findById(id).get();
}

@Transactional(readOnly = true)
public Page<Archivo> buscarTodos(int page, int size) {
int firstResult = page * size;
return ArchivoRepository.findAll( PageRequest.of( firstResult, size) );
}

@Transactional
public Archivo guardar(Archivo entity) {
return ArchivoRepository.save(entity);
}

@Transactional
public Archivo actualizar(Archivo entity) {
return ArchivoRepository.saveAndFlush(entity);
}

@Transactional
public Archivo borrar(Integer id) {
Archivo Archivo = ArchivoRepository.findById(id).get();
ArchivoRepository.deleteById(id);
return Archivo;
}
}
Loading

0 comments on commit ad8e5bc

Please sign in to comment.