/******************************************************************************************************************* * * Prepares for the next measurement. * ******************************************************************************************************************/ private void prepareNextMeasurement (final @Nonnull Collaboration collaboration) { log.info("prepareNextMeasurement()"); if (!positionIterator.hasNext()) { presentation.dismiss(); new UniformityMeasurementMessage(new UniformityMeasurements(display, measurementMapByPosition)).send(); } else { currentPosition = positionIterator.next(); inviteToPositionTheSensor(collaboration); } }
@Override public void marshal (final @Nonnull OutputStream os) throws IOException { final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw); final int rows = uniformityMeasurements.getRows(); final int columns = uniformityMeasurements.getColumns(); final DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis(); pw.printf("%s ; D='%s' ; P='%s'", formatter.print(uniformityMeasurements.getDateTime()), uniformityMeasurements.getDisplay().getDisplay().getDisplayName(), uniformityMeasurements.getDisplay().getProfileName()); for (int row = 0; row < rows; row++) { for (int column = 0; column < columns; column++) { final UniformityMeasurement measurement = uniformityMeasurements.getAt(xy(column, row)); pw.printf(" ; L[%d,%d]=%3d", column, row, measurement.getLuminance()); pw.printf(" ; T[%d,%d]=%5d", column, row, measurement.getTemperature().getValue()); } } pw.println(); pw.close(); os.write(sw.toString().getBytes()); // FIXME: charset } }
/******************************************************************************************************************* * * ******************************************************************************************************************/ public void render (@Nonnull UniformityMeasurements measurements) { final int columns = measurements.getColumns(); final int rows = measurements.getRows(); final UniformityMeasurement centerMeasurement = measurements.getAt(xy(columns / 2, rows / 2)); final String[][] s = new String[rows][columns]; for (int row = 0; row < rows; row++) { for (int column = 0; column < columns; column++) { s[row][column] = formatMeasurement(centerMeasurement, measurements.getAt(xy(column, row))); } } presentation.populateMeasurements(s); }
@Override @Nonnull public UniformityArchive unmarshal (final @Nonnull InputStream is) throws IOException { final UniformityArchive archive = new UniformityArchive(); for (;;) { try { final UniformityMeasurements measurements = new UniformityMeasurements().as(Unmarshallable).unmarshal(is); archive.add(measurements); } catch (EOFException e) { break; // ok, finished } } return archive; } }
@Override @Nonnull protected List<? extends UniformityMeasurements> computeResults() { final ArrayList<UniformityMeasurements> result = new ArrayList<UniformityMeasurements>(); for (final UniformityMeasurements measurements : contents) { if (measurements.getDisplay().getDisplay().getDisplayName().equals(display.getDisplayName())) { result.add(measurements); } } return result; } };
@Override @Nonnull public String getDisplayName() { return DATE_FORMAT.print(measurements.getDateTime()); } }
/******************************************************************************************************************* * * ******************************************************************************************************************/ private void refreshPresentation() { if (selectedMeasurements != null) { propertyRenderers.get(selectedPropertyRendereIndex.getValue()).render(selectedMeasurements); presentation.renderDisplayName(selectedMeasurements.getDisplay().getDisplay().getDisplayName()); presentation.renderProfileName(selectedMeasurements.getDisplay().getProfile().getName()); } } }
return new UniformityMeasurements(new ProfiledDisplay(new Display(displayName, -1), profileName), dateTime, map);
/******************************************************************************************************************* * * * ******************************************************************************************************************/ public void onNewMeasurement (final @ListensTo @Nonnull UniformityMeasurementMessage message) throws IOException { log.info("onNewMeasurement({})", message); archive.add(message.getMeasurements()); storeArchive(); new UniformityArchiveUpdatedMessage(archive.findMeasurementsByDisplay(message.getMeasurements().getDisplay().getDisplay())).send(); }
@Nonnull public static UniformityMeasurements createMeasurements (final @Nonnull String displayName, final @Nonnull Random r) { final DateTime dateTime = new DateTime((40L * 365 * 24 * 60 * 60 + r.nextLong() % (365L * 24 * 60 * 60)) * 1000); final SortedMap<Position, UniformityMeasurement> m = new TreeMap<Position, UniformityMeasurement>(); m.put(xy(0, 0), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(1, 0), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(2, 0), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(0, 1), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(1, 1), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(2, 1), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(0, 2), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(1, 2), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(2, 2), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); return new UniformityMeasurements(new ProfiledDisplay(new Display(displayName, 0), "profile"), dateTime, m); }
@Nonnull public static UniformityMeasurements createMeasurements (final @Nonnull String displayName, final @Nonnull Random r) { final DateTime dateTime = new DateTime((40L * 365 * 24 * 60 * 60 + r.nextLong() % (365L * 24 * 60 * 60)) * 1000); final SortedMap<Position, UniformityMeasurement> m = new TreeMap<Position, UniformityMeasurement>(); m.put(xy(0, 0), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(1, 0), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(2, 0), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(0, 1), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(1, 1), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(2, 1), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(0, 2), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(1, 2), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); m.put(xy(2, 2), new UniformityMeasurement(randomTemperature(r), randomLuminance(r))); return new UniformityMeasurements(new ProfiledDisplay(new Display(displayName, 0), new Profile("profile")), dateTime, m); }
m.put(xy(1, 2), new UniformityMeasurement(kelvin(6864), 20)); m.put(xy(2, 2), new UniformityMeasurement(kelvin(7209), 0)); final UniformityMeasurements measurements = new UniformityMeasurements(new ProfiledDisplay(new Display("display1", 0), new Profile("profile")), m); messageVerifier.verify(UniformityMeasurementMessage.class).with("measurements", new Equals(measurements));
m.put(xy(1, 2), new UniformityMeasurement(kelvin(6864), 20)); m.put(xy(2, 2), new UniformityMeasurement(kelvin(7209), 0)); final UniformityMeasurements measurements = new UniformityMeasurements(new ProfiledDisplay(new Display("display1", 0), "profile"), m); messageVerifier.verify(UniformityMeasurementMessage.class).with("measurements", new Equals(measurements));