X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FProfile.java;h=d091b89e6de09cf4e7410e1ca6a0949e6ae927c2;hb=2b438203e37c5b5a886dceb4cd061c27de09d8db;hp=898deb658b19b8c27cacca758241d8d3602ef13e;hpb=745511cbc455604bb9ecbad3f6a2ea84e789de05;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/Profile.java b/src/main/java/net/pterodactylus/sone/data/Profile.java index 898deb6..d091b89 100644 --- a/src/main/java/net/pterodactylus/sone/data/Profile.java +++ b/src/main/java/net/pterodactylus/sone/data/Profile.java @@ -17,10 +17,14 @@ package net.pterodactylus.sone.data; +import static com.google.common.base.Optional.absent; import static com.google.common.base.Optional.fromNullable; +import static com.google.common.base.Optional.of; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; +import static java.lang.Math.max; +import static java.lang.Math.min; import static java.util.UUID.randomUUID; import java.util.ArrayList; @@ -184,39 +188,23 @@ public class Profile implements Fingerprintable { return fields.contains(field); } - /** - * Returns the field with the given ID. - * - * @param fieldId - * The ID of the field to get - * @return The field, or {@code null} if this profile does not contain a - * field with the given ID - */ - public Field getFieldById(String fieldId) { + public Optional getFieldById(String fieldId) { checkNotNull(fieldId, "fieldId must not be null"); for (Field field : fields) { if (field.getId().equals(fieldId)) { - return field; + return of(field); } } - return null; + return absent(); } - /** - * Returns the field with the given name. - * - * @param fieldName - * The name of the field to get - * @return The field, or {@code null} if this profile does not contain a - * field with the given name - */ - public Field getFieldByName(String fieldName) { + public Optional getFieldByName(String fieldName) { for (Field field : fields) { if (field.getName().equals(fieldName)) { - return field; + return of(field); } } - return null; + return absent(); } /** @@ -231,7 +219,7 @@ public class Profile implements Fingerprintable { public Field addField(String fieldName) throws IllegalArgumentException { checkNotNull(fieldName, "fieldName must not be null"); checkArgument(fieldName.length() > 0, "fieldName must not be empty"); - checkState(getFieldByName(fieldName) == null, "fieldName must be unique"); + checkState(!getFieldByName(fieldName).isPresent(), "fieldName must be unique"); @SuppressWarnings("synthetic-access") Field field = new Field(fieldName); fields.add(field); @@ -239,7 +227,7 @@ public class Profile implements Fingerprintable { } public void renameField(Field field, String newName) { - int indexOfField = fields.indexOf(field); + int indexOfField = getFieldIndex(field); if (indexOfField == -1) { return; } @@ -251,41 +239,23 @@ public class Profile implements Fingerprintable { if (indexOfField == -1) { return; } - fields.get(indexOfField).setValue(newValue); + fields.set(indexOfField, new Field(field.getId(), field.getName(), newValue)); } - /** - * Moves the given field up one position in the field list. The index of the - * field to move must be greater than {@code 0} (because you obviously can - * not move the first field further up). - * - * @param field - * The field to move up - */ public void moveFieldUp(Field field) { checkNotNull(field, "field must not be null"); checkArgument(hasField(field), "field must belong to this profile"); - checkArgument(getFieldIndex(field) > 0, "field index must be > 0"); int fieldIndex = getFieldIndex(field); fields.remove(field); - fields.add(fieldIndex - 1, field); + fields.add(max(fieldIndex - 1, 0), field); } - /** - * Moves the given field down one position in the field list. The index of - * the field to move must be less than the index of the last field (because - * you obviously can not move the last field further down). - * - * @param field - * The field to move down - */ public void moveFieldDown(Field field) { checkNotNull(field, "field must not be null"); checkArgument(hasField(field), "field must belong to this profile"); - checkArgument(getFieldIndex(field) < fields.size() - 1, "field index must be < " + (fields.size() - 1)); int fieldIndex = getFieldIndex(field); fields.remove(field); - fields.add(fieldIndex + 1, field); + fields.add(min(fieldIndex + 1, fields.size()), field); } /** @@ -415,14 +385,9 @@ public class Profile implements Fingerprintable { */ public static class Field { - /** The ID of the field. */ private final String id; - - /** The name of the field. */ - private String name; - - /** The value of the field. */ - private String value; + private final String name; + private final String value; public Field(String name) { this(name, null); @@ -438,54 +403,18 @@ public class Profile implements Fingerprintable { this.value = value; } - /** - * Returns the ID of this field. - * - * @return The ID of this field - */ public String getId() { return id; } - /** - * Returns the name of this field. - * - * @return The name of this field - */ public String getName() { return name; } - /** - * Returns the value of this field. - * - * @return The value of this field - */ public String getValue() { return value; } - /** - * Sets the value of this field. While {@code null} is allowed, no - * guarantees are made that {@code null} values are correctly persisted - * across restarts of the plugin! - * - * @param value - * The new value of this field - * @return This field - */ - public Field setValue(String value) { - this.value = value; - return this; - } - - // - // OBJECT METHODS - // - - /** - * {@inheritDoc} - */ @Override public boolean equals(Object object) { if (!(object instanceof Field)) { @@ -495,9 +424,6 @@ public class Profile implements Fingerprintable { return id.equals(field.id); } - /** - * {@inheritDoc} - */ @Override public int hashCode() { return id.hashCode();