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;
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<Field> 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<Field> getFieldByName(String fieldName) {
for (Field field : fields) {
if (field.getName().equals(fieldName)) {
- return field;
+ return of(field);
}
}
- return null;
+ return absent();
}
/**
}
public void renameField(Field field, String newName) {
- int indexOfField = fields.indexOf(field);
+ int indexOfField = getFieldIndex(field);
if (indexOfField == -1) {
return;
}
if (indexOfField == -1) {
return;
}
- fields.get(indexOfField).setValue(newValue);
+ fields.set(indexOfField, new Field(field.getId(), field.getName(), newValue));
}
/**
*/
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);
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)) {
return id.equals(field.id);
}
- /**
- * {@inheritDoc}
- */
@Override
public int hashCode() {
return id.hashCode();