Esta clase representa tu tabla categoría:
Código Java:
Ver originalpublic class Category {
private long id;
private List<Meal> meals;
// constructores, getters y setters
}
Esta tabla representa a tu tabla platillo:
Código Java:
Ver originalpublic class Meal {
private long id;
private float price;
// constructores, getters y setters
}
Esta es una capa de abstracción, es un DAO (Data Access Object - objeto de acceso a datos) que se usa para separar lógica de modelo del resto de la aplicación.
Código Java:
Ver originalpublic interface RestauranteDao {
public List<Category> getAllCategories() {
List<Category> categories = new ArrayList<>();
String sql
= "SELECT * FROM categories";
// hace la consulta
while(rs.next()) {
Category category = new Category();
category.setId(rs.getInt("id"));
category.setName(rs.getString("name");
categories.add(category);
}
// hacer algo con la excepcion
}
return categories;
}
public List<Meal> getMealsByCategory(int categoryId) {
List<Meal> meals = new ArrayList<>();
String sql
= "SELECT * FROM meals WHERE category_id = ?";
PrepareStatement pst = con.prepareStatement(sql)) {
// bindea los datos a la consulta
pst.setInt(1, categoryId);
// hace la consulta
while(rs.next()) {
Meal meal = new Meal();
meal.setId(rs.getInt("id"));
meal.setName(rs.getString("name"));
meal.setName(rs.getFloat("price"));
meals.add(meal);
}
// hacer algo con la excepcion
}
return meals;
}
public List
<Meal
> getMealsByCategoryName
(String categoryName
) { List<Meal> meals = new ArrayList<>();
String sql
= "SELECT Id FROM category WHERE name = ?";
PrepareStatement pst = con.prepareStatement(sql)) {
// id de la categoria
int categoryId;
// bindea los datos a la consulta
pst.setString(1, categoryName);
// hace la consulta
while(rs.next()) {
categoryId = rs.getInt("id");
}
meals = this.getMealsByCategoryId(categoryId);
// hacer algo con la excepcion
}
return meals;
}
}
Y aquí utilizamos lo anterior:
Código Java:
Ver original
@Override
if(!e.getValueIsAdjusting()) {
RestaurantDao dao = new RestaurantDao();
// jlist origen del evento
// index seleccionado en la lista
int indexSelected = target.getSelectedIndex();
// obtiene el listmodel y obtiene el objeto Category por index
Category category = target.getSelectionModel().get(indexSelected);
// obtiene la lista de platillos de acuerdo a la categoria
List<Meal> meals = dao.getMealsByCategory(category.getId());
// lo pasas a la tabla...
}
}
});
Una vez que ya tienes los platillos, pasarlos al JTable no tiene mayor misterio. Si tienes una duda con eso, la comentas.
PD: Agrega al JList un ListModel, así trabajas siempre con objetos:
Código Java:
Ver originalRestaurantDao dao = new RestaurantDao();
List<Category> categories = dao.getAllCategories();
ListModel<Category> model = new DefaultListModel<>();
for(Category category : categories) {
model.addElement(model);
}