You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SIPRP/trunk/AnaliseAcidentesTrabalho/src/java/analiseacidentestrabalho/Login.java

660 lines
23 KiB

/*
* Page1.java
*
* Created on September 18, 2007, 3:14 PM
* Copyright lluis
*/
package analiseacidentestrabalho;
import beans.Utilizador;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.rave.web.ui.component.Body;
import com.sun.rave.web.ui.component.Button;
import com.sun.rave.web.ui.component.Form;
import com.sun.rave.web.ui.component.Head;
import com.sun.rave.web.ui.component.Html;
import com.sun.rave.web.ui.component.Hyperlink;
import com.sun.rave.web.ui.component.Link;
import com.sun.rave.web.ui.component.Page;
import com.sun.rave.web.ui.component.PasswordField;
import com.sun.rave.web.ui.component.StaticText;
import com.sun.rave.web.ui.component.TextField;
import com.sun.rave.web.ui.model.Option;
import db.AnalisesDataProvider;
import db.UtilizadoresDataProvider;
import global.Global;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.faces.FacesException;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.context.FacesContext;
import utils.JSFUtils;
/**
* <p>Page bean that corresponds to a similarly named JSP page. This
* class contains component definitions (and initialization code) for
* all components that you have defined on this page, as well as
* lifecycle methods and event handlers where you may add behavior
* to respond to incoming events.</p>
*/
public class Login extends AbstractPageBean {
// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
private int __placeholder;
/**
* <p>Automatically managed component initialization. <strong>WARNING:</strong>
* This method is automatically generated, so any user-specified code inserted
* here is subject to being replaced.</p>
*/
private void _init() throws Exception {
}
private Page page1 = new Page();
public Page getPage1() {
return page1;
}
public void setPage1(Page p) {
this.page1 = p;
}
private Html html1 = new Html();
public Html getHtml1() {
return html1;
}
public void setHtml1(Html h) {
this.html1 = h;
}
private Head head1 = new Head();
public Head getHead1() {
return head1;
}
public void setHead1(Head h) {
this.head1 = h;
}
private Link link1 = new Link();
public Link getLink1() {
return link1;
}
public void setLink1(Link l) {
this.link1 = l;
}
private Body body1 = new Body();
public Body getBody1() {
return body1;
}
public void setBody1(Body b) {
this.body1 = b;
}
private Form form1 = new Form();
public Form getForm1() {
return form1;
}
public void setForm1(Form f) {
this.form1 = f;
}
private HtmlPanelGrid gridPanel6 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel6() {
return gridPanel6;
}
public void setGridPanel6(HtmlPanelGrid hpg) {
this.gridPanel6 = hpg;
}
private HtmlPanelGrid gridPanel1 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel1() {
return gridPanel1;
}
public void setGridPanel1(HtmlPanelGrid hpg) {
this.gridPanel1 = hpg;
}
private HtmlPanelGrid gridPanel2 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel2() {
return gridPanel2;
}
public void setGridPanel2(HtmlPanelGrid hpg) {
this.gridPanel2 = hpg;
}
private HtmlPanelGrid gridPanel3 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel3() {
return gridPanel3;
}
public void setGridPanel3(HtmlPanelGrid hpg) {
this.gridPanel3 = hpg;
}
private HtmlPanelGrid gridPanel4 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel4() {
return gridPanel4;
}
public void setGridPanel4(HtmlPanelGrid hpg) {
this.gridPanel4 = hpg;
}
private StaticText staticText1 = new StaticText();
public StaticText getStaticText1() {
return staticText1;
}
public void setStaticText1(StaticText st) {
this.staticText1 = st;
}
private TextField txtUtilizador = new TextField();
public TextField getTxtUtilizador() {
return txtUtilizador;
}
public void setTxtUtilizador(TextField tf) {
this.txtUtilizador = tf;
}
private StaticText staticText2 = new StaticText();
public StaticText getStaticText2() {
return staticText2;
}
public void setStaticText2(StaticText st) {
this.staticText2 = st;
}
private PasswordField txtPassword = new PasswordField();
public PasswordField getTxtPassword() {
return txtPassword;
}
public void setTxtPassword(PasswordField pf) {
this.txtPassword = pf;
}
private HtmlPanelGrid gridPanel5 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel5() {
return gridPanel5;
}
public void setGridPanel5(HtmlPanelGrid hpg) {
this.gridPanel5 = hpg;
}
private Hyperlink lnkPassRecovery = new Hyperlink();
public Hyperlink getLnkPassRecovery() {
return lnkPassRecovery;
}
public void setLnkPassRecovery(Hyperlink h) {
this.lnkPassRecovery = h;
}
private Button butLogin = new Button();
public Button getButLogin() {
return butLogin;
}
public void setButLogin(Button b) {
this.butLogin = b;
}
private StaticText txtMsg = new StaticText();
public StaticText getTxtMsg() {
return txtMsg;
}
public void setTxtMsg(StaticText st) {
this.txtMsg = st;
}
// </editor-fold>
/**
* <p>Construct a new Page bean instance.</p>
*/
public Login() {
connect();
}
/**
* <p>Callback method that is called whenever a page is navigated to,
* either directly via a URL, or indirectly via page navigation.
* Customize this method to acquire resources that will be needed
* for event handlers and lifecycle methods, whether or not this
* page is performing post back processing.</p>
*
* <p>Note that, if the current request is a postback, the property
* values of the components do <strong>not</strong> represent any
* values submitted with this request. Instead, they represent the
* property values that were saved for this view when it was rendered.</p>
*/
public void init() {
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
// Initialize automatically managed components
// *Note* - this logic should NOT be modified
try {
_init();
} catch (Exception e) {
log("Page1 Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
}
// </editor-fold>
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
}
/**
* <p>Callback method that is called after the component tree has been
* restored, but before any event processing takes place. This method
* will <strong>only</strong> be called on a postback request that
* is processing a form submit. Customize this method to allocate
* resources that will be required in your event handlers.</p>
*/
public void preprocess() {
}
/**
* <p>Callback method that is called just before rendering takes place.
* This method will <strong>only</strong> be called for the page that
* will actually be rendered (and not, for example, on a page that
* handled a postback and then navigated to a different page). Customize
* this method to allocate resources that will be required for rendering
* this page.</p>
*/
public void prerender() {
txtMsg.setText(getSessionBean1().getMsg());
getSessionBean1().setMsg("");
}
/**
* <p>Callback method that is called after rendering is completed for
* this request, if <code>init()</code> was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the <code>init()</code>,
* <code>preprocess()</code>, or <code>prerender()</code> methods (or
* acquired during execution of an event handler).</p>
*/
public void destroy() {
}
/**
* <p>Return a reference to the scoped data bean.</p>
*/
protected SessionBean1 getSessionBean1() {
return (SessionBean1)getBean("SessionBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*/
protected RequestBean1 getRequestBean1() {
return (RequestBean1)getBean("RequestBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*/
protected ApplicationBean1 getApplicationBean1() {
return (ApplicationBean1)getBean("ApplicationBean1");
}
public String butLogin_action() {
// TODO: Process the button click action. Return value is a navigation
// case name where null will return to the same page.
String sRet = null;
UtilizadoresDataProvider udp = new UtilizadoresDataProvider();
if(txtUtilizador.getText() != null)
{
String utilizador = (String) txtUtilizador.getText();
if(utilizador.trim().length() > 0)
{
if(txtPassword.getText() != null)
{
String password = (String) txtPassword.getText();
if( password.trim().length() > 0 )
{
try
{
Utilizador u = udp.getUtilizador( utilizador );
if( u != null && "y".equals( u.getActivo() ) )
{
if ( ! password.equals( u.getPassword() ) )
{
getSessionBean1().setMsg( "Palavra-chave inv&aacute;lida !" );
}
else
{
//if(u.getOwner_id().intValue() == 0 )
//Login Ok !
// if(u.getPrimeiro_login().matches("y") || mustChangePassword(u))
if(u.getPrimeiro_login().matches("y") )
{
getSessionBean1().setMudarPassword(true);
getSessionBean1().setCurrentUser( u );
getSessionBean1().setNavFrom("Login");
getSessionBean1().setModoEdicaoUtilizador("edit");
getSessionBean1().setLoggedIn(true);
initializeClock();
initializeDropDownOptions();
return "user";
}
try
{
Integer permissao = udp.getPermissionCode(u.getId());
if(permissao.intValue() == 1) //seguranca
{
if(u.getResponsavel_loja().matches("y"))
{
sRet = "acesso";
}
else
{
sRet = "form_seguranca";
}
}
else if(permissao.intValue() == 2) // rh
{
if(u.getResponsavel_loja().matches("y"))
{
sRet = "acesso";
}
else
{
sRet = "form_rh";
}
//sRet = "form_rh";
}
else if(permissao.intValue() == 3) // hs
{
//sRet = "form_hs";
sRet = "acesso";
}
else if(permissao.intValue() == 5) // medico
{
sRet = "form_medico";
}
else if(permissao.intValue() == 6) // gestor
{
//sRet = "form_gestor";
sRet = "acesso";
}
else if(permissao.intValue() == 7) // director geral rh
{
//sRet = "form_rh";
//sRet = "form_dir_ger_rh";
sRet = "acesso";
}
else if(permissao.intValue() == 8) // director siprp
{
//sRet = "form_dir_siprp";
sRet = "acesso";
}
else if(permissao.intValue() == 9) // director loja
{
sRet = "acesso";
}
else if(permissao.intValue() == 10) // director nacional de seguranca
{
sRet = "acesso";
}
u.setCodigo_permissao(permissao);
getSessionBean1().setCurrentUser( u );
getSessionBean1().setLoggedIn(true);
initializeClock();
initializeDropDownOptions();
// só para testes. retirar depois :
///getSessionBean1().setModoEdicaoUtilizador("new");
///sRet = "create_user";
}
catch(Exception e1)
{
e1.printStackTrace();
getSessionBean1().setMsg("N&atilde;o tem permiss&atilde;o para entrar na aplica&ccedil;&atilde;o !");
}
}
}
else
{
getSessionBean1().setMsg("Utilizador inv&aacute;lido ! ");
}
}
catch(Exception ex)
{
ex.printStackTrace();
getSessionBean1().setMsg("Utilizador inv&aacute;lido ! ");
}
}
else
{
getSessionBean1().setMsg("Falta palavra-chave !");
}
}
else
{
getSessionBean1().setMsg("Falta palavra-chave !");
}
}
else
{
getSessionBean1().setMsg("Falta utilizador !");
}
}
else
{
getSessionBean1().setMsg("Falta utilizador !");
}
return sRet;
}
public String lnkPassRecovery_action() {
// TODO: Replace with your code
return "recuperar_password";
}
private void connect()
{
db.Db db = new db.Db();
try
{
Connection connection = db.connect();
}
catch(Exception ex)
{
getSessionBean1().setMsg("Erro na liga&ccedil;&atilde;o &agrave; Base de Dados");
//***** terminate session
try {
getExternalContext().redirect("faces/Erro.jsp");
} catch(Exception e) {
// . . . handle exception . . .
e.printStackTrace();
}
ex.printStackTrace();
}
}
private void initializeClock()
{
com.sun.rave.web.ui.model.Option[] horasOptions = new com.sun.rave.web.ui.model.Option[25];
horasOptions[0] = new Option(new Integer(-1), "-");
int j = 0;
String str_j = "";
for(int i=1; i < 25; i++)
{
if(j < 10)
{
str_j = "0" + new Integer(j).toString();
}
else
{
str_j = new Integer(j).toString();
}
horasOptions[i] = new Option(new Integer(j), str_j);
j++;
}
getSessionBean1().setHorasOptions(horasOptions);
com.sun.rave.web.ui.model.Option[] minutosOptions = new com.sun.rave.web.ui.model.Option[13];
minutosOptions[0] = new Option(new Integer(-1), "-");
j = 0;
for(int i=1; i < 13; i++)
{
if(j < 10)
{
str_j = "0" + new Integer(j).toString();
}
else
{
str_j = new Integer(j).toString();
}
minutosOptions[i] = new Option(new Integer(j), str_j);
j += 5;
}
getSessionBean1().setMinutosOptions(minutosOptions);
}
private void initializeDropDownOptions()
{
UtilizadoresDataProvider udp = new UtilizadoresDataProvider();
// try
// {
// getSessionBean1().setTecnicosOptions(udp.getTecnicosSaudeList());
// //drpTipo.setSelected(new Integer(0));
// }
// catch(Exception ex)
// {
// ex.printStackTrace();
// }
// try
// {
// getSessionBean1().setMedicosOptions(udp.getMedicosList());
// //drpTipo.setSelected(new Integer(0));
// }
// catch(Exception ex)
// {
// ex.printStackTrace();
// }
AnalisesDataProvider adp = new AnalisesDataProvider();
try
{
getSessionBean1().setCausasOptions(adp.getCausasList());
}
catch(Exception ex)
{
ex.printStackTrace();
}
try
{
getSessionBean1().setDepartamentoOptions(adp.getDepartamentosList());
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private boolean mustChangePassword(Utilizador u)
{
java.util.Date now = new java.util.Date();
Calendar cal = new GregorianCalendar();
cal.setTime(now);
int ano = cal.get(Calendar.YEAR);
int mes = cal.get(Calendar.MONTH);
int dia = cal.get(Calendar.DAY_OF_MONTH);
Calendar today = new GregorianCalendar(ano, mes, dia);
Calendar firstJan = new GregorianCalendar(ano, Calendar.JANUARY, 1);
// Calendar firstJan = new GregorianCalendar(ano, Calendar.DECEMBER, 27);
Calendar firstJul = new GregorianCalendar(ano, Calendar.JULY, 1);
if(today.compareTo(firstJan) == 0 || today.compareTo(firstJul) == 0)
{
return true;
}
if(u.getData_password() == null)
{
return true;
}
else
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try
{
java.util.Date dt_password = sdf.parse(u.getData_password().toString());
Calendar cal_dt_password = new GregorianCalendar();
cal_dt_password.setTime(dt_password);
cal_dt_password.add(GregorianCalendar.MONTH, 6);
if(cal.compareTo(cal_dt_password) > 0)
{
return true;
}
else
{
return false;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
return false;
}
}