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;
	}

}