Commit 7f27693c authored by Gonzalo Fabian Cameto Hernandez's avatar Gonzalo Fabian Cameto Hernandez
Browse files

Agrego properties para asignar grupo local por defecto.

parent d29f70aa
{
"endpoint":"https://tics.moodlecloud.com",
"group":"Piloto"
}
\ No newline at end of file
#Deben definirse moodle_endpoint y moodle_group para conectar con el API de moodle.
#De lo contrario solo se realizara login local.
moodle_endpoint=https://tics.moodlecloud.com
moodle_group=Piloto
#El grupo se define como liceoId#grado#grupo#anio
#Si no se sefine default_group entonces no se asigna grupo para docente o alumno.
default_group=0#2#Año#2017
......@@ -20,12 +20,6 @@
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- <dependency> -->
<!-- <groupId>org.hibernate</groupId> -->
<!-- <artifactId>hibernate-core</artifactId> -->
<!-- <version>5.1.0.Final</version> -->
<!-- <scope>provided</scope> -->
<!-- </dependency> -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
......@@ -52,13 +46,7 @@
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<build>
......
......@@ -57,7 +57,6 @@ public class CommandsBean {
private String nombrePrompt = "";
public CommandsBean() {
// System.out.println("Creo " + this.hashCode());
builder = null;
}
......@@ -155,7 +154,7 @@ public class CommandsBean {
}
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
......@@ -279,8 +278,8 @@ public class CommandsBean {
ArrayList<String> animacion = new ArrayList<>();
while (s.hasNextLine()) {
String result = s.nextLine();
// System.out.println(result);
// System.out.println("&&&/////");
//System.out.println(result);
//System.out.println("&&&/////");
if (nombrePrompt != "" && result.contains(nombrePrompt + ">")) {
if (nombrePrompt.length() > 10) {
nombrePrompt = nombrePrompt.substring(0, 7) + "...";
......@@ -290,15 +289,6 @@ public class CommandsBean {
callback.getBasicRemote().sendText(respuestaJson.toString());
nombrePrompt = "";
}
// File salidaHtml = new File("salida.html");
// if (salidaHtml.exists()) {
// Scanner salidaScaner = new Scanner(salidaHtml);
// String content =
// salidaScaner.useDelimiter("\\Z").next();
// result = content;
// salidaScaner.close();
// salidaHtml.delete();
// }
JsonObject respuestaJson = null;
if (result.contains("CANVAS:")) {
int index = result.indexOf("CANVAS:");
......@@ -344,6 +334,7 @@ public class CommandsBean {
} catch (Exception ex) {
System.err.println(ex.getMessage());
// Thread.sleep(500);
//Se reeintenta por bug de WebSphere. No sucede con wildfly.
reintentos++;
}
}
......
......@@ -12,18 +12,18 @@ import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.servlet.ServletContext;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.GenericType;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import edu.proygrado.dto.MoodleCourseDTO;
import edu.proygrado.dto.MoodleCoursesInfoDTO;
import edu.proygrado.dto.MoodleRoleDTO;
......@@ -40,6 +40,7 @@ import edu.proygrado.modelo.EstadoArchivo;
import edu.proygrado.modelo.Grupo;
import edu.proygrado.modelo.GrupoPK;
import edu.proygrado.modelo.Liceo;
import edu.proygrado.modelo.LiceoPK;
import edu.proygrado.modelo.Usuario;
/**
......@@ -48,27 +49,12 @@ import edu.proygrado.modelo.Usuario;
*/
@Stateless
public class LoginEJB {
public static String moodleApiEndpoint = null;
public static String moodleGroup = null;
@Inject
private ServletContext context;
public LoginEJB() {
super();
JSONParser parser = new JSONParser();
try {
String currentPath = System.getProperty("user.dir");
String configFilePath = currentPath.substring(0,currentPath.length()-4);
configFilePath = configFilePath + "/standalone/deployments/matefun.war/WEB-INF/config.json";
Object obj = parser.parse(new FileReader(configFilePath));
JSONObject jsonObject = (JSONObject) obj;
LoginEJB.moodleApiEndpoint = (String) jsonObject.get("endpoint");
LoginEJB.moodleGroup = (String) jsonObject.get("group");
} catch (Exception e) {
// Para hacer deploy en BLUEMIX se utiliza esta configuración.
LoginEJB.moodleApiEndpoint = "https://tics.moodlecloud.com";
LoginEJB.moodleGroup = "Piloto";
e.printStackTrace();
System.out.print("No se ha podido cargar el archivo: /standalone/deployments/matefun.war/WEB-INF/config.json");
}
}
@PersistenceContext(unitName = "matefunDS")
private EntityManager em;
......@@ -96,6 +82,10 @@ public class LoginEJB {
return new UsuarioDTO(tokenAuth, usuario);
}
//Si no se encuentra configuracion para Moodle se notifica que las credenciales son incorrectas.
if(getMoodleAPIEndpoint() == null || getMoodleDefaultGroup() == null){
throw new MatefunException("Usuario o contraseña incorrecto");
}
String token = null;
token = getTokenMoodle(cedula, password);
System.out.println("Obtengo token desde moodle");
......@@ -119,7 +109,7 @@ public class LoginEJB {
Long courseId = null;
for (MoodleCourseDTO course : coursesInfo.getEnrolledcourses()) {
System.out.println(course.getShortname());
String groupName = LoginEJB.moodleGroup.toLowerCase();
String groupName = getMoodleDefaultGroup().toLowerCase();
if (course.getShortname().toLowerCase().equals(groupName)) {
courseId = course.getId();
System.out.println(courseId);
......@@ -128,7 +118,7 @@ public class LoginEJB {
if (courseId != null) {
coursesInfo = getCursesInfo(token, userInfo.getUserid(), courseId);
} else {
throw new MatefunForbiddenException("Usuario no asignado al curso \"" +LoginEJB.moodleGroup +"\" en Moodle");
throw new MatefunForbiddenException("Usuario no asignado al curso \"" +getMoodleDefaultGroup() +"\" en Moodle");
}
String rol = null;
......@@ -143,18 +133,16 @@ public class LoginEJB {
}
if (rol == null) {
throw new MatefunForbiddenException("Rol incorrecto en curso \"" +LoginEJB.moodleGroup +"\"");
throw new MatefunForbiddenException("Rol incorrecto en curso \"" +getMoodleDefaultGroup()+"\"");
}
Usuario nuevoDesdeMoodle;
Grupo grupo = null;
try {
grupo = (Grupo) em
.createQuery(
"select g from Grupo g where g.grupoPK.anio = 2017 and g.grupoPK.grado = 2 and g.grupoPK.grupo = 'Año'")
.getSingleResult();
GrupoPK grupoPK = getDefaultGroup();
grupo = em.find(Grupo.class, grupoPK);
} catch (Exception ex) {
System.out.println("No se encuentra grupo 2°Año, no se asigna");
System.out.println("No se encuentra grupo por defecto, no se asigna");
}
if (rol.equals("student")) {
nuevoDesdeMoodle = new Alumno(cedula, userInfo.getFirstname(), userInfo.getLastname(),
......@@ -196,13 +184,50 @@ public class LoginEJB {
return new UsuarioDTO(tokenAuth, nuevoDesdeMoodle);
}
}
private String getMoodleAPIEndpoint(){
try{
String pathMatefunProperties = context.getRealPath("/WEB-INF/matefun.properties");
Properties props = new Properties();
props.load(new FileReader(pathMatefunProperties));
return props.getProperty("moodle_endpoint");
}catch(Exception e){
e.printStackTrace();
return null;
}
}
private String getMoodleDefaultGroup(){
try{
String pathMatefunProperties = context.getRealPath("/WEB-INF/matefun.properties");
Properties props = new Properties();
props.load(new FileReader(pathMatefunProperties));
return props.getProperty("moodle_group");
}catch(Exception e){
e.printStackTrace();
return null;
}
}
private GrupoPK getDefaultGroup(){
try{
String pathMatefunProperties = context.getRealPath("/WEB-INF/matefun.properties");
Properties props = new Properties();
props.load(new FileReader(pathMatefunProperties));
String[] grupo = props.getProperty("default_group").split("#");
LiceoPK lpk = new LiceoPK(Long.valueOf(grupo[0]));
return new GrupoPK(Integer.valueOf(grupo[3]), Integer.valueOf(grupo[1]), grupo[2], lpk);
}catch(Exception e){
return null;
}
}
private String getTokenMoodle(String username, String password) throws MatefunException {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
javax.ws.rs.client.Client c = cb.build();
String url = LoginEJB.moodleApiEndpoint + "/login/token.php";
String url = getMoodleAPIEndpoint() + "/login/token.php";
MoodleTokensDTO tokens = null;
try {
// https://tics.moodlecloud.com/login/token.php
......@@ -228,7 +253,7 @@ public class LoginEJB {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
javax.ws.rs.client.Client c = cb.build();
String url = LoginEJB.moodleApiEndpoint + "/webservice/rest/server.php";
String url = getMoodleAPIEndpoint()+ "/webservice/rest/server.php";
MoodleUserInfoDTO userInfo = null;
try {
......@@ -255,7 +280,7 @@ public class LoginEJB {
private MoodleCoursesInfoDTO getCursesInfo(String token, Long userId, Long courseId) throws MatefunException {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
javax.ws.rs.client.Client c = cb.build();
String url = LoginEJB.moodleApiEndpoint+ "/webservice/rest/server.php";
String url = getMoodleAPIEndpoint()+ "/webservice/rest/server.php";
List<MoodleCoursesInfoDTO> coursesInfo = null;
try {
......@@ -361,25 +386,6 @@ public class LoginEJB {
invitado.addArchivo(mate);
em.persist(mate);
// DOCENTE DE PRUEBA
// Docente prueba = new Docente ("prueba", "Nombre",
// "Apellido",generateHash("1234"));
// em.persist(prueba);
// Configuracion configPrueba = new Configuracion();
// configPrueba.setArgumentoF(true);
// configPrueba.setArgumentoI(true);
// configPrueba.setFontSizeEditor(12);
// configPrueba.setThemeEditor("ambiance");
// em.persist(configPrueba);
// prueba.setConfiguracion(configPrueba);
//
// Archivo root_prueba = new Archivo("root", new Date(), "Carpeta raiz",
// EstadoArchivo.Edicion, true, true, null, prueba);
// prueba.addArchivo(root_prueba);
// em.persist(root_prueba);
//
// prueba.addGrupoAsignado(segundoAnio);
segundoAnio.addAlumno(invitado);
return "ok";
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment