All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jresearch.commons.base.domain.DomainJpa Maven / Gradle / Ivy

The newest version!
package org.jresearch.commons.base.domain;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import javax.persistence.MappedSuperclass;

import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;

import one.util.streamex.EntryStream;
import one.util.streamex.StreamEx;

@MappedSuperclass
public abstract class DomainJpa extends AppObject {

	public abstract Long getId();

	public abstract void setId(Long id);

	@SuppressWarnings({ "nls", "null" })
	@Override
	public String toString() {
		return MoreObjects.toStringHelper(this)
				.omitNullValues()
				.add("id", getId())
				.toString();
	}

	@SuppressWarnings("boxing")
	@Override
	public int hashCode() {
		return Objects.hashCode(super.hashCode(), getId());
	}

	@SuppressWarnings("null")
	@Override
	public boolean equals(final Object object) {
		if (object instanceof DomainJpa) {
			if (!super.equals(object)) {
				return false;
			}
			final DomainJpa that = (DomainJpa) object;
			return Objects.equal(this.getId(), that.getId());
		}
		return false;
	}

	public static Long id(final DomainJpa object) {
		return Optional.ofNullable(object).map(DomainJpa::getId).orElse(null);
	}

	public static List id(final Collection objects) {
		return objects == null ? ImmutableList.of() : StreamEx.of(objects).map(DomainJpa::getId).toList();
	}

	public static Map id(final Map objects) {
		return objects == null ? ImmutableMap.of() : EntryStream.of(objects).mapValues(DomainJpa::getId).toMap();
	}

	@Deprecated
	public static List ids(final Collection objects) {
		return id(objects);
	}

	@Deprecated
	public static Map ids(final Map objects) {
		return id(objects);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy