Preencher meses entre datas

Bom dia, estou precisando de ajuda para preencher os meses entre datas.

Busco o período que tem datas para cada usuário e distribuo nos meses de cada ano nos meses correspondentes a cada data conforme figura Exemplo 1.

O meu problema é o seguinte, preciso preencher os meses entre cada data com o mês anterior ao da nova data como mostra na figura Exemplo2 mas não estou conseguindo.

Alguém pode me ajudar?

Segue abaixo meu script:


TipoProjetoDto tipoProjetoDto = new TipoProjetoDto();
TiposProjetosDao tipo_proj = new TiposProjetosDao();
List<TipoProjetoDto> listaTipoProjetos = null;

FabCompDto fabCompDto = new FabCompDto();
FabCompDao fab_comp = new FabCompDao();
List<FabCompDto> listaFabComp = null;

NegocioDto negocioDto = new NegocioDto();
NegociosDao negocio = new NegociosDao();
List<NegocioDto> listaNegocio = null;

CategoriaDto categoriaDto = new CategoriaDto();
CategoriasDao categoria = new CategoriasDao();
List<CategoriaDto> listaCategoria = (List<CategoriaDto>) categoria.find(null,"1",100);

ProjetoDto ProjetoDto = new ProjetoDto();
ProjetosDao proj = new ProjetosDao();
List<ProjetoDto> listaProjeto = null;

SimuladorProjetoDao simuladorDao = new SimuladorProjetoDao();

ArrayList<String> anos = (ArrayList<String>) simuladorDao.verifica_anos();
ArrayList<Date> datas = null;

ArrayList<String[]> datateste = new ArrayList<String[]>();

Integer[] meses = {1,2,3,4,5,6,7,8,9,10,11,12} ;

%>
    <div id="nova_pauta" style="width:100%;">
        <table border="0" align="center"  class="tablesorter list proj_list">
		 <thead>
		 <tr>
		  <th rowspan="2">Nome</th>
		  <%
		  int cols = 0;
		  for (String ano : anos){ 

		    cols = 12;
		   
		    List<SimuladorProjetoDto> colunas = (List<SimuladorProjetoDto>) simuladorDao.conta_datas("YEAR(dt_tollgate)='"+ano+"'");
            datas = (ArrayList<Date>) simuladorDao.verifica_datas("YEAR(dt_tollgate)='"+ano+"'"); 
            
            for(Date data: datas){

            	Calendar cal = GregorianCalendar.getInstance();
            	cal.setTime(data);
            	Integer m = cal.get(Calendar.MONTH);
            	m = m + 1;
            String[] temp0 = {String.valueOf(m)};
            datateste1.add(temp0);
            }
		  %>
		  <th colspan="<%=cols%>"><%=ano%></th>		  
		  <%}%>
		  </tr>
		  <tr>
		   <%
		   String mes = "";
		   for (String ano : anos){ 
		 
			   for (Integer mesInt: meses){

				if (mesInt == 1){
					  
					  mes = "Jan";
				}
				if (mesInt ==  2){
						  
					  mes = "Fev";
				}
				if (mesInt == 3){
					  
					  mes = "Mar";
				}
				if (mesInt == 4){
					  
					  mes = "Abr";
				}
				if (mesInt == 5){
					  
					  mes = "Mai";
				}
				if (mesInt == 6){
					  
					  mes = "Jun";
				}
				if (mesInt == 7){
					  
					  mes = "Jul";
				}
				if (mesInt == 8){
					  
					  mes = "Ago";
				}
				if (mesInt == 9){
					  
					  mes = "Set";
				}
				if (mesInt == 10){
					  
					  mes = "Out";
				}
				if (mesInt == 11){
					  
					  mes = "Nov";
				}
				if (mesInt == 12){
					  
					  mes = "Dez";
				}
				%>
				<th><%=mes%></th>	
				<%}} %>
		  </tr>
		  
		  </thead>
		  <tbody>
		  <%
		  List<SimuladorProjetoDto> listaProjTollgatePrazo = (List<SimuladorProjetoDto>) request.getAttribute("listaProjTollgatePrazo"); 
		  List<SimuladorProjetoDto> listaProjTollgate = (List<SimuladorProjetoDto>) request.getAttribute("listaProjTollgate"); 

          for (SimuladorProjetoDto base : listaProjTollgatePrazo){
        	  Calendar cal = GregorianCalendar.getInstance();
          	cal.setTime(base.getDt_tollgate());
          	Integer m = cal.get(Calendar.MONTH);  
          	m = m + 1;
          	Integer y = cal.get(Calendar.YEAR);  
          String[] temp = {base.getRef_cod_projeto().toString(), m.toString(), y.toString(), base.getDt_tollgate().toString()};
 		 
		  datateste.add(temp);
		
          }
          
		  for (SimuladorProjetoDto base : listaProjTollgate){
		   %> 
		    <tr>
		      <td style="text-align: center;">
		      <%listaProjeto = (List<ProjetoDto>) proj.find("cod_projeto="+base.getRef_cod_projeto()+"","1",100);%>
			  <%if (!listaProjeto.isEmpty()){%><%=listaProjeto.iterator().next().getNm_projeto()%><%}%>
		      </td>
		      <%
		      for (String ano : anos){ 
		      
		      for(Integer dt: meses){

		      	String n = "";
		      	String f = "";
		      	for(String[] atual: datateste){

		      		
		      		if(base.getRef_cod_projeto().toString().equals(atual[0]) && dt.toString().equals(atual[1]) && ano.equals(atual[2])){
	      				
		      				n=atual[1];
		      				
		      			}
		      		}
		      	
		      	
		      	out.println("<td align='center'>" + n + "</td>");
		      	 
		       }
		      }
		     } %>
              </tr>
          </tbody>  
          </table>
      <br class="clear" />
      </div>

Desde já agradeço

Marcos