Skip to content

Commit

Permalink
registrando servicos do rastreador
Browse files Browse the repository at this point in the history
  • Loading branch information
AdsonEsteves committed Oct 27, 2020
1 parent b48f0ba commit a04585a
Show file tree
Hide file tree
Showing 4 changed files with 183 additions and 15 deletions.
23 changes: 22 additions & 1 deletion services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
</service>

<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<!-- SACIP Grouper Agent -->
<!-- SACIP Tracking Agent -->
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->

<service>
Expand All @@ -108,6 +108,27 @@
<scope>mas</scope>
<organization>SACIP</organization>
</service>
<service>
<name>storeSolvedExercise</name>
<description>Armazena os exercícios resolvidos do usuário</description>
<entity>TrackingAgent</entity>
<scope>mas</scope>
<organization>SACIP</organization>
</service>
<service>
<name>storeContentOnPath</name>
<description>Armazena os conteúdos na trilha usuário</description>
<entity>TrackingAgent</entity>
<scope>mas</scope>
<organization>SACIP</organization>
</service>
<service>
<name>storeStudentErrors</name>
<description>Armazena os erros do usuário</description>
<entity>TrackingAgent</entity>
<scope>mas</scope>
<organization>SACIP</organization>
</service>

<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<!-- SACIP DBConnection Component -->
Expand Down
21 changes: 18 additions & 3 deletions src/main/java/sacip/rest/RestTracking.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ public class RestTracking {
private static Logger LOG = LoggerFactory.getLogger(AgentServer.class);

@PostMapping("/dadosUso")
public String armazenaDadosUso(@RequestBody JsonNode dados){
// String informacoesInteressantes[] = {"Modulos mais utilizados", "Tags de Conteudo mais utilizadas", "Tópicos mais utilizados", "Frequencia de entrada no sistema", "Tempo gasto por tópico",
// "Tempo gasto por tag", "Tempo gasto por Modulo", "Exercicios que foi bem?"};
public String armazenaDadosUso(@RequestBody JsonNode dados){
try
{
ServiceWrapper wrapper = AgentServer.require("SACIP", "storeData");
Expand Down Expand Up @@ -70,5 +68,22 @@ public String armazenaNovoConteudoTrilha(@RequestBody JsonNode dados)
return e.getLocalizedMessage();
}
}

@PostMapping("/ErrosCometidos")
public String armazenaNovosErrosCometidos(@RequestBody JsonNode dados)
{
try
{
ServiceWrapper wrapper = AgentServer.require("SACIP", "storeStudentErrors");
wrapper.addParameter("dados", dados);
List out = wrapper.run();
return (String) out.get(0);
}
catch (Exception e)
{
LOG.error("Ocorreu erro ao enviar exercicio resolvido ao agente Tracking", e);
return e.getLocalizedMessage();
}
}
}

132 changes: 121 additions & 11 deletions src/main/java/sacip/sti/agents/TrackingAgent.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package sacip.sti.agents;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
Expand All @@ -19,18 +16,20 @@
import org.midas.as.agent.templates.LifeCycleException;
import org.midas.as.agent.templates.ServiceException;
import org.midas.as.manager.execution.ServiceWrapper;
import org.midas.as.manager.execution.ServiceWrapperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import sacip.sti.dataentities.Student;

public class TrackingAgent extends Agent implements MessageListener {

private static Logger LOG = LoggerFactory.getLogger(AgentServer.class);

@Override
public void provide(String service, Map in, List out) throws ServiceException {

if (service.equals("storeData")) {
if (service.equals("storeData"))
{
JsonNode dados = (JsonNode) in.get("dados");
if (dados.isObject()) {
ObjectNode jsonobject = (ObjectNode) dados;
Expand Down Expand Up @@ -99,24 +98,135 @@ public void provide(String service, Map in, List out) throws ServiceException {


}
else if(service.equals("storeSolvedExercise"))
{
JsonNode dados = (JsonNode) in.get("dados");
String nome = dados.get("nome").asText();

try {
ServiceWrapper wrapper = require("SACIP", "editStudentListAttr");
wrapper.addParameter("name", nome);
wrapper.addParameter("attrName", "exerciciosResolvidos");
wrapper.addParameter("newValue", dados.get("conteudo"));
out.add(wrapper.run().get(0));
} catch (Exception e) {
out.add(e.getLocalizedMessage());
LOG.error("ERRO NO TRACKING AGENT AO ENVIAR DADOS", e);
e.printStackTrace();
}
}
else if(service.equals("storeContentOnPath"))
{
JsonNode dados = (JsonNode) in.get("dados");
String nome = dados.get("nome").asText();

try {
ServiceWrapper wrapper = require("SACIP", "editStudentListAttr");
wrapper.addParameter("name", nome);
wrapper.addParameter("attrName", "trilha");
wrapper.addParameter("newValue", dados.get("conteudo"));
out.add(wrapper.run().get(0));
} catch (Exception e) {
out.add(e.getLocalizedMessage());
LOG.error("ERRO NO TRACKING AGENT AO ENVIAR DADOS", e);
e.printStackTrace();
}
}
else if(service.equals("storeStudentErrors"))
{
JsonNode dados = (JsonNode) in.get("dados");
String nome = dados.get("nome").asText();

try {
ServiceWrapper wrapper = require("SACIP", "editStudentListAttr");
wrapper.addParameter("name", nome);
wrapper.addParameter("attrName", "errosDoEstudante");
wrapper.addParameter("newValue", dados.get("conteudo"));
out.add(wrapper.run().get(0));
} catch (Exception e) {
out.add(e.getLocalizedMessage());
LOG.error("ERRO NO TRACKING AGENT AO ENVIAR DADOS", e);
e.printStackTrace();
}
}
}

@Override
protected void lifeCycle() throws LifeCycleException, InterruptedException {
// TODO Auto-generated method stub

Board.addMessageListener("SACIP", this);

// while(alive)
// {
// Thread.sleep(2000);
// }
while(alive)
{
try
{
ServiceWrapper wrapper = require("SACIP", "getAluno");
Student estudante = (Student) wrapper.run();
descobrirModulosMaisUtilizados(estudante);
descobrirTagsMaisUtilizadas(estudante);
descobrirTopicosMaisUtilizados(estudante);
verificarFrequenciaDoAluno(estudante);
descobrirTempoGastoPorTopico(estudante);
descobrirTempoGastoPorTag(estudante);
descobrirTempoGastoPorModulo(estudante);
descobrirTiposDeExercicioQueMelhorEPiorSaiu(estudante);

} catch (Exception e) {

LOG.error("Ocorreu um erro no ciclo de vida do Agente Rastreador", e);
}
Thread.sleep(300000);
}

}

@Override
public void boardChanged(Message msg) {
// TODO Auto-generated method stub

}

private void descobrirTempoGastoPorTag(Student estudante) {
//Analisar os conteudos usados, horarios de entrada e saida
}

private void descobrirTempoGastoPorModulo(Student estudante) {
//Analisar os conteudos usados, horarios de entrada e saida
}

private void descobrirTempoGastoPorTopico(Student estudante) {

//Analisar os conteudos usados, horarios de entrada e saida

}

private void descobrirTiposDeExercicioQueMelhorEPiorSaiu(Student estudante) {

//Analisar trilhas, exercicios resolvidos e erros

}

private void verificarFrequenciaDoAluno(Student estudante) {

//buscar as datas de entrada e saida do sistema do aluno

}

private void descobrirTopicosMaisUtilizados(Student estudante) {

//buscar na trilha os Topicos de cada conteudo
}

private void descobrirTagsMaisUtilizadas(Student estudante) {

//buscar na trilha as tags de cada conteudo

}

private void descobrirModulosMaisUtilizados(Student estudante) {

//buscar cada um dos cliques do alunos e verificar o tempo total

}

}
22 changes: 22 additions & 0 deletions src/main/java/sacip/sti/components/DBConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;

import org.midas.as.AgentServer;
Expand Down Expand Up @@ -48,6 +49,10 @@ public void provide(String service, Map in, List out) throws ServiceException {
case "editStudent":
out.add(editUser((String)in.get("name"), (String)in.get("attrName"), (String)in.get("newValue")));
break;

case "editStudentListAttr":
out.add(editUserListAttr((String)in.get("name"), (String)in.get("attrName"), (JsonNode)in.get("newValue")));
break;

case "deleteStudent":
out.add(deleteUser((String) in.get("name")));
Expand Down Expand Up @@ -279,6 +284,23 @@ private String editUser(String name, String atributeName, String newValue)
}
}

private String editUserListAttr(String name, String atributeName, JsonNode newValue)
{
try
{
var result = cypher.writequery("MATCH (n:USER { name: $name })"+
"\nSET n.$atribute = coalesce(n.$atribute, []) + $newvalue"+
"\nRETURN n.name, n.$atribute"
, Map.of("name", name, "atribute", atributeName, "newValue", newValue.toString()));
return result.toString();
}
catch (Exception e)
{
LOG.error("FALHOU edicao de lista de estudante ", e);
return "FALHOU edicao de lista de estudante "+e.getLocalizedMessage();
}
}

private String deleteUser(String name)
{
try
Expand Down

0 comments on commit a04585a

Please sign in to comment.