![JAR search and dependency download from the Maven repository](/logo.png)
org.attribyte.wp.model.User Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wpdb Show documentation
Show all versions of wpdb Show documentation
A database API for Wordpress.
The newest version!
/*
* Copyright 2016 Attribyte, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
package org.attribyte.wp.model;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import java.util.Collection;
import java.util.List;
import static org.attribyte.wp.Util.slugify;
/**
* An immutable user.
*/
public class User {
/**
* Creates a user with a slug.
* @param id The unique id.
* @param username The username.
* @param displayName The display name.
* @param slug The slug.
* @param email The email.
* @param createTimestamp The create timestamp.
* @param metadata Associated metadata.
*/
public User(final long id, final String username, final String displayName,
final String slug,
final String email,
final long createTimestamp,
final Collection metadata) {
this.id = id;
this.username = username;
this.displayName = displayName;
this.slug = slug;
this.email = email;
this.createTimestamp = createTimestamp;
this.metadata = metadata != null ? ImmutableList.copyOf(metadata) : ImmutableList.of();
}
/**
* Creates a user with a generated slug.
* @param id The unique id.
* @param username The username.
* @param displayName The display name.
* @param email The email.
* @param createTimestamp The create timestamp.
* @param metadata Associated metadata.
*/
public User(final long id, final String username, final String displayName,
final String email,
final long createTimestamp,
final Collection metadata) {
this.id = id;
this.username = username;
this.displayName = displayName;
this.email = email;
this.createTimestamp = createTimestamp;
this.metadata = metadata != null ? ImmutableList.copyOf(metadata) : ImmutableList.of();
this.slug = slugify(displayName());
}
/**
* Creates a user with a new id.
* @param id The new id.
* @return The user with new id.
*/
public User withId(final long id) {
return new User(id, username, displayName, slug, email, createTimestamp, metadata);
}
/**
* Creates a user with added metadata.
* @param metadata The metadata.
* @return The user with metadata added.
*/
public User withMetadata(final List metadata) {
return new User(id, username, displayName, slug, email, createTimestamp, metadata);
}
/**
* The user id.
*/
public final long id;
/**
* The username.
*/
public final String username;
/**
* The display name, if set, otherwise the username.
* @return The display name to use.
*/
public final String displayName() {
return Strings.nullToEmpty(displayName).trim().isEmpty() ? username : displayName;
}
/**
* The display name.
*/
public final String displayName;
/**
* The email.
*/
public final String email;
/**
* The time user was created.
*/
public final long createTimestamp;
/**
* Metadata associated with the user.
*/
public final ImmutableList metadata;
/**
* A slug for the author.
*/
public final String slug;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy