package entity.building; import op.OPDE; import op.tools.SYSTools; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.Query; import javax.swing.*; import java.awt.*; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * User: tloehr * Date: 03.11.12 * Time: 14:05 * To change this template use File | Settings | File Templates. */ public class RoomsTools { public static ListCellRenderer getRenderer() { return (jList, o, i, isSelected, cellHasFocus) -> { String text; if (o == null) { text = SYSTools.xx("misc.commands.>>noselection<<"); // } else if (o instanceof Rooms) { // text = o.toString(); } else { text = o.toString(); } return new DefaultListCellRenderer().getListCellRendererComponent(jList, text, i, isSelected, cellHasFocus); }; } public static ArrayList<Rooms> getAllActive() { EntityManager em = OPDE.createEM(); Query query = em.createQuery(" SELECT r FROM Rooms r WHERE r.active = TRUE ORDER BY r.floor.home.eid, r.floor.level, r.text "); //SELECT b FROM LCustodian b WHERE b.status >= 0 ORDER BY b.name, b.vorname"); ArrayList<Rooms> list = new ArrayList<Rooms>(query.getResultList()); em.close(); return list; } public static int getMaxLevel(Homes home) { Integer total = 0; // int inUse = 0; try { EntityManager em = OPDE.createEM(); Query query = em.createQuery("SELECT MAX(b.floor.level) FROM Rooms b WHERE b.floor.home = :home "); query.setParameter("home", home); total = (Integer) query.getSingleResult(); em.close(); } catch (NoResultException nre){ total = 0; } catch (Exception e){ OPDE.fatal(e); } return total; } public static int getBedsTotal(Homes home, short level) { int total = 0; // int inUse = 0; EntityManager em = OPDE.createEM(); Query query = em.createQuery("SELECT b FROM Rooms b WHERE b.floor.home = :home AND b.floor.level = :level AND b.active = TRUE"); query.setParameter("level", level); query.setParameter("home", home); ArrayList<Rooms> listRooms = new ArrayList(query.getResultList()); em.close(); for (Rooms room : listRooms) { total++; if (!room.getSingle()) total++; } // ResInfoType rooms = ResInfoTypeTools.getByType(ResInfoTypeTools.TYPE_ROOM); // for (Resident resident : ResidentTools.getAllActive(date, date)) { // for (ResInfo resInfo : ResInfoTools.getAll(resident, rooms, SYSCalendar.midOfDay(date), SYSCalendar.midOfDay(date))) { // this is only one, sometimes none // Properties props = SYSTools.load(resInfo.getProperties()); // long rid = Long.parseLong(SYSTools.catchNull(props.getProperty("room.id"), "-1")); // if (rid > 0) { // Rooms room = EntityTools.find(Rooms.class, rid); // if (room.getStation().equals(station)){ // inUse++; // } // } // } // } return total; } // /** // * @param resident // * @param day // * @return // * @relates #9 // */ // public static ArrayList<Resident2Rooms> getRoomsFor(Resident resident, LocalDate day) { // EntityManager em = OPDE.createEM(); // Query query = em.createQuery("" + // " SELECT r FROM Resident2Rooms r WHERE r.resident = :resident" + // " AND ((r.from <= :from AND r.to >= :from) OR " + // " (r.from <= :to AND r.to >= :to) OR " + // " (r.from > :from AND r.to < :to)) " + // " ORDER BY r.from "); // query.setParameter("resident", resident); // query.setParameter("from", day.toDateTimeAtStartOfDay().toDate()); // query.setParameter("to", SYSCalendar.eod(day)); // ArrayList<Resident2Rooms> list = new ArrayList(query.getResultList()); // em.close(); // // return list; // } // /** // * @param resident // * @param day // * @return // * @relates #9 // */ // public static Rooms getRoomFor(Resident resident, LocalDate day) { // Rooms room = null; // // ArrayList<Resident2Rooms> list = getRoomsFor(resident, day); // room = !list.isEmpty() ? list.get(list.size() - 1).getRoom() : null; // // return room; // } // /** // * @param em // * @param resident // * @param enddate // * @throws Exception // * @relates #9 // */ // public static void closeAll(EntityManager em, Resident resident, Date enddate) throws Exception { // Query query = em.createQuery("" + // " SELECT r FROM Resident2Rooms r WHERE r.resident = :resident" + // " AND r.to = :to "); // // query.setParameter("resident", resident); // query.setParameter("to", SYSConst.DATE_UNTIL_FURTHER_NOTICE); // // ArrayList<Resident2Rooms> list = new ArrayList(query.getResultList()); // // if (!list.isEmpty()) { // Resident2Rooms r2r = em.merge(list.get(0)); // em.lock(r2r, LockModeType.OPTIMISTIC); // r2r.setTo(enddate); // } // // } public static DefaultComboBoxModel getCombobox4Levels() { ArrayList<Station> listStat = new ArrayList(); DefaultComboBoxModel result = new DefaultComboBoxModel(listStat.toArray()); return result; } }