Proyecto Final
Proyecto Final
_____________________________________________________________________________
__
package hn.uth.views.habitacion;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.formlayout.FormLayout;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridVariant;
import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.html.Image;
import com.vaadin.flow.component.html.NativeLabel;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.notification.Notification.Position;
import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.splitlayout.SplitLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.component.upload.Upload;
import com.vaadin.flow.data.binder.BeanValidationBinder;
import com.vaadin.flow.data.binder.ValidationException;
import com.vaadin.flow.data.converter.StringToIntegerConverter;
import com.vaadin.flow.data.renderer.LitRenderer;
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.StreamResource;
import com.vaadin.flow.spring.data.VaadinSpringDataHelpers;
import hn.uth.data.SampleBook;
import hn.uth.views.MainLayout;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Base64;
import java.util.Optional;
import org.springframework.data.domain.PageRequest;
import
org.springframework.orm.ObjectOptimisticLockingFailureException;
@PageTitle("Habitacion")
@Route(value = "Habitacion/:sampleBookID?/:action?(edit)", layout =
MainLayout.class)
public class HabitacionView extends Div implements BeforeEnterObserver
{
public HabitacionView() {
addClassNames("habitacion-view");
// Create UI
SplitLayout splitLayout = new SplitLayout();
createGridLayout(splitLayout);
createEditorLayout(splitLayout);
add(splitLayout);
grid.addColumn("numerohabitacion").setAutoWidth(true);
grid.addColumn("ocupacion").setAutoWidth(true);
grid.addColumn("precio").setAutoWidth(true);
grid.addColumn("tipohabitacion").setAutoWidth(true);
grid.addThemeVariants(GridVariant.LUMO_NO_BORDER);
UI.getCurrent().navigate(String.format(SAMPLEBOOK_EDIT_ROUTE_TEMPLATE,
event.getValue().getId()));
} else {
clearForm();
UI.getCurrent().navigate(HabitacionView.class);
}
});
cancel.addClickListener(e -> {
clearForm();
refreshGrid();
});
save.addClickListener(e -> {
try {
if (this.sampleBook == null) {
this.sampleBook = new SampleBook();
}
clearForm();
refreshGrid();
Notification.show("Data updated");
UI.getCurrent().navigate(HabitacionView.class);
} catch (ObjectOptimisticLockingFailureException
exception) {
Notification n = Notification.show(
"Error updating the data. Somebody else has
updated the record while you were making changes.");
n.setPosition(Position.MIDDLE);
n.addThemeVariants(NotificationVariant.LUMO_ERROR);
}
});
}
@Override
public void beforeEnter(BeforeEnterEvent event) {
/*Optional<Long> sampleBookId =
event.getRouteParameters().get(SAMPLEBOOK_ID).map(Long::parseLong);
if (sampleBookId.isPresent()) {
Optional<SampleBook> sampleBookFromBackend =
sampleBookService.get(sampleBookId.get());
if (sampleBookFromBackend.isPresent()) {
populateForm(sampleBookFromBackend.get());
} else {
Notification.show(String.format("The requested
sampleBook was not found, ID = %s", sampleBookId.get()),
3000, Notification.Position.BOTTOM_START);
// when a row is selected but the data is no longer
available,
// refresh grid
refreshGrid();
event.forwardTo(HabitacionView.class);
}
}*/
}
numerohabitacion.setPrefixComponent(VaadinIcon.TICKET.create());
ocupacion = new ComboBox("Ocupacion");
ocupacion.setItems("Cama 1","Cama 2","Cama 3");
ocupacion.setPrefixComponent(VaadinIcon.BED.create());
precio = new ComboBox("Precio");
precio.setItems("L.2,300.00","L.3,100.00","L.4,200.00");
precio.setPrefixComponent(VaadinIcon.MONEY.create());
tipohabitacion = new ComboBox("Tipo Habitacion");
tipohabitacion.setItems("Individual","Doble","Triple");
tipohabitacion.setPrefixComponent(VaadinIcon.STORAGE.create());
formLayout.add(numerohabitacion,ocupacion,precio,tipohabitacion);
editorDiv.add(formLayout);
createButtonLayout(editorLayoutDiv);
splitLayout.addToSecondary(editorLayoutDiv);
}
delete.addThemeVariants(ButtonVariant.LUMO_PRIMARY,ButtonVariant.LUMO_
ERROR);
buttonLayout.add(save,delete,cancel);
editorLayoutDiv.add(buttonLayout);
}
SAMPLE
package hn.uth.data;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Lob;
@Entity
public class SampleBook extends AbstractEntity {
@Lob
@Column(length = 1000000)
}
TEST
package proyectohotel.test;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
@Test
public void testGuardarCliente() throws InterruptedException {
// Inicializa el WebDriver para Chrome
WebDriver driver = new ChromeDriver();
try{
// Abre la página web de empleados
driver.get("http://localhost:8080/Cliente");
WebElement bGuardar =
driver.findElement(By.xpath("//vaadin-button[@id='btn_guardar']"));
WebElement bCancelar =
driver.findElement(By.xpath("//vaadin-button[@id='btn_cancelar']"));
WebElement bEliminar =
driver.findElement(By.xpath("//vaadin-button[@id='btn_eliminar']"));
bGuardar.click();
HABITACION
package proyectohotel.test;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
@Test
public void testGuardarHabitacion() throws InterruptedException
{
try {
save.click();
CONTROLLER
package hn.uth.controller;
import hn.uth.data.HabitacionResponse;
import hn.uth.model.DatabaseRepositoryImpl;
import hn.uth.views.habitacion.ViewModelHabitacion;
super();
this.vista = view;
this.modelo =
DatabaseRepositoryImpl.getInstance("https://apex.oracle.com", 30000L);
@Override
try {
HabitacionResponse respuesta =
this.modelo.consultarHabitacion();
}else {
this.vista.mostrarHabitacionEnGrid(respuesta.getItems());;
error.printStackTrace();