package org.openhab.habclient; import org.openhab.domain.IRoomProvider; import org.openhab.domain.model.Room; import org.openhab.domain.util.ILogger; import java.util.UUID; import javax.inject.Inject; public class RoomDataContainer implements IRoomDataContainer { private static final String TAG = "RoomDataContainer"; private final ILogger mLogger; private final IRoomProvider mRoomProvider; private UUID currentConfigRoom = null; private UUID currentFlipperRoom = null; @Inject public RoomDataContainer(ILogger logger, IRoomProvider roomProvider) { mLogger = logger; mRoomProvider = roomProvider; } @Override public Room getConfigRoom() { if(currentConfigRoom == null) return null; return getRoom(currentConfigRoom); // Log.d(getLogTag(), String.format("Getting config room: name = '%s' item name = '%s' UUID = '%s'", room.getName(), room.getGroupWidgetId(), room.getId())); } @Override public void setConfigRoom(Room room) { if(room != null) { mLogger.d(TAG, String.format("Setting config room: name = '%s' widget UUID = '%s' room UUID = '%s'", room.getName(), room.getRoomWidget() != null ? room.getRoomWidget().getId() : "<Widget is NULL>", room.getId())); currentConfigRoom = room.getId(); } else { mLogger.d(TAG, "Setting config room: New Room"); currentConfigRoom = null; } } @Override public Room getFlipperRoom() { Room room = getRoom(currentFlipperRoom); currentFlipperRoom = room.getId(); return room; } @Override public void setFlipperRoom(Room room) { currentFlipperRoom = room.getId(); } private Room getRoom(UUID roomId) { if(roomId == null) return mRoomProvider.getInitialRoom(); else return mRoomProvider.get(roomId); } }