Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Criei uma agenda utilizando o schedule-primefaces, mas quando chega o horário de verão essa agenda fica toda bagunçada.
Em alguns outros tópicos, vi a respeito de configurar o horário no java para que se utilize o nosso GMT-3, mas não entendi muito bem como fazer.
Alguém poderia me ajudar com uma solução direcionada ao schedule?
Abaixo está o código da minha página, se precisar de algum outro código é só informar que eu posto.
Obrigado.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Agenda</title>
</h:head>
<h:body>
<h:form id="form">
<script language="javascript">
PrimeFaces.locales['pt'] = {
closeText: 'Fechar',
prevText: 'Anterior',
nextText: 'Próximo',
currentText: 'Começo',
monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', '---', 'Sáb'],
dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
weekHeader: 'Semana',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: '',
timeOnlyTitle: 'Só Horas',
timeText: 'Tempo',
hourText: 'Hora',
minuteText: 'Minuto',
secondText: 'Segundo',
currentText: 'Data Atual',
ampm: false,
month: 'Mês',
week: 'Semana',
day: 'Dia',
allDayText: 'Todo Dia'
};
</script>
<p:growl id="messages" showDetail="true" />
<h:panelGrid columns="3">
<p:commandButton value="Cadastrar Responsável" action="#{agendaController.cadastrarResponsavel()}" ajax="false"/>
<p:commandButton value="Cadastrar Regional" action="#{agendaController.cadastrarRegional()}" ajax="false"/>
<p:commandButton value="Cadastrar Resp / Reg" action="#{agendaController.juntarResponsavelRegional()}" ajax="false"/>
<p:commandButton value="Relatórios" action="#{agendaController.gerarRelatorios()}" ajax="false"/>
<p:commandButton value="Fechar" action="#{agendaController.redirect()}" ajax="false"/>
</h:panelGrid>
<p:schedule id="agenda" value="#{agendaController['eventModel']}" widgetVar="agenda" locale="pt">
<p:ajax event="dateSelect" listener="#{agendaController.onDateSelect}" update="detalhes" oncomplete="eventDialog.show()"/>
<p:ajax event="eventSelect" listener="#{agendaController.onEventSelect}" update="editPanel" oncomplete="editDialog.show()" />
<p:ajax event="eventMove" listener="#{agendaController.onEventMove}" update="messages" />
<p:ajax event="eventResize" listener="#{agendaController.onEventResize}" update="messages" />
</p:schedule>
<p:dialog id="editDialog" widgetVar="editDialog" header="Agendamento" showEffect="clip" hideEffect="clip">
<p:panelGrid id="editPanel" columns="2">
<h:outputText value="Responsável:"/>
<h:outputText id="responsavel_nome_out" value="#{agendaController.agenda.origem.regionalHasResponsavel.responsavel.nome}"/>
<h:outputText value="Regional:"/>
<h:outputText id="origem_out" value="#{agendaController.agenda.origem.regionalHasResponsavel.regional.nome}"/>
<h:outputText value="Qtde. caixa:"/>
<h:outputText id="qtde_caixa_out" value="#{agendaController.agenda.origem.qtdeCaixa}"/>
<h:outputText value="Qtde. equipamento:"/>
<h:outputText id="qtde_equip_out" value="#{agendaController.agenda.origem.qtdeEquipamento}"/>
</p:panelGrid>
<p:commandButton id="deleteButton" actionListener="#{agendaController.deleteEvent}" value="Deletar" update="messages" oncomplete="editDialog.hide();agenda.update();" onclick="editDialog.hide();"/>
</p:dialog>
<p:dialog id="eventDialog" widgetVar="eventDialog" header="Agendamento" showEffect="clip" hideEffect="clip">
<p:panelGrid id="detalhes" columns="2">
<p:outputLabel for="responsavel_nome" value="Responsável:"/>
<p:selectOneMenu id="responsavel_nome" value="#{agendaController.responsavel}"
converter="responsavelConverter">
<p:ajax event="change" listener="#{agendaController.updateRegionalPorResponsavel()}" update="origem, messages"/>
<f:selectItems value="#{agendaController.responsaveis}"/>
</p:selectOneMenu>
<p:outputLabel for="origem" value="Regional:"/>
<p:selectOneMenu id="origem" value="#{agendaController.hasResponsavel}"
converter="hasResponsavelConverter">
<f:selectItems value="#{agendaController.regionalByResponsavel}"/>
</p:selectOneMenu>
<p:outputLabel for="qtde_caixa" value="Qtde. caixa:"/>
<p:inputText id="qtde_caixa" value="#{agendaController.agenda.origem.qtdeCaixa}" required="true" requiredMessage="A quantidade de caixas é obrigatória." size="5"/>
<p:outputLabel for="qtde_equip" value="Qtde. equipamento:"/>
<p:inputText id="qtde_equip" value="#{agendaController.agenda.origem.qtdeEquipamento}" required="true" requiredMessage="A quantidade de equipamentos é obrigatória." size="5"/>
</p:panelGrid>
<h:panelGrid columns="3">
<p:commandButton type="reset" value="Resetar campos" />
<p:commandButton id="saveButton" value="Salvar" actionListener="#{agendaController.addEvent}" update="messages"
oncomplete="agenda.update();eventDialog.hide();" onclick="eventDialog.hide();"/>
</h:panelGrid>
</p:dialog>
<p:blockUI block="form" trigger="saveButton">
LOADING<br />
<p:graphicImage value="/images/ajax-loader.gif"/>
</p:blockUI>
<p:blockUI block="form" trigger="saveButton">
LOADING<br />
<p:graphicImage value="/images/ajax-loader.gif"/>
</p:blockUI>
<p:blockUI block="form" trigger="deleteButton">
LOADING<br />
<p:graphicImage value="/images/ajax-loader.gif"/>
</p:blockUI>
</h:form>
</h:body>
</html>package com.controller;
import com.dao.AgendaDAO;
import com.dao.RegionalHasResponsavelDAO;
import com.dao.ResponsavelDAO;
import com.dao.UsuarioDAO;
import com.model.Agenda;
import com.model.RegionalHasResponsavel;
import com.model.Responsavel;
import java.io.IOException;
import java.io.Serializable;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.ScheduleEntryMoveEvent;
import org.primefaces.event.ScheduleEntryResizeEvent;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;
/**
*
* @author ranishot
*/
@ManagedBean
@ViewScoped
public class AgendaController implements Serializable {
private ScheduleModel eventModel;
private DefaultScheduleEvent event;
private AgendaDAO agendaDAO;
private Agenda agenda;
private Date date;
private List<RegionalHasResponsavel> list;
private List<Responsavel> responsaveisList;
private Responsavel responsavel;
private ResponsavelDAO responsavelDAO;
private RegionalHasResponsavelDAO hasResponsavelDAO;
private RegionalHasResponsavel hasResponsavel;
public AgendaController() {
// Criando a sessão manualmente, porque por algum motivo, ainda desconhecido
// o JSF não consegue criar a sessão antes da resposta ser submetida
// da primeira vez, o que faz ele chamar o construtor duas vezes, se não
// for criado a sessão.
event = new DefaultScheduleEvent();
eventModel = new DefaultScheduleModel();
agenda = new Agenda();
date = new Date(System.currentTimeMillis());
responsavel = new Responsavel();
agendaDAO = new AgendaDAO();
List<Agenda> tmp = agendaDAO.getAllData();
agendaDAO.close();
for (int i = 0; i < tmp.size(); i++) {
Agenda a = tmp.get(i);
DefaultScheduleEvent eventTmp = new DefaultScheduleEvent(" " + a.getOrigem().getRegionalHasResponsavel().getResponsavel().getNome() + "\n\n" + a.getOrigem().getRegionalHasResponsavel().getRegional().getNome() +"\n\n"+ a.getOrigem().getQtdeEquipamento(), a.getData(), new Date(a.getData().getTime()), a);
eventModel.addEvent(eventTmp);
}
}
public void addEvent(ActionEvent e) {
if (event.getId() == null) {
UsuarioDAO usuarioDAO = new UsuarioDAO();
agenda.setUsuario(usuarioDAO.getData(1));
usuarioDAO.close();
agendaDAO = new AgendaDAO();
agenda.getOrigem().setRegionalHasResponsavel(hasResponsavel);
Timestamp tmpData = new Timestamp(date.getTime());
agenda.setData(tmpData);
event.setTitle(" " + hasResponsavel.getResponsavel().getNome() + "\n\n" + hasResponsavel.getRegional().getNome() + "\n\n" + agenda.getOrigem().getQtdeEquipamento());
event.setStartDate(tmpData);
event.setEndDate(new Date(date.getTime()));
event.setData(agenda);
boolean result = agendaDAO.insertData(agenda);
if (result) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Adicionado", "Um novo evento foi adicionado com sucesso"));
agenda.setId(agendaDAO.getLastInsertId());
eventModel.addEvent(event);
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Erro", "Houve um erro ao cadastrar o evento, tente novamente ou procure suporte."));
}
event = new DefaultScheduleEvent();
} else {
UsuarioDAO usuarioDAO = new UsuarioDAO();
agenda.setUsuario(usuarioDAO.getData(1));
usuarioDAO.close();
agendaDAO = new AgendaDAO();
agenda.getOrigem().setRegionalHasResponsavel(hasResponsavel);
agenda.setData(new Timestamp(date.getTime()));
event.setTitle(hasResponsavel.getResponsavel().getNome() + ", regional " + hasResponsavel.getRegional().getNome());
event.setData(date);
event.setStartDate(date);
event.setEndDate(new Date(date.getTime()));
event.setData(agenda);
boolean result = agendaDAO.updateData(agenda);
if (result) {
eventModel.updateEvent(event);
}
event = new DefaultScheduleEvent();
}
agendaDAO.close();
}
public ScheduleModel getEventModel() {
return eventModel;
}
public void setEventModel(ScheduleModel eventModel) {
this.eventModel = eventModel;
}
public DefaultScheduleEvent getEvent() {
return event;
}
public void setEvent(DefaultScheduleEvent event) {
this.event = event;
}
public Agenda getAgenda() {
return agenda;
}
public void setAgenda(Agenda agenda) {
this.agenda = agenda;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public List<RegionalHasResponsavel> getList() {
return list;
}
public void setList(List<RegionalHasResponsavel> list) {
this.list = list;
}
public RegionalHasResponsavel getHasResponsavel() {
return hasResponsavel;
}
public void setHasResponsavel(RegionalHasResponsavel hasResponsavel) {
this.hasResponsavel = hasResponsavel;
}
public List<Responsavel> getResponsaveisList() {
return responsaveisList;
}
public void setResponsaveisList(List<Responsavel> responsaveisList) {
this.responsaveisList = responsaveisList;
}
public Responsavel getResponsavel() {
return responsavel;
}
public void setResponsavel(Responsavel responsavel) {
this.responsavel = responsavel;
}
public void onDateSelect(SelectEvent e) {
responsavel = new Responsavel();
agenda = new Agenda();
date = (Date)e.getObject();
System.out.println(DateFormat.getDateInstance().format(date));
}
public void onEventSelect(SelectEvent e) {
event = (DefaultScheduleEvent) e.getObject();
this.agenda = (Agenda) event.getData();
}
public void onEventMove(ScheduleEntryMoveEvent event) {
if (event.getScheduleEvent().getId() != null) {
ScheduleEvent defaultEvent = event.getScheduleEvent();
agenda = (Agenda) defaultEvent.getData();
agendaDAO = new AgendaDAO();
boolean result = agendaDAO.updateData(agenda);
agendaDAO.close();
if (result) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Sucesso", "A data do evento foi atualizada com sucesso."));
return;
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Erro", "Houve um erro ao atualizar a data, pressione F5 para atualiza a página, caso o erro insista, procure suporte."));
return;
}
} else {
FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Erro", "Aconteceu algo inesperado, o evento é nulo ? :| lol Procure o Ranis, e informe isso."));
}
}
public void onEventResize(ScheduleEntryResizeEvent event) {
FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Evento", "Redimensionado. Minute: " + event.getMinuteDelta() + ", Day: " + event.getDayDelta()));
}
public void deleteEvent(ActionEvent e) {
if (event.getId() == null) {
FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Operação inválida", "Selecione um evento para deletar."));
return;
} else {
agendaDAO = new AgendaDAO();
agenda = (Agenda) event.getData();
boolean result = agendaDAO.deleteData(agenda);
if (result) {
eventModel.deleteEvent(event);
FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Sucesso", "O evento foi apagado com sucesso."));
} else {
FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Falha", "Houve um erro ao apagar, tente atualizar a página ou procure suporte."));
}
event = new DefaultScheduleEvent();
agendaDAO.close();
return;
}
}
public SelectItem[] getRegionalByResponsavel() {
hasResponsavelDAO = new RegionalHasResponsavelDAO();
list = hasResponsavelDAO.getAllDataByResponsavel(responsavel);
hasResponsavelDAO.close();
if (list.size() > 0) {
hasResponsavel = list.get(0);
}
SelectItem[] itens = new SelectItem[list.size()];
int i = 0;
for (RegionalHasResponsavel model : list) {
itens[i++] = new SelectItem(model, model.getRegional().getNome());
}
return itens;
}
public SelectItem[] getResponsaveis() {
responsavelDAO = new ResponsavelDAO();
responsaveisList = responsavelDAO.getAllData();
responsavelDAO.close();
if (responsavel.getId() == 0 && responsaveisList.size() > 0) {
responsavel = responsaveisList.get(0);
}
SelectItem[] itens = new SelectItem[responsaveisList.size()];
int i = 0;
for (Responsavel model : responsaveisList) {
itens[i++] = new SelectItem(model, model.getNome());
}
return itens;
}
public void updateRegionalPorResponsavel() {
hasResponsavelDAO = new RegionalHasResponsavelDAO();
list = hasResponsavelDAO.getAllDataByResponsavel(responsavel);
hasResponsavelDAO.close();
}
public String cadastrarRegional() {
return "createRegional";
}
public String cadastrarResponsavel() {
return "createResponsible";
}
public String juntarResponsavelRegional() {
return "JoinResponsibleRegional";
}
public String gerarRelatorios() {
return "relatorio";
}
public void redirect() {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
try {
response.sendRedirect("http://pxx/Lo");
} catch (IOException ex) {
Logger.getLogger(AgendaController.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Boa noite Rodrigo,
estou criando um agendamento médico com o schedule, mais tenho algumas duvidas ainda, você poderia postar a sua classe AgendaController para eu dar uma olhada nela, desde já, muito obrigado.