public TileTemplate getTileTemplateByIdOrThrow(long id) { return templates[getTileTemplateIndexByIdOrThrow(id)]; }
public Widget getWidgetByIdInDeviceTilesOrThrow(long id) { for (Widget widget : widgets) { if (widget instanceof DeviceTiles) { DeviceTiles deviceTiles = (DeviceTiles) widget; Widget widgetInDeviceTiles = deviceTiles.getWidgetById(id); if (widgetInDeviceTiles != null) { return widgetInDeviceTiles; } } } throw new IllegalCommandException("Widget with passed id not found."); }
@Override public void deleteDevice(int deviceId) { Tile[] localTiles = this.tiles; int index = getTileIndexByDeviceId(localTiles, deviceId); if (index != -1) { this.tiles = localTiles.length == 1 ? EMPTY_DEVICE_TILES : ArrayUtil.remove(localTiles, index, Tile.class); } for (TileTemplate tileTemplate : this.templates) { tileTemplate.deviceIds = ArrayUtil.deleteFromArray(tileTemplate.deviceIds, deviceId); } } }
public static void messageReceived(ChannelHandlerContext ctx, MobileStateHolder state, StringMessage message) { String[] split = split3(message.body); if (split.length < 3) { throw new IllegalCommandException("Wrong income message format."); } int dashId = Integer.parseInt(split[0]); long widgetId = Long.parseLong(split[1]); String tileTemplateString = split[2]; if (tileTemplateString == null || tileTemplateString.isEmpty()) { throw new IllegalCommandException("Income tile template message is empty."); } User user = state.user; DashBoard dash = user.profile.getDashByIdOrThrow(dashId); Widget widget = dash.getWidgetByIdOrThrow(widgetId); if (!(widget instanceof DeviceTiles)) { throw new IllegalCommandException("Income widget id is not DeviceTiles."); } DeviceTiles deviceTiles = (DeviceTiles) widget; TileTemplate newTileTemplate = JsonParser.parseTileTemplate(tileTemplateString, message.id); int existingTileTemplateIndex = deviceTiles.getTileTemplateIndexByIdOrThrow(newTileTemplate.id); TileTemplate existingTileTemplate = deviceTiles.templates[existingTileTemplateIndex]; deviceTiles.recreateTilesIfNecessary(newTileTemplate, existingTileTemplate); log.debug("Updating tile template {}.", tileTemplateString); deviceTiles.replaceTileTemplate(newTileTemplate, existingTileTemplateIndex); user.profile.cleanPinStorage(dash, deviceTiles, false); ctx.writeAndFlush(ok(message.id), ctx.voidPromise()); }
public static void messageReceived(ChannelHandlerContext ctx, MobileStateHolder state, StringMessage message) { String[] split = split3(message.body); if (split.length < 2) { throw new IllegalCommandException("Wrong income message format."); } int dashId = Integer.parseInt(split[0]); long widgetId = Long.parseLong(split[1]); long tileId = Long.parseLong(split[2]); User user = state.user; DashBoard dash = user.profile.getDashByIdOrThrow(dashId); Widget widget = dash.getWidgetByIdOrThrow(widgetId); if (!(widget instanceof DeviceTiles)) { throw new IllegalCommandException("Income widget id is not DeviceTiles."); } DeviceTiles deviceTiles = (DeviceTiles) widget; int existingTileIndex = deviceTiles.getTileTemplateIndexByIdOrThrow(tileId); log.debug("Deleting tile template dashId : {}, widgetId : {}, tileId : {}.", dash, widgetId, tileId); TileTemplate tileTemplate = deviceTiles.templates[existingTileIndex]; user.addEnergy(tileTemplate.getPrice()); deviceTiles.templates = ArrayUtil.remove(deviceTiles.templates, existingTileIndex, TileTemplate.class); deviceTiles.deleteDeviceTilesByTemplateId(tileId); user.profile.cleanPinStorageForTileTemplate(dash, tileTemplate, true); dash.updatedAt = System.currentTimeMillis(); ctx.writeAndFlush(ok(message.id), ctx.voidPromise()); }
Widget widgetInTiles = ((DeviceTiles) widget).getWidgetById(newWidget.id); if (widgetInTiles != null) { throw new NotAllowedException("Widget with same id already exists.", message.id); TileTemplate tileTemplate = deviceTiles.getTileTemplateByIdOrThrow(templateIdAddToId); tileTemplate.widgets = ArrayUtil.add(tileTemplate.widgets, newWidget, Widget.class);
@Override public void updateValue(Widget oldWidget) { if (oldWidget instanceof DeviceTiles) { DeviceTiles oldDeviceTiles = (DeviceTiles) oldWidget; this.tiles = oldDeviceTiles.tiles; for (TileTemplate tileTemplate : templates) { TileTemplate oldTileTemplate = oldDeviceTiles.getTileTemplateById(tileTemplate.id); if (oldTileTemplate != null) { tileTemplate.deviceIds = oldTileTemplate.deviceIds; } } } }
private void sendTemplateIdEmail(ChannelHandlerContext ctx, User user, String[] split, int msgId) { int dashId = Integer.parseInt(split[1]); DashBoard dash = user.profile.getDashByIdOrThrow(dashId); long widgetId = Long.parseLong(split[2]); DeviceTiles deviceTiles = (DeviceTiles) dash.getWidgetById(widgetId); long templateId = Long.parseLong(split[3]); TileTemplate template = deviceTiles.getTileTemplateByIdOrThrow(templateId); String subj = "Template ID for " + template.name; String body = templateIdMailBody .replace(Placeholders.TEMPLATE_NAME, template.name) .replace(Placeholders.TEMPLATE_ID, template.templateId); log.trace("Sending template id mail for user {}, with id : '{}'.", user.email, templateId); mail(ctx.channel(), user.email, subj, body, msgId, true); }
: new DataStream(newTileTemplate.dataStream) ); preserveOldValueIfPossible(existingTiles, newTile); list.add(newTile);
deviceTiles.recreateTilesIfNecessary(newTileTemplate, null);
String value = ((DeviceTiles) widget).getValue(deviceId, pin, pinType); if (value == null) { log.debug("Requested pin {} not found. User {}", pinString, user.email);
TileTemplate tileTemplate = deviceTiles.getTileTemplateByWidgetIdOrThrow(newWidget.id); if (newWidget instanceof Tabs) { Tabs newTabs = (Tabs) newWidget;
private void processDeviceTile(Channel channel, DeviceTiles deviceTiles, int deviceId, long now) { for (Tile tile : deviceTiles.tiles) { if (tile.deviceId == deviceId && tile.isTicked(now)) { TileTemplate tileTemplate = deviceTiles.getTileTemplateById(tile.templateId); if (tileTemplate != null) { for (Widget tileWidget : tileTemplate.widgets) { if (tileWidget instanceof FrequencyWidget) { FrequencyWidget frequencyWidget = (FrequencyWidget) tileWidget; if (frequencyWidget.hasReadingInterval() && channel.isWritable()) { frequencyWidget.writeReadingCommand(channel); tickedWidgets++; } } } } } } }
TimerWorker timerWorker = holder.timerWorker; if (deviceTilesId != -1) { TileTemplate tileTemplate = deviceTiles.getTileTemplateByIdOrThrow(templateId); if (widgetToDelete instanceof Tabs) { tileTemplate.widgets = deleteTabs(timerWorker,
DeviceTiles deviceTiles = dash.getWidgetByType(DeviceTiles.class); if (deviceTiles != null) { widget = deviceTiles.getWidgetById(widgetId);