public static void ejecutaObjetivo4 () throws SQLException, ClassNotFoundException, IOException{
        String query  =  EntidadDAO.QUERY_BASE + " where osmid is not  null and admin_level in (4,6,7,8) and estado_4 = 0 ";
        query = query + "and cod_prov in ('35', '38')";

		List<Entidad> entidades = null;
		try (Statement statement = Database.getConnection().createStatement();
			ResultSet resultSet = statement.executeQuery(query);){			
			entidades = EntidadDAO.getInstance().getListFromRs(resultSet);
		} 
        final List<Entity> municipios = new ArrayList<Entity>();
        for (Entidad ine: entidades) {
            final String ineCapital = ine.getCodine();
            final String ineMunicipio = ine.getCodineMun();
            final String ineRelacion = ineMunicipio.substring(0, 5);
            final List<Relation> relaciones = RelationDAO.getInstance().getRelationsByTag(KEY_INE_MUNICIPIO, ineRelacion);
            if (relaciones.size() == 1){
                final Relation municipio = relaciones.get(0);
                final Entity localidad = getLocalidad(ine.getCodine());
                if (localidad != null) {
                    if (!municipio.containsMemberWithRole(ROLE_ADMIN_CENTRE)){
                        final RelationMember capital = new RelationMember();
                        capital.setEntity(localidad);
                        capital.setRole(ROLE_ADMIN_CENTRE);
                        municipio.addMember(capital);
                        municipios.add(municipio);
                        for (RelationMember miembro : municipio.getMembers()){
                            if (StringUtils.isBlank(miembro.getRole())){
                                miembro.setRole(ROLE_OUTER);                                
                            }
                        }
                        //marcarProcesado(ine);
                    }
                    else {
                        // Si ya tiene admin_centre no lo tocamos y lo dejamos como procesado
                        //marcarProcesado(ine);
                    }
                }
            }
            else {
            	Log.log( " se encontraron " + relaciones.size() + " limites para el municipio " + ineRelacion + "/" + ineCapital);
            }            
        }
        if (!municipios.isEmpty()){
            final String nombreArchivo = Config.getInstance().getOsmOutputFile("objetivo4.subir");
            
            try (final OutputStream salida = new GZIPOutputStream(new FileOutputStream(nombreArchivo));){ 
            	XMLExporter.export(municipios, salida, false);
            }
            Log.log("Generado el archivo objetivo4 (" + municipios.size() + "):"+nombreArchivo);
        }
        else {
        	Log.log("No se ha generado el archivo de objetivo4.");
        }
        
    }