From a20405ee073e162a5d730a4b8234a81ec159f8cf Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Wed, 11 May 2011 07:13:04 +0200 Subject: [PATCH] Add method to encode profile information of a Sone. --- .../sone/fcp/AbstractSoneCommand.java | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java b/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java index 1294b43..d88872e 100644 --- a/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java +++ b/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java @@ -22,8 +22,10 @@ import java.util.List; import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.Profile; import net.pterodactylus.sone.data.Reply; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.data.Profile.Field; import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder; import net.pterodactylus.sone.freenet.fcp.AbstractCommand; import net.pterodactylus.sone.freenet.fcp.Command; @@ -217,6 +219,41 @@ public abstract class AbstractSoneCommand extends AbstractCommand { } /** + * Creates a simple field set from the given Sone, including {@link Profile} + * information. + * + * @param sone + * The Sone to encode + * @param prefix + * The prefix for the field names (may be empty but not {@code + * null}) + * @param localSone + * An optional local Sone that is used for Sone-specific data, + * such as if the Sone is followed by the local Sone + * @return The simple field set containing the given Sone + */ + protected SimpleFieldSet encodeSone(Sone sone, String prefix, Sone localSone) { + SimpleFieldSetBuilder soneBuilder = new SimpleFieldSetBuilder(); + + soneBuilder.put(prefix + "Name", sone.getName()); + soneBuilder.put(prefix + "NiceName", SoneAccessor.getNiceName(sone)); + soneBuilder.put(prefix + "LastUpdated", sone.getTime()); + if (localSone != null) { + soneBuilder.put(prefix + "Followed", String.valueOf(localSone.hasFriend(sone.getId()))); + } + Profile profile = sone.getProfile(); + soneBuilder.put(prefix + "Field.Count", profile.getFields().size()); + int fieldIndex = 0; + for (Field field : profile.getFields()) { + soneBuilder.put(prefix + "Field." + fieldIndex + ".Name", field.getName()); + soneBuilder.put(prefix + "Field." + fieldIndex + ".Value", field.getValue()); + ++fieldIndex; + } + + return soneBuilder.get(); + } + + /** * Creates a simple field set from the given collection of Sones. * * @param sones -- 2.7.4