package com.psddev.cms.db;
import com.psddev.dari.db.Record;
import com.psddev.dari.db.Recordable;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Recordable.Embedded
public class SiteSpecificContentTemplates extends Record {
@Required
@ToolUi.DropDown
private Set<Site> sites;
@Required
private List<ContentTemplate> contentTemplates;
public Set<Site> getSites() {
if (sites == null) {
sites = new LinkedHashSet<>();
}
return sites;
}
public void setSites(Set<Site> sites) {
this.sites = sites;
}
public List<ContentTemplate> getContentTemplates() {
if (contentTemplates == null) {
contentTemplates = new ArrayList<>();
}
return contentTemplates;
}
public void setContentTemplates(List<ContentTemplate> contentTemplates) {
this.contentTemplates = contentTemplates;
}
@Override
public String getLabel() {
Set<Site> sites = getSites();
List<ContentTemplate> contentTemplates = getContentTemplates();
if (sites.isEmpty() && contentTemplates.isEmpty()) {
return super.getLabel();
}
StringBuilder label = new StringBuilder();
if (!sites.isEmpty()) {
label.append("On ");
label.append(sites.stream()
.map(Site::getLabel)
.collect(Collectors.joining(", ")));
label.append(": ");
}
if (!contentTemplates.isEmpty()) {
label.append(contentTemplates.stream()
.map(ContentTemplate::getLabel)
.collect(Collectors.joining(", ")));
}
return label.toString();
}
}