1
I’m having trouble converting String to Date, here are the codes:
Event:
@Entity(name = "Evento")
@Table(name = "evento_table")
public class Evento {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column
private Long id;
@Column
private String nome;
@Column
private String descricao;
@Column
@Temporal(TemporalType.DATE)
private Date inicio;
@Column
@Temporal(TemporalType.DATE)
private Date fim;
@Column
private boolean disponibilidade;
@OneToOne(cascade = javax.persistence.CascadeType.ALL, orphanRemoval = true)
public Marcador marcador;
public Evento(){
};
public Evento(String nome, String descricao, Date inicio, Date fim, boolean disponibilidade, Marcador marcador) throws ValidationException {
super();
if (nome == null || nome.trim().isEmpty()) {
throw new ValidationException("Nome do evento nao pode ser vazio");
}
if (descricao == null || descricao.trim().isEmpty()) {
throw new ValidationException("Descricao do evento nao pode ser vazio");
}
if (inicio.compareTo(fim) >= 0){
throw new ValidationException("Data de inicio nao pode ser maior ou igual que o seu fim");
}
this.nome = nome;
this.descricao = descricao;
this.inicio = inicio;
this.fim = fim;
this.disponibilidade = disponibilidade;
this.marcador = marcador;
}
public Long getId() { }
public void setId (Long id){ }
public String getNome() { }
public void setNome(String nome) { }
public String getDescricao() { }
public void setDescricao(String descricao) { }
public Calendar getInicio() { }
public void setInicio(Date inicio) throws ValidationException { }
public Calendar getFim() { }
public void setFim(Calendar fim) throws ValidationException { }
public boolean getDisponibilidade() { }
public void setDisponibilidade (boolean disponibilidade) { }
public Marcador getMarcador(){ }
public void setMarcador(Marcador marcador){ }
}
HTML form:
<fieldset>
<!-- Form Name -->
<legend>Cadastrar Evento</legend>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="textinput">Nome:</label>
<div class="col-md-4">
<input id="nomeEvento" name="nomeEvento" class="form-control input-md" type="text" >
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="textinput">Descrição:</label>
<div class="col-md-4">
<textarea cols="100" rows="4" id="descricaoEvento" name="descricaoEvento" class="form-control input-md" type="text">
</textarea>
</div>
</div>
<!-- ONDE EU PEGO O INICIO DO EVENTO E DOU SET ATRAVÉS DE EVENTO.SETINICIO() NO CONTROLLER-->
<div class="form-group">
<label class="col-md-4 control-label" for="textinput">Início:</label>
<div class="col-md-4">
<input id="inicioEvento" name="inicioEvento" class="form-control input-md" type="datetime-local">
</div>
</div>
<!-- ONDE EU PEGO O FIM DO EVENTO E DOU SET ATRAVÉS DE EVENTO.SETFIM() NO CONTROLLER -->
<div class="form-group">
<label class="col-md-4 control-label" for="textinput">Término:</label>
<div class="col-md-4">
<input id="TerminoEvento" name="TerminoEvento" class="form-control input-md" type="datetime-local">
</div>
</div>
<!-- Select Basic -->
<div class="form-group">
<label class="col-md-4 control-label" for="selectbasic">Localização:</label>
<div class="col-md-4">
<select id="localizacaoEvento" name="localizacaoEvento" class="form-control">
@for(marcador <- listMarcador){
<option value="@marcador.getId()">@marcador.getTitulo()</option>
}
</select>
</div>
</div>
<!-- Multiple Radios (inline) -->
<div class="form-group">
<label class="col-md-4 control-label" for="disponibilidade">Disponivel</label>
<div class="col-md-4">
<label class="radio-inline" for="disponibilidade-0">
<input name="disponibilidade" id="disponibilidade-0" value="True" checked="checked" type="radio">
Sim
</label>
<label class="radio-inline" for="disponibilidade-1">
<input name="disponibilidade" id="disponibilidade-1" value="False" type="radio">
Não
</label>
</div>
</div>
<!-- Button (Double) -->
<div class="form-group">
<label class="col-md-4 control-label" for="button1id"></label>
<div class="col-md-8">
<input type="submit" name="criar" value="Criar" class="btn btn-success">
<input type="reset" name="limpar" value="Limpar" class="btn btn-danger">
</div>
</div>
</fieldset>
Controller event:
public class EventoController extends Controller implements Services {
private static final GenericDAO dao = new GenericDAO();
private List<Marcador> listMarcador = dao.findAllByClass(Marcador.class);
@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result cadastrar() {
DynamicForm requestEvento = Form.form().bindFromRequest();
Calendar date = new GregorianCalendar();
if(requestEvento.hasErrors()){
return badRequest(criar.render("ConnectUni - cadastrar evento", listMarcador));
} else {
Map<String, String> formMap = requestEvento.data();
Evento evento = new Evento();
if(formMap.get("nomeEvento").trim().isEmpty()){
flash("erro", "nome nao pode ser vazio");
return badRequest(criar.render("ConnectUni - cadastrar evento", listMarcador));
}
evento.setNome(formMap.get("nomeEvento"));
if(formMap.get("descricaoEvento").trim().isEmpty()){
flash("erro", "descricao nao pode ser vazio");
return badRequest(criar.render("ConnectUni - cadastrar evento", listMarcador));
}
evento.setDescricao(formMap.get("descricaoEvento"));
//Como setar os inicio e termino do evento?
//evento.setInicio();
//evento.setTermino();
evento.setDisponibilidade(Boolean.valueOf(formMap.get("disponibilidade")));
evento.setMarcador(dao.findByEntityId(Marcador.class, Long.valueOf(formMap.get("localizacaoEvento"))));
dao.persist(evento);
dao.flush();
flash("sucesso", "cadastrado com sucesso !");
return ok(criar.render("ConnectUni - cadastrar evento", listMarcador));
}
}
@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result detalhes(Long id) {
Evento evento = dao.findByEntityId(Evento.class, id);
return null;
}
@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result editar(Long id) {
Evento evento = dao.findByEntityId(Evento.class, id);
DynamicForm requestEvento = Form.form().bindFromRequest();
if(requestEvento.hasErrors()){
return badRequest(editar.render("ConnectUni - editar evento", evento, listMarcador));
} else {
Map<String, String> formMap = requestEvento.data();
if(formMap.get("nomeEvento").trim().isEmpty()){
flash("erro", "nome nao pode ser vazio");
return badRequest(editar.render("ConnectUni - editar evento", evento, listMarcador));
}
evento.setNome(formMap.get("nomeEvento"));
if(formMap.get("descricaoEvento").trim().isEmpty()){
flash("erro", "descricao nao pode ser vazio");
return badRequest(editar.render("ConnectUni - editar evento", evento, listMarcador));
}
evento.setDescricao(formMap.get("descricaoEvento"));
//Como setar os inicio e termino do evento?
//evento.setInicio();
//evento.setFim();
evento.setDisponibilidade(Boolean.valueOf(formMap.get("disponibilidade")));
evento.setMarcador(dao.findByEntityId(Marcador.class, Long.valueOf(formMap.get("localizacaoEvento"))));
dao.persist(evento);
dao.flush();
flash("sucesso", "editado com sucesso !");
return ok(editar.render("ConnectUni - editar evento", evento, listMarcador));
}
}
@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result deletar(Long id) {
boolean disponibilidade = dao.findByEntityId(Evento.class, id).getDisponibilidade();
dao.removeById(Evento.class, id);
dao.flush();
flash("sucesso", "evento deletado com sucesso.");
return redirect(routes.EventoController.getAll(disponibilidade));
}
@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result getAll(boolean disponibilidade) {
Query consultaEvento = dao.createQuery("FROM Evento e WHERE e.disponibilidade = :parametro");
consultaEvento.setParameter("parametro", disponibilidade);
List<Evento> listEvento = consultaEvento.getResultList();
return ok(listar.render("ConnectUni - listar eventos disponiveis", listEvento));
}
@Transactional
@Override
@Security.Authenticated(Secured.class)
public Result getAll() {
List<Evento> eventos = dao.findAllByClass(Evento.class);
return ok(listar.render("ConnectUni - cadastrar evento", eventos));
}
@Transactional
@Security.Authenticated(Secured.class)
public Result getPagecadastrarEvento() {
return ok(criar.render("ConnectUni - cadastrar evento", listMarcador));
}
@Transactional
@Security.Authenticated(Secured.class)
public Result getPageditarEvento(long id) {
Evento evento = dao.findByEntityId(Evento.class, id);
return ok(editar.render("ConnectUni - cadastrar evento", evento, listMarcador));
}
}
Here is the problem, through the html form, where I will take the attributes to create a new event, I will use what was filled and through the eventController set the attributes in the Event class, but when it comes to taking the values of the 2 datetime-local startEvento and Terminoevento (html form) and use them to set the attributes start and end of the Event class, I come across a small problem. Apparently the datetime-local of the html form return Strings and setInicio() and setTermino() of the Event class require a Date as parameter, but I cannot do such a conversion within the eventController class, any idea of how to do?
@Renan, I’ve improved the question, see if you can understand now.
– Erick