package xapi.model.content;
import xapi.model.X_Model;
import xapi.model.api.KeyBuilder;
import xapi.model.api.ModelBuilder;
import xapi.util.api.ProvidesValue;
import java.util.function.Supplier;
public interface ModelContent extends ModelText, HasVotes, HasAuthor {
String MODEL_CONTENT_TYPE = "content";
ProvidesValue<KeyBuilder> CONTENT_KEY_BUILDER = KeyBuilder.forType(MODEL_CONTENT_TYPE);
ProvidesValue<ModelBuilder<ModelContent>> CONTENT_MODEL_BUILDER = new ProvidesValue<ModelBuilder<ModelContent>>() {
@Override
public ModelBuilder<ModelContent> get() {
return ModelBuilder.build(CONTENT_KEY_BUILDER.get(), new Supplier<ModelContent>() {
@Override
public ModelContent get() {
return X_Model.create(ModelContent.class);
}
})
.withProperty("related", new ModelContent[0])
.withProperty("children", new ModelContent[0])
;
}
};
/**
* @return an array of nodes which are related to this content,
* but not directly contained by this content.
*/
ModelContent[] getRelated();
ModelContent setRelated(ModelContent[] related);
/**
* @return an array of direct child nodes.
*/
ModelContent[] getChildren();
ModelContent setChildren(ModelContent[] children);
String getPermaLink();
ModelContent setPermaLink(String permalink);
}