package org.msh.tb; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.msh.tb.entities.WeeklyFrequency; import org.msh.tb.entities.Workspace; import javax.persistence.EntityManager; import java.util.ArrayList; import java.util.List; @Name("weeklyFrequencyHome") public class WeeklyFrequencyHome { @In(create=true) Workspace defaultWorkspace; @In(create=true) EntityManager entityManager; public class WeekDaySelection { private boolean selected; public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } } public class Item { private Integer index; private List days = new ArrayList(); public List getDays() { return days; } public void setDays(List days) { this.days = days; } public Integer getIndex() { return index; } public void setIndex(Integer index) { this.index = index; } } private List items; /** * Save changes in the weekly frequency * @return */ public String save() { WeeklyFrequency[] freqs = defaultWorkspace.getWeeklyFrequencies(); items = getItems(); for (int i = 0; i < 7; i++) { for (int day = 0; day < 7; day++) { WeekDaySelection wds = items.get(i).getDays().get(day); freqs[i].setDay(day+1, wds.isSelected()); } } // update in-memory items defaultWorkspace.setWeeklyFrequency(freqs); // update database Workspace ws = entityManager.find(Workspace.class, defaultWorkspace.getId()); ws.setWeeklyFrequency(freqs); entityManager.persist(ws); entityManager.flush(); return "success"; } public List getItems() { if (items == null) { items = new ArrayList(); WeeklyFrequency[] vals = defaultWorkspace.getWeeklyFrequencies(); for (int i = 0; i < 7; i++) { Item item = new Item(); item.setIndex(i + 1); items.add(item); for (int day = 0; day < 7; day++) { WeekDaySelection wds = new WeekDaySelection(); wds.setSelected(vals[i].getDay(day+1)); item.getDays().add(wds); } } } return items; } public void setItems(List vals) { items = vals; } }