package com.belladati.sdk.domain.impl;
import com.belladati.sdk.BellaDatiService;
import com.belladati.sdk.domain.Domain;
import com.belladati.sdk.domain.DomainInfo;
import com.belladati.sdk.exception.impl.InvalidDomainException;
import com.belladati.sdk.user.User;
import com.belladati.sdk.user.UserGroup;
import com.belladati.sdk.util.CachedList;
import com.fasterxml.jackson.databind.JsonNode;
public class DomainInfoImpl implements DomainInfo {
private final BellaDatiService service;
private final String id;
private final String name;
private final String description;
private final boolean active;
public DomainInfoImpl(BellaDatiService service, JsonNode json) {
if (!json.hasNonNull("id") || !json.hasNonNull("name") || !json.hasNonNull("active")) {
throw new InvalidDomainException(json);
}
this.service = service;
this.id = json.get("id").asText();
this.name = json.get("name").asText();
this.description = json.hasNonNull("description") ? json.get("description").asText() : "";
this.active = json.get("active").asBoolean();
}
@Override
public String getId() {
return id;
}
@Override
public String getName() {
return name;
}
@Override
public String getDescription() {
return description;
}
@Override
public boolean getActive() {
return active;
}
@Override
public Domain loadDetails() {
return service.loadDomain(id);
}
@Override
public CachedList<User> loadUsers(String userGroupId) {
return service.getDomainUsers(id, userGroupId);
}
@Override
public CachedList<UserGroup> loadUserGroups() {
return service.getDomainUserGroups(id);
}
@Override
public String toString() {
return name;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof DomainInfoImpl) {
return id.equals(((DomainInfoImpl) obj).id);
}
return false;
}
@Override
public int hashCode() {
return id.hashCode();
}
}