@Override public SimpleVehicleMessage getItem(int position) { return mValues.get(position).asSimpleMessage(); }
public Date getDate() { if (!isTimestamped()) { return null; } return new Date(getTimestamp()); }
@Override public String toString() { return MoreObjects.toStringHelper(this) .add("timestamp", getTimestamp()) .add("extras", getExtras()) .toString(); }
protected static String formatTimestamp(VehicleMessage message) { if(message.isTimestamped()) { return sDateFormatter.format(message.getDate()); } return ""; }
@Test public void invalidExtras() { message = new VehicleMessage(); message.setExtras(null); assertFalse(message.hasExtras()); assertThat(message.getExtras(), nullValue()); }
@Test public void setAutomaticTriggeredTimestamp() { message = new VehicleMessage(); message.timestamp(); assertTrue(message.isTimestamped()); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(message.getTimestamp()); // Catch a regression where we didn't divide by 1000 before storing // timestamp as a double. assertThat(calendar.get(Calendar.YEAR), equalTo(Calendar.getInstance().get(Calendar.YEAR))); }
if (measurement != null && !measurement.isTimestamped()) { Log.w(TAG, "A trace line was missing a timestamp: " + line); waitForNextRecord(startingTime, measurement.getTimestamp()); } catch (NumberFormatException e) { Log.w(TAG, "A trace line was not in the expected " + continue; measurement.untimestamp(); if (!mTraceValid) { connected();
@Test public void untimestamp() { message = new VehicleMessage(Long.valueOf(10000), extras); message.untimestamp(); assertFalse(message.isTimestamped()); }
@Test public void setManualTimestamp() { message = new VehicleMessage(Long.valueOf(10000), extras); assertTrue(message.isTimestamped()); assertEquals(Long.valueOf(10000), message.getTimestamp()); }
@Test public void emptyMessage() { message = new VehicleMessage(new HashMap<String, Object>()); assertFalse(message.hasExtras()); assertThat(message.getExtras(), nullValue()); }
@Test public void emptyMessageHasNoTimestamp() { message = new VehicleMessage(); assertTrue(!message.isTimestamped()); }
if(message instanceof DiagnosticRequest) { wrappedMessage = new Command(message.asDiagnosticRequest(), DiagnosticRequest.ADD_ACTION_KEY); message.timestamp();
@Test public void cantRetimestamp() { message.timestamp(); Long timestamp = message.getTimestamp(); message.timestamp(); assertEquals(timestamp, message.getTimestamp()); }
@Test public void differentValuesNotEqual() { extras.put("another", "foo"); // This also tests that the values map is copied and we don't have the // same reference from outside the class VehicleMessage anotherMessage = new VehicleMessage( message.getTimestamp(), extras); assertFalse(message.equals(anotherMessage)); }
if (matcher.matches(message.asKeyedMessage())) { MessageListenerGroup group = mMessageListeners.get(matcher); group.receive(message); propagateMeasurementFromMessage(message.asSimpleMessage());
@Override public boolean send(VehicleMessage command) { command.untimestamp(); boolean sent = false; synchronized(VehicleService.this) { if(mVehicleInterface != null && mVehicleInterface.isConnected()) { try { mVehicleInterface.receive(command); Log.d(TAG, "Sent " + command + " using interface " + mVehicleInterface); sent = true; } catch(DataSinkException e) { Log.w(TAG, mVehicleInterface + " unable to send command", e); } } else { Log.w(TAG, "No connected VI available to send command"); } } return sent; }
public void timestamp() { if(!isTimestamped()) { mTimestamp = System.currentTimeMillis(); } }
/** * Construct a new VehicleMessage with the given extra data. * * The extras field can hold any arbitrary key/value pairs. * * @param extras A map of any extra data to attach to this message. */ public VehicleMessage(Map<String, Object> extras) { setExtras(extras); }
/** * @return true if the message has a valid timestamp. */ public boolean isTimestamped() { return getTimestamp() != null; }
@Test public void sameValuesEquals() { VehicleMessage anotherMessage = new VehicleMessage( message.getTimestamp(), extras); assertEquals(message, anotherMessage); }