private XYZDataset createDataSet(HashBasedTable<String, String, Double> data) { MatrixSeries series = new MatrixSeries( "DataTable", roomToCodeMapping.keySet().size(), roomToCodeMapping.keySet().size()); for (String source : roomToCodeMapping.keySet()) { Integer sourceId = roomToCodeMapping.get(source); for (String destination : roomToCodeMapping.keySet()) { Integer destinationId = roomToCodeMapping.get(destination); if (!data.contains(source, destination)) { series.update(sourceId, destinationId, -1.0); } else { double value; if (type == MarkovDataDialog.HeatMapType.COMPARISON) value = (data.get(source, destination) + 1.0) / 2; // Scale to 0 to 1 for comparison else value = data.get(source, destination); if (value < 0 || value > 1) { System.out.println( "***********Problem in value=" + value + "(" + source + "," + destination + ")"); } series.update(sourceId, destinationId, value); } } } System.out.println("Room size = " + roomToCodeMapping.keySet().size()); return new MatrixSeriesCollection(series); }
private void handleIncomingConfirmableCoapRequest(ChannelHandlerContext ctx, MessageEvent me) { InetSocketAddress remoteEndpoint = (InetSocketAddress) me.getRemoteAddress(); CoapMessage coapMessage = (CoapMessage) me.getMessage(); IncomingReliableMessageExchange newMessageExchange = new IncomingReliableMessageExchange(remoteEndpoint, coapMessage.getMessageID()); IncomingMessageExchange oldMessageExchange = ongoingMessageExchanges.get(remoteEndpoint, coapMessage.getMessageID()); // Check if there is an ongoing if (oldMessageExchange != null) { if (oldMessageExchange instanceof IncomingReliableMessageExchange) { // if the old message exchange is reliable and the empty ACK was already sent send another // empty ACK if (((IncomingReliableMessageExchange) oldMessageExchange).isAcknowledgementSent()) writeEmptyAcknowledgement(remoteEndpoint, coapMessage.getMessageID()); } // if the old message was unreliable and the duplicate message is confirmable send empty ACK else writeEmptyAcknowledgement(remoteEndpoint, coapMessage.getMessageID()); // As the message is already being processed there is nothing more to do return; } // try to add new reliable message exchange boolean added = false; synchronized (monitor) { Long time = System.currentTimeMillis() + MIN_EMPTY_ACK_DELAY_MILLIS; // Add message exchange to set of ongoing exchanges to detect duplicates if (!ongoingMessageExchanges.contains(remoteEndpoint, coapMessage.getMessageID())) { ongoingMessageExchanges.put(remoteEndpoint, coapMessage.getMessageID(), newMessageExchange); added = true; } // If the scheduling of the empty ACK does not work then it was already scheduled if (!emptyAcknowledgementSchedule.put(time, newMessageExchange)) { log.error("Could not schedule empty ACK for message: {}", coapMessage); ongoingMessageExchanges.remove(remoteEndpoint, coapMessage.getMessageID()); added = false; } } // everything is fine, so further process message if (added) ctx.sendUpstream(me); }
private void handleIncomingNonConfirmableMessage(ChannelHandlerContext ctx, MessageEvent me) { InetSocketAddress remoteEndpoint = (InetSocketAddress) me.getRemoteAddress(); CoapMessage coapMessage = (CoapMessage) me.getMessage(); boolean isDuplicate = true; if (!ongoingMessageExchanges.contains(remoteEndpoint, coapMessage.getMessageID())) { IncomingMessageExchange messageExchange = new IncomingMessageExchange(remoteEndpoint, coapMessage.getMessageID()); synchronized (monitor) { if (!ongoingMessageExchanges.contains(remoteEndpoint, coapMessage.getMessageID())) { ongoingMessageExchanges.put(remoteEndpoint, coapMessage.getMessageID(), messageExchange); isDuplicate = false; } } ctx.sendUpstream(me); } if (isDuplicate) log.info("Received duplicate (non-confirmable). IGNORE! (Message: {})", coapMessage); }
public void addCrossFeature(int i, int j, String f) { if (!crossFactors.contains(i, j)) { crossFactors.put(i, j, new Factor()); } crossFactors.get(i, j).add(f); }