quinta-feira, 30 de dezembro de 2010

É, terminou!

>por Matheus

Heey! Quanto tempo que não posto aqui!
Como vocês devem saber o projeto acabou (finalmente) rs. Só quis vir aqui agradecer por terem nos aguentado tanto tempo. O trabalho duro de todos nos rendeu ótimos resultados: concluímos as atividades e ganhamos um maravilhoso 10 no boletim. Obrigado, de verdade!

Aprovando a ocasião, Feliz Ano Novo!

Até algum dia!

sexta-feira, 12 de novembro de 2010

Criptografia da Senha

>por Matheus

Hey! Tudo certo?
Como disse no último post, estávamos em dúvida sobre criptografar ou não a senha do usuário. Por fim optamos pelo sim, contudo não utilizamos funções próprias para isso, pois a Aplicação Desktop não as apresentaria. Assim, criamos um método simples de criptografia, que troca, segundo uma ordem específica, os caracteres da senha, tornando assim, impossível a identificação das mesmas pelo banco de dados. Essa função foi adaptada para funcionar tanto na Aplicação em PHP quanto na desenvolvida com Java.

Bem, por hoje é só! Até mais!

sexta-feira, 5 de novembro de 2010

Ajustes na Aplicação Web

>por Matheus

Hey! Tudo certo?
Encontramos alguns ajustes que precisavam ser feitos na Aplicação Web, como por exemplo um número mínimo de caracteres para a senha. Estamos pensando também em criptografar a senha dos usuários, porém, devido ao acesso que a Aplicação Desktop realiza para o login, uma criptografia (como md5, por exemplo) seria inviável. Ainda não encontramos uma solução para esta questão. Assim que decidirmos algo deixo vocês informados!

Até a próxima!

Roteiro da apresentação final

>Por Debora

Olá,
Hoje é o grande dia da apresentação final! Mal conseguimos acreditar que nossa pequena ideia se transformaria em algo tão grande *-*
Vou postar para vocês nosso roteiro:

Roteiro da Apresentação Final

· Apresentação Power Point

Matheus

Slides 1 ao 10 – Apresentação Inicial dos Integrantes

Maisa

Slides 11 e 12 – Apres. do Site e do Blog

Renato

Slides 13 e 14 – Instituição Beneficiada

Mariana

Slides 15 e 16 – Situação Problema

Juliana

Slides 17 ao 19 – Proposta do Projeto

Debora

Slides 20 e 21 – Telas Iniciais dos Sistemas

Paula

Slides 21 e 22 – Tecnologias Utilizadas

· Apresentação do Sistema Web

MAISA :

Cadastro Inicial / Módulo Usuário Comum / Esqueceu a Senha

· Cadastro Passo a Passo

· Download do Projeto

· Alteração de Perfil e Alteração de Foto

· Esqueceu a Senha – Abrir o Email para mostrar que o email chegou

PAULA:

Módulo de Usuário Administrador de Grupo

· Alteração de Perfil, Foto do Usuário, Dados do Grupo e Foto do Grupo

· Mostrar que pode excluir o Grupo e que os usuários vão pro Grupo Padrão

· Consulta dos Usuários de seu Grupo

- Mostrar o Perfil de cada Usuário

- Expulsão de Usuário

- Envio de Notificação para o usuário

· Relatório com Usuários de seu Grupo

· Consulta das Notificações enviadas para os participantes do Grupo ( Email ou Expulsão)

MATHEUS:

Módulo de Administrador Geral

· Cadastro de Usuários

· Alteração dos Dados Próprios e de seu Grupo

· Consulta de Usuários por Nome/ Grupos Cadastrados / Estado e Cidade apenas aquelas que existem usuários cadastrados

- No nome se não digitar nada seleciona todos os usuários

- Mostrar o Perfil dos Usuários na Consulta

- Mostrar que pode excluir um usuário do sistema [Exclusão Lógica] e dizer que tem que existir um Motivo para a exclusão

- Mostrar o envio de notificação para o usuário

- Mostrar que Gera Relatório de qualquer Consulta

· Consulta de Grupos Cadastrados

- Mostrar o Perfil do Grupo

- Exclusão do Grupo ( Usuários passam para o Grupo Padrão)

- Notificação envia para o Adm do Grupo

- Mostrar que Gera Relatório

· Relatórios

- De Usuários (Todos os Usuários ou Usuários agrupados pelo grupo pertencente)

- De grupos (Todos os grupos cadastrados)

- Foi usada a classe FPDF para gerar relatórios

· Aba Exclusão e Notificação redirecionam para a Consulta

MAISA:

· Utilitários

o Mudança dos Parâmetros de Email – Estamos utilizando o servidor GMAIL através de SMTP

o Registro de Log – Mostra todas as ações realizadas pelos usuários – Filtro através de datas ou listagem completa

o Histórico das Notificações – Filtradas por Expulsão/Envio de Email/Exclusão

- Mostrar a Lupa que contém o conteúdo das notificações assim como destinatário e remetente

· Apresentação do Sistema Desktop

PAULA:

· Login

Usuário Cadastrado no Sistema Web – Link “ Não possui uma conta? “

Realiza o Login se estiver conectado com a internet

Botão OFFLINE – Caso o usuário não esteja conectado com a internet

· Menu

Mostrar o menu

MARIANA:

· Cadastro e Edição de Lógica

Botão Novo para adicionar um novo Comportamento

Botão Salvar e Salvar Como para não salvar em cima de um arquivo

SALVAR COMO SOMENTE SALVAR, NÃO CANCELAR!

Mostrar Quadro explicando Condição e Ação

Lixeira para Excluir Comportamento

Editar é como o Cadastro, primeiro escolhe o arquivo ggb que é carregado na tela, depois da edição é liberado o botão Salvar

JULIANA:

· Painel de Controle

Controla se a lógica será executada no Simulador 2D ou no Ambiente Real

Botão de Configuração – Onde escolhe em qual computador irá executar a lógica e passa os parâmetros de IP e a Porta do Robô

Mostrar TELA DE CONFIGURAÇÃO

Botão de Escolher Arquivo – Escolhe a lógica a ser executada

Play – Inicia a execução da Lógica

Pause – Pausa a execução da Lógica

· Simulador

Cria uma nova instância do Simulador aonde será executada a lógica

É utilizado através do Painel de Controle

RENATO:

· Tela Ajuda

Links que redirecionam para um página web com instruções de como utilizar o programa

Mostrar as páginas Web de Ajuda

DÉBORA:

· Tela Desenvolvimento

Apresenta o nome dos desenvolvedores, dos professores orientadores e das instituições envolvidas

· Tela Projeto

Texto descritivo sobre a proposta que o projeto apresenta e um link para o sistema web


Nos desejem sorte!!!

Debora

Apresentação PPT

>Por Paula

Estou postando o novo layout da apresentação final, que foi desenvolvido pelo Matheus.

Esse é o primero slide:



Os outros slides seguem esse padrão:



É isso! Até mais pessoal :D

Paula

sexta-feira, 29 de outubro de 2010

Acesso Remoto

>Por Mariana

Hey
O projeto possui um tela de configurações, que salva o número de IP de onde o simuldor ou o ambiente real está executando, podendo então enviar os comandos para o robô. Veja a seguir a função que atribui o valor do IP:

private void carregaIP(int opcao) {
if (opcao == 0)// escolheu o simulador
IP = Funcoes.IPSimulador;
else
// escolheu o ambiente real
IP = Funcoes.IPReal;
porto = Integer.parseInt(Funcoes.Porto);

}

Até mais,

Mudanças na execução da lógica

>Por Juliana

Olá,
Uma semana já se passou desde que apresentamos a prévia na aula de Aplicativos e na feira do SESI. Durante esse tempo fizemos várias alterações, inclusive na forma como o usuário deverá interagir com o programa para executar sua lógica. Essa execução se dará através de um Painel de Controle, que irá controlar Simulador e Robô Real. Mais tarde, provevelmente, algum integrante do grupo lhes apresentará tal tela.
Até ontem a noite ainda estavamos com alguns problemas na execução. Ao pausar a simulação, o Eclipse acusava java.net.SocketTimeoutException. O problema foi resolvido ao percebermos que a variável executando do Simulador apenas deveria ser alterada para false ao se fechar a janela de simulação.
Assim, temos:

PainelControle.java
if (Evento.getSource() == btPausar) {
Funcoes.executando = 0;
rbSimulador.setEnabled(true);
rbReal.setEnabled(true);
btExecutar.setEnabled(true);
btAbrir.setEnabled(true);
}

Simulador.java
public void windowClosing(WindowEvent arg0) {
Funcoes.executando = 0;
Funcoes.menu.simulador.arena.executando = false;

arg0.getWindow().setVisible(false);
Funcoes.menu.painelControle.btAbrir.setEnabled(true);
Funcoes.menu.painelControle.btExecutar.setEnabled(true);
caminho = null;
Prog1.llMinis.removeAll(Prog1.llMinis);
Prog1.pnArea.removeAll();
}

Até a semana que vem,
Juliana

Painel de Controle

>Por Paula

Olá!

Resolvemos criar uma tela de Painel de Controle, que será utilizada com o Simulador 2D, nessa tela estão presentes as funções de Configurar os ambientes, Escolher a lógica, executá-la e pausar a execução. Essas funções são acessadas através de ícones, como pode-se ver abaixo:

Paula


Posição dos Objetos na Arena - OK

>por Matheus

Olá!
Como apresentado no post da semana passada, durante a semana trabalhei para que o usuário conseguisse alterar a posição dos objetos (Robô e Bola) fazendo uso do mouse, ao invés de utilizar posições fixas para o posicionamento. Para isso, utilizei implentações como MouseMotionListener e MouseListener. Segue abaixo o código em Java elaborado:

public boolean validaPosicaoMouse(MouseEvent e, int obj)
{
xMouse = (int)e.getPoint().getX();
yMouse = (int)e.getPoint().getY();
xMouse = (int)(xMouse / escalaCmPixel);
yMouse = (int)(yMouse / escalaCmPixel);
yMouse = tamYCm - yMouse;

//obj 1 = robo1 || 2 = robo2 || 0 = bola
if(obj == 1)
{
if (((xMouse <= robo1.x+2) && (xMouse >=robo1.x -2)) && ((yMouse <= robo1.y+2) && (yMouse >=robo1.y -2)))
{
return true;
}
}
if(obj == 2)
{
if (((xMouse <= robo2.x+2) && (xMouse >=robo2.x -2)) && ((yMouse <= robo2.y+2) && (yMouse >=robo2.y -2)))
{
return true;
}
}
if(obj == 0)
{
if (((xMouse <= bola.x+2) && (xMouse >=bola.x -2)) && ((yMouse <= bola.y+2) && (yMouse >=bola.y-2)))
{
return true;
}
}

return false;

}

@Override
public void mouseDragged(MouseEvent e)
{
xMouse = (int)e.getPoint().getX();
yMouse = (int)e.getPoint().getY();
xMouse = (int)(xMouse / escalaCmPixel);
yMouse = (int)(yMouse / escalaCmPixel);
yMouse = tamYCm - yMouse;

if((emCima == 1) || (emCima == 0))
{
atualizaPosicaoMouse(xMouse, yMouse);
}
}

public void atualizaPosicaoMouse(int x, int y)
{
//obj 1 = robo1 || 2 = robo2 || 0 = bola
if(emCima == 1)
{
robo1.x = x;
robo1.y = y;
repaint();
return;
}
if(emCima == 0)
{
bola.x = x;
bola.y = y;
repaint();
return;
}
}



@Override
public void mousePressed(MouseEvent e) {
if((validaPosicaoMouse(e, 1)) && (Funcoes.executando==0))
{
emCima = 1;
return;
}
if((validaPosicaoMouse(e, 0)) && (Funcoes.executando==0))
{
emCima = 0;
return;
}

}

@Override
public void mouseReleased(MouseEvent e) {
emCima = -1;
}


Até a próxima!

Matheus

Histórico de notificação - administrador do grupo

>Por Maisa

Hey,
Como realizado no administrador geral, foi adicionado a opção de visualização do histórico de notificação pelo administrador do grupo.

Assim, ele pode verificar as notificações que enviou e para quem enviou. Nesse caso, não há a opção de Filtro 'Exclusão' pois o administrador de um grupo pode apenas expulsar um usuário do grupo, e não excluí-lo.

Segue abaixo uma imagem da tela:


Como no administrador geral, ele também pode ver as informações básicas da notificação : para quem foi enviada e qual a mensagem.

Maisa