sPFShared/src/main/java/it/polimi/spf/shared/model/ProfileFieldContainer.java
public <E> void setFieldValue(ProfileField<E> field, E value) {
        if (field == null || value == null) {
            throw new NullPointerException();
        }

        if (getStatus(field) == FieldStatus.UNACCESSIBLE) {
            throw new IllegalStateException("Cannot write an unaccessible field");
        }

        String newVal = ProfileFieldConverter.forField(field).toStorageString(value);
        String currentVal = mFields.getString(field.getIdentifier());

        if (newVal.equals(currentVal)) {
            return;
        }

        if (getStatus(field) == FieldStatus.ORIGINAL) {
            setStatus(field.getIdentifier(), FieldStatus.MODIFIED);
        }

        mFields.putString(field.getIdentifier(), newVal);
    }
public <E> void setFieldValue(ProfileField<E> field, E value) {
        if (field == null || value == null) {
            throw new NullPointerException();
        }

        if (getStatus(field) == FieldStatus.UNACCESSIBLE) {
            throw new IllegalStateException("Cannot write an unaccessible field");
        }

        String newVal = ProfileFieldConverter.forField(field).toStorageString(value);
        String currentVal = mFields.getString(field.getIdentifier());

        if (newVal.equals(currentVal)) {
            return;
        }

        if (getStatus(field) == FieldStatus.ORIGINAL) {
            setStatus(field.getIdentifier(), FieldStatus.MODIFIED);
        }

        mFields.putString(field.getIdentifier(), newVal);
    }
Sets the value of a field in the container. After the first set of a field, calling {@link
ProfileFieldContainer#isModified(ProfileField))} with it as parameter will return true.

@param field - the fiel whose value to set
@param value - the new value of the field.