package Procesos;

import java.util.ArrayList;

import Archivos.GestorArchivo;
import Ventanas.Inicio;

public class HorarioCarrera extends Horario{
	
	private ArrayList <Integer> posicion;
	private ArrayList <Integer> cantidadAparicionPorModulo;

	public HorarioCarrera() {
		this.posicion = new ArrayList<Integer>();
		this.cantidadAparicionPorModulo = new ArrayList<Integer>();
        GestorArchivo gestor = new GestorArchivo();
        super.inputStream = gestor.getInputCarrera();
        super.xlsxToArray();
	}
	
	private void ocurrencias (String palabraBuscada) {
		for (int y=0; y<this.excell.length; y++) {
			for(int x=1; x<excell[0].length;x++) {
				if (this.tomarCelda(x,y).equalsIgnoreCase(palabraBuscada)) {
					this.posicion.add(x);
	   			}
			}
		}
	}
	
	private void separarAsignaturas (String palabraBuscada) { //true=codigo / false=profesor
		this.ocurrencias(palabraBuscada);
		int count=0;
		int countAux=0;
		for(int x=0; x<(this.posicion.size())-1;x++) {
			if(this.tomarCelda(this.posicion.get(x), 0).equalsIgnoreCase(this.tomarCelda(this.posicion.get(x)+1, 0))) {
				count++;
				countAux++;
			}else {
				this.cantidadAparicionPorModulo.add(count+1);
				count=0;
			}
		}	
		this.cantidadAparicionPorModulo.add(this.posicion.size()-countAux);
	
	}
	

	public ArrayList<Asignatura> listaAsignaturas (String palabraBuscada){
		ArrayList <Asignatura> listaAsignatura = new ArrayList <Asignatura>();
		this.separarAsignaturas(palabraBuscada);
		for(int i=0; i<this.cantidadAparicionPorModulo.size(); i++) {		//cantidad de asignaturas
			listaAsignatura.add(asignaturaEncontrada(i, this.cantidadAparicionPorModulo.get(i))); 
		}
		return listaAsignatura;
	}
	
	 private Asignatura asignaturaEncontrada (int posicionEntreLosModulos,int cantidadHorarioDeEstaAsignatura) {
		 Asignatura asignatura;
		 String profesor;
		 String codigo;
		 String nombre;
		 ArrayList <String> horario = new ArrayList<String>();
		 ArrayList <String> sala = new ArrayList<String>();
		 
		 int posicionInicial=posicionInicial(posicionEntreLosModulos);		//falta determinar eso con un void 
		 profesor=	this.tomarCelda(posicionInicial, 3);
		 codigo=	this.tomarCelda(posicionInicial, 0);
		 nombre=	this.tomarCelda(posicionInicial, 1);
		 
		 for(int i=0;i<cantidadHorarioDeEstaAsignatura;i++) {
			 horario.add(this.tomarCelda(posicionInicial+i, 2));
			 sala.add(this.tomarCelda(posicionInicial+i, 4));
		 }
		 
		 asignatura = new Asignatura(profesor, codigo, nombre, horario, sala);
		 return asignatura;
	 }
	
	
	private int posicionInicial(int posicionEntreLosModulos) {
		int contador=0;
		if(posicionEntreLosModulos>0) {
			for(int j=0; j<posicionEntreLosModulos; j++) {
				contador=contador+this.cantidadAparicionPorModulo.get(j)+1;
			}
		}else {
			return 1;
		}
		return contador;
	}


}

@@ -244,141 +244,63 @@
 lo;%0A
-%0A
 %09p
-ublic HorarioCarrera() %7B%0A%09%09this.posicion = new ArrayList%3CInteger%3E();%0A%09%09this.cantidadAparicionPorModulo = new ArrayList%3CInteger%3E();
+rivate boolean encuentro;%0A%0A%09public HorarioCarrera() %7B
 %0A   
@@ -431,16 +431,158 @@
 rray();%0A
+        this.encuentro=false;%0A        this.posicion = new ArrayList%3CInteger%3E();%0A%09%09this.cantidadAparicionPorModulo = new ArrayList%3CInteger%3E();%0A
 %09%7D%0A%09%0A%09pr
@@ -809,16 +809,42 @@
 add(x);%0A
+%09%09%09%09%09this.encuentro=true;%0A
 %09   %09%09%09%7D
@@ -1361,16 +1361,17 @@
 tAux);%0A%09
+%09
 %0A%09%7D%0A%09%0A%0A%09
@@ -1557,16 +1557,40 @@
 scada);%0A
+%09%09if(this.encuentro) %7B%0A%09
 %09%09for(in
@@ -1675,16 +1675,17 @@
 uras%0A%09%09%09
+%09
 listaAsi
@@ -1763,16 +1763,21 @@
 (i))); %0A
+%09%09%09%7D%0A
 %09%09%7D%0A%09%09re
@@ -1803,16 +1803,18 @@
 a;%0A%09%7D%0A%09%0A
+%09%0A
 %09 privat

Update HorarioCarrera.java