package com.miviclin.droidengine2d.graphics.shaders;

import java.util.HashMap;

/**
 * Almacena ShaderPrograms
 * 
 * @author Miguel Vicente Linares
 * 
 */
public class ShaderProgramsManager {
	
	private HashMap<String, ShaderProgram> shaderPrograms;
	
	/**
	 * Constructor
	 */
	public ShaderProgramsManager() {
		this.shaderPrograms = new HashMap<String, ShaderProgram>();
	}
	
	/**
	 * Devuelve un ShaderProgram indexado por ID
	 * 
	 * @param id ID con el que se registro el ShaderProgram
	 * @return ShaderProgram asociado al ID especificado o null si no habia ningun ShaderProgram registrado con ese ID
	 */
	public ShaderProgram getShaderProgram(String id) {
		return shaderPrograms.get(id);
	}
	
	/**
	 * Agrega un ShaderProgram al ShaderProgramsManager
	 * 
	 * @param id ID con el que se registrara el ShaderProgram. Se utilizara despues para acceder a el
	 * @param shaderProgram ShaderProgram a agregar
	 */
	public void addShaderProgram(String id, ShaderProgram shaderProgram) {
		shaderPrograms.put(id, shaderProgram);
	}
	
	/**
	 * Elimina un ShaderProgram del ShaderProgramManager
	 * 
	 * @param id ID del ShaderProgram a eliminar
	 * @return Devuelve el ShaderProgram eliminado o null si no habia ninguno registrado con el ID especificado
	 */
	public ShaderProgram removeShaderProgram(String id) {
		return shaderPrograms.remove(id);
	}
	
	/**
	 * Elimina todos los ShaderPrograms previamente registrados
	 */
	public void clear() {
		shaderPrograms.clear();
	}
	
}

@@ -199,38 +199,62 @@
 private HashMap%3C
-String
+Class%3C? extends ShaderProgram%3E
 , ShaderProgram%3E
@@ -368,22 +368,46 @@
 HashMap%3C
-String
+Class%3C? extends ShaderProgram%3E
 , Shader
@@ -471,18 +471,21 @@
 ado por 
-ID
+clase
 %0A%09 * %0A%09 
@@ -497,53 +497,79 @@
 ram 
-id ID con el que se registro el ShaderProgram
+spClass Clase a la que pertenece el ShaderProgram que se quiere obtener
 %0A%09 *
@@ -601,20 +601,25 @@
 ociado a
-l ID
+ la clase
  especif
@@ -622,17 +622,17 @@
 ecificad
-o
+a
  o null 
@@ -685,12 +685,15 @@
 n es
-e ID
+a clase
 %0A%09 *
@@ -729,33 +729,62 @@
 aderProgram(
-String id
+Class%3C? extends ShaderProgram%3E spClass
 ) %7B%0A%09%09return
@@ -803,18 +803,23 @@
 ams.get(
-id
+spClass
 );%0A%09%7D%0A%09%0A
@@ -896,95 +896,81 @@
 ram 
-id ID con el que se registrara el ShaderProgram. Se utilizara despues para acceder a el
+spClass Clase a la que pertenece el ShaderProgram que se quiere registrar
 %0A%09 *
@@ -1050,25 +1050,54 @@
 Program(
-String id
+Class%3C? extends ShaderProgram%3E spClass
 , Shader
@@ -1142,18 +1142,23 @@
 ams.put(
-id
+spClass
 , shader
@@ -1251,15 +1251,41 @@
 ram 
-id ID d
+spClass Clase a la que pertenece 
 el S
@@ -1297,17 +1297,29 @@
 Program 
-a
+que se quiere
  elimina
@@ -1480,17 +1480,46 @@
 ram(
-String id
+Class%3C? extends ShaderProgram%3E spClass
 ) %7B%0A
@@ -1549,18 +1549,23 @@
 .remove(
-id
+spClass
 );%0A%09%7D%0A%09%0A

Modify ShadeProgramManager to index by Class instead of String