162 lines
6.3 KiB
Java
Executable File
162 lines
6.3 KiB
Java
Executable File
package es.recursoscatolicos;
|
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
import es.recursoscatolicos.model.CalendarioLiturgico;
|
|
import es.recursoscatolicos.model.Grupo;
|
|
import es.recursoscatolicos.model.Parroquia;
|
|
import es.recursoscatolicos.model.SantoDelDia;
|
|
import es.recursoscatolicos.model.VersoBiblico;
|
|
import es.recursoscatolicos.repository.CalendarioLiturgicoRepository;
|
|
import es.recursoscatolicos.repository.GrupoRepository;
|
|
import es.recursoscatolicos.repository.ParroquiaRepository;
|
|
import es.recursoscatolicos.repository.SantoDelDiaRepository;
|
|
import es.recursoscatolicos.repository.VersoBiblicoRepository;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.boot.CommandLineRunner;
|
|
import org.springframework.core.io.ClassPathResource;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.time.LocalDate;
|
|
import java.util.List;
|
|
|
|
@Component
|
|
@RequiredArgsConstructor
|
|
@Slf4j
|
|
public class DataInitializer implements CommandLineRunner {
|
|
|
|
private final ParroquiaRepository parroquiaRepository;
|
|
private final GrupoRepository grupoRepository;
|
|
private final CalendarioLiturgicoRepository calendarioRepository;
|
|
private final VersoBiblicoRepository versoBiblicoRepository;
|
|
private final SantoDelDiaRepository santoDelDiaRepository;
|
|
|
|
@Override
|
|
public void run(String... args) throws Exception {
|
|
cargarParroquias();
|
|
cargarCalendario();
|
|
cargarVersosBiblicos();
|
|
cargarSantoDelDia();
|
|
}
|
|
|
|
private void cargarVersosBiblicos() throws Exception {
|
|
if (versoBiblicoRepository.count() > 0) return;
|
|
|
|
log.info("Cargando versos bíblicos (Salmos + Proverbios)...");
|
|
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
List<VersoBiblico> todos = new java.util.ArrayList<>();
|
|
|
|
cargarFuente(mapper, "salmos.json", "Salmos", todos);
|
|
cargarFuente(mapper, "proverbios.json", "Proverbios", todos);
|
|
|
|
versoBiblicoRepository.saveAll(todos);
|
|
log.info("Versos bíblicos cargados: {} en total.", todos.size());
|
|
}
|
|
|
|
private void cargarFuente(ObjectMapper mapper, String recurso, String fuente,
|
|
List<VersoBiblico> destino) throws Exception {
|
|
List<java.util.Map<String, Object>> items = mapper.readValue(
|
|
new ClassPathResource(recurso).getInputStream(),
|
|
new TypeReference<>() {}
|
|
);
|
|
items.forEach(s -> {
|
|
VersoBiblico v = new VersoBiblico();
|
|
v.setFuente(fuente);
|
|
v.setNumero(((Number) s.get("numero")).intValue());
|
|
v.setTexto((String) s.get("texto"));
|
|
destino.add(v);
|
|
});
|
|
}
|
|
|
|
private void cargarParroquias() {
|
|
if (parroquiaRepository.count() > 0) return;
|
|
|
|
log.info("Cargando datos de ejemplo...");
|
|
|
|
Parroquia p1 = saveParroquia("San José Obrero", "Calle Mayor, 12, Madrid");
|
|
Parroquia p2 = saveParroquia("Nuestra Señora del Pilar", "Avda. de la Paz, 5, Zaragoza");
|
|
Parroquia p3 = saveParroquia("Santa María de la Asunción", "Plaza de la Iglesia, 1, Sevilla");
|
|
|
|
saveGrupo("Catequesis infantil", p1);
|
|
saveGrupo("Catequesis de adultos", p1);
|
|
saveGrupo("Hogar de Misiones", p1);
|
|
saveGrupo("Cáritas parroquial", p1);
|
|
saveGrupo("Grupo de jóvenes", p1);
|
|
saveGrupo("Catequesis infantil", p2);
|
|
saveGrupo("Grupo de jóvenes", p2);
|
|
saveGrupo("Cáritas parroquial", p3);
|
|
|
|
log.info("Datos de ejemplo cargados correctamente.");
|
|
}
|
|
|
|
private void cargarCalendario() throws Exception {
|
|
if (calendarioRepository.count() > 0) return;
|
|
|
|
log.info("Cargando calendario litúrgico...");
|
|
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
mapper.registerModule(new JavaTimeModule());
|
|
|
|
List<CalendarioLiturgico> entradas = mapper.readValue(
|
|
new ClassPathResource("calendario-liturgico.json").getInputStream(),
|
|
new TypeReference<>() {}
|
|
);
|
|
|
|
calendarioRepository.saveAll(entradas);
|
|
log.info("Calendario litúrgico cargado: {} entradas.", entradas.size());
|
|
}
|
|
|
|
private Parroquia saveParroquia(String nombre, String direccion) {
|
|
Parroquia p = new Parroquia();
|
|
p.setNombre(nombre);
|
|
p.setDireccion(direccion);
|
|
return parroquiaRepository.save(p);
|
|
}
|
|
|
|
private void saveGrupo(String nombre, Parroquia parroquia) {
|
|
Grupo g = new Grupo();
|
|
g.setNombre(nombre);
|
|
g.setParroquia(parroquia);
|
|
grupoRepository.save(g);
|
|
}
|
|
|
|
private void cargarSantoDelDia() {
|
|
if (santoDelDiaRepository.count() > 0) return;
|
|
|
|
log.info("Cargando Santos del Día para 2026...");
|
|
|
|
// Datos esenciales: el santo del día hoy (29 de junio de 2026) y algunos días cercanos
|
|
agregarSanto(LocalDate.of(2026, 6, 28), "San Ireneo", "obispo y mártir", "rojo");
|
|
agregarSanto(LocalDate.of(2026, 6, 29), "San Pedro y San Pablo", "apóstoles", "rojo");
|
|
agregarSanto(LocalDate.of(2026, 6, 30), "San Justo de Alcalá", null, "rojo");
|
|
agregarSanto(LocalDate.of(2026, 7, 1), "Santa María Goretti", null, "rojo");
|
|
|
|
// Días especiales del año
|
|
agregarSanto(LocalDate.of(2026, 1, 1), "Santa María, Madre de Dios", null, "rosa");
|
|
agregarSanto(LocalDate.of(2026, 12, 25), "Natividad del Señor", "Solemnidad", "blanco");
|
|
agregarSanto(LocalDate.of(2026, 8, 15), "Asunción de la Virgen María", null, "blanco");
|
|
agregarSanto(LocalDate.of(2026, 11, 1), "Todos los Santos", "Solemnidad nacional", "blanco");
|
|
agregarSanto(LocalDate.of(2026, 12, 8), "Inmaculada Concepción", "Patrona de España", "azul");
|
|
|
|
log.info("Santos del Día cargados correctamente.");
|
|
}
|
|
|
|
private void agregarSanto(LocalDate fecha, String santo, String descripcion, String color) {
|
|
SantoDelDia s = new SantoDelDia();
|
|
s.setFecha(fecha);
|
|
s.setSanto(santo);
|
|
s.setDescripcion(descripcion);
|
|
s.setColor(color);
|
|
try {
|
|
santoDelDiaRepository.save(s);
|
|
} catch (Exception e) {
|
|
// Si ya existe, ignorar el error (por la unicidad de fecha)
|
|
log.debug("Santo del día {} ya existe", fecha);
|
|
}
|
|
}
|
|
}
|
|
|