CounterPersona
Aquí vamos a crear una clase que vamos a devolver para lo consulta del código postal.Creamos el paquete com.tutosoftware.mivacuna.model y en este paquete creamos la clase CounterPersona
package com.tutosoftware.mivacuna.model;
import java.util.List;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter @Setter @NoArgsConstructor
public class CounterPersona {
private Long totalPoblacion;
private Long totalCodigoPostal;
private List<Long> totalEdad;
private List<Double> porcentajeEdad;
}
DAO
En el paquete com.tutosoftware.mivacuna.dao modificamos la interface Poblacion2021DAO
package com.tutosoftware.mivacuna.dao;
import com.tutosoftware.mivacuna.entity.Poblacion2021;
public interface Poblacion2021DAO {
public void guardarPoblacion(Poblacion2021 poblacion2021);
public Long getCountPoblacion();
public Long getCountCodigoPostal(int codigoPostal);
public Long getCountEdad(int codigoPostal,int edad);
}
Ahora en el paquete com.tutosofware.mivacuna.dao.impl modifcamos la clase Poblacion2021DAOImpl
package com.tutosoftware.mivacuna.dao.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.cassandra.core.query.Query;
import org.springframework.stereotype.Repository;
import static org.springframework.data.cassandra.core.query.Criteria.*;
import com.tutosoftware.mivacuna.dao.Poblacion2021DAO;
import com.tutosoftware.mivacuna.entity.Poblacion2021;
import com.tutosoftware.mivacuna.util.CassandraUtil;
@Repository
public class Poblacion2021DAOImpl implements Poblacion2021DAO {
@Autowired
CassandraUtil cassandraUtil;
@Override
public void guardarPoblacion(Poblacion2021 poblacion2021) {
// TODO Auto-generated method stub
cassandraUtil.create(poblacion2021);
}
@Override
public Long getCountPoblacion() {
return cassandraUtil.getCount(Poblacion2021.class);
}
@Override
public Long getCountCodigoPostal(int codigoPostal) {
Query query = Query.query((where("codigo_postal").is(codigoPostal))).withAllowFiltering();
return cassandraUtil.getCount(query,Poblacion2021.class);
}
@Override
public Long getCountEdad(int codigoPostal,int edad) {
Query query = Query.query((where("codigo_postal").is(codigoPostal))).and(where("edad").is(edad))
.withAllowFiltering();
return cassandraUtil.getCount(query,Poblacion2021.class);
}
}
service
En el paquete com.tutosoftware.mivacuna.service modificamos la interface Poblacion2021Service
package com.tutosoftware.mivacuna.service;
import com.tutosoftware.mivacuna.entity.Poblacion2021;
import com.tutosoftware.mivacuna.model.CounterPersona;
public interface Poblacion2021Service {
public void guardarPoblacion(Poblacion2021 poblacion2021);
public CounterPersona getCounterPoblacion(int codigoPostal);
}
En el paquete com.tutosoftware.mivacuna.service.impl modifcamos la clase Poblacion2021ServiceImpl
package com.tutosoftware.mivacuna.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.tutosoftware.mivacuna.dao.Poblacion2021DAO;
import com.tutosoftware.mivacuna.entity.Poblacion2021;
import com.tutosoftware.mivacuna.model.CounterPersona;
import com.tutosoftware.mivacuna.service.Poblacion2021Service;
@Service
@Transactional
public class Poblacion2021ServiceImpl implements Poblacion2021Service {
@Autowired
Poblacion2021DAO poblacion2021DAO;
@Override
public void guardarPoblacion(Poblacion2021 poblacion2021) {
// TODO Auto-generated method stub
poblacion2021DAO.guardarPoblacion(poblacion2021);
}
@Override
public CounterPersona getCounterPoblacion(int codigoPostal) {
CounterPersona counterPersona = new CounterPersona();
long counterEdad;
double porcentajeEdad;
List<Long> edades = new ArrayList<Long>();
List<Double> porcentajes =new ArrayList<Double>();
counterPersona.setTotalPoblacion(poblacion2021DAO.getCountPoblacion());
long contadorCodigoPostal = poblacion2021DAO.getCountCodigoPostal(codigoPostal);
counterPersona.setTotalCodigoPostal(contadorCodigoPostal);
for(int edad=18;edad<=95;edad++) {
counterEdad = poblacion2021DAO.getCountEdad(codigoPostal, edad);
edades.add(counterEdad);
porcentajeEdad=Math.round((double)counterEdad*100)/(double)contadorCodigoPostal;
porcentajes.add(porcentajeEdad);
}
counterPersona.setTotalEdad(edades);
counterPersona.setPorcentajeEdad(porcentajes);
return counterPersona;
}
}