package tc.oc.pgm.goals;
import java.util.Optional;
import tc.oc.pgm.teams.TeamFactory;
import javax.annotation.Nullable;
import static com.google.common.base.Preconditions.checkNotNull;
public abstract class OwnableGoalDefinitionImpl<G extends Goal<?>> extends GoalDefinitionImpl<G> implements OwnableGoalDefinition<G> {
@Inspect(brief=true)
private final Optional<TeamFactory> owner;
public OwnableGoalDefinitionImpl(String name, @Nullable Boolean required, boolean visible, Optional<TeamFactory> owner) {
super(name, required, visible);
this.owner = checkNotNull(owner);
}
@Override
public String defaultSlug() {
final String slug = super.defaultSlug();
return owner().map(team -> slug + "-" + team.defaultSlug())
.orElse(slug);
}
@Override
public Optional<TeamFactory> owner() {
return owner;
}
}