package com.psddev.cms.db; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import com.psddev.dari.db.Query; import com.psddev.dari.db.Record; import com.psddev.dari.util.ObjectUtils; /** * @deprecated No replacement. Create your own. */ @ContentStream.Embedded @Deprecated public abstract class ContentStream extends Record { public abstract List<?> findContents(int offset, int limit); public static class Mix extends ContentStream { private List<AreasStream> streams; public List<AreasStream> getStreams() { return streams; } public void setStreams(List<AreasStream> streams) { this.streams = streams; } public List<?> findContents(int offset, int limit) { List<Object> contents = new ArrayList<Object>(); for (int i = 0; i < limit; ++ i) { contents.add(null); } for (AreasStream as : getStreams()) { List<Integer> areas = new ArrayList<Integer>(as.getAreas()); int areasSize = areas.size(); List<?> streamContents = as.getStream().findContents(0, areas.size()); int streamContentsSize = streamContents.size(); Collections.sort(areas); for (int i = 0; i < areasSize; ++ i) { contents.set(areas.get(i), i < streamContentsSize ? streamContents.get(i) : null); } } return contents; } } /** * @deprecated No replacement. Create your own. */ @Deprecated @Embedded public static class AreasStream extends Record { @Required private Set<Integer> areas; @Required private ContentStream stream; public Set<Integer> getAreas() { if (areas == null) { areas = new LinkedHashSet<Integer>(); } return areas; } public void setAreas(Set<Integer> areas) { this.areas = areas; } public ContentStream getStream() { return stream; } public void setStream(ContentStream stream) { this.stream = stream; } @Override public String getLabel() { StringBuilder label = new StringBuilder(); Set<Integer> areas = getAreas(); if (!ObjectUtils.isBlank(areas)) { label.append(areas); } return label.toString(); } } /** * @deprecated No replacement. Create your own. */ @Deprecated public static class Search extends ContentStream { @Embedded @Required private Query<?> query; public Query<?> getQuery() { return query; } public void setQuery(Query<?> query) { this.query = query; } @Override public List<?> findContents(int offset, int limit) { return getQuery().select(offset, limit).getItems(); } } /** * @deprecated No replacement. Create your own. */ @Deprecated public static class Static extends ContentStream { private List<Content> contents; public List<Content> getContents() { if (contents == null) { contents = new ArrayList<Content>(); } return contents; } public void setContents(List<Content> contents) { this.contents = contents; } @Override public List<Content> findContents(int offset, int limit) { return getContents(); } } }