Item.java
package info.textgrid.services.textapi.apiv2;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonPropertyOrder({
"@context",
"textapiVersion",
"id",
"textapiType",
"revision",
"created",
"modified",
"titles",
"division",
"textItemType",
"languages",
"contents"
})
public class Item {
@JsonProperty("@context")
private String context;
private String textapiVersion;
private String id;
private String textapiType;
private String revision;
private String created;
private String modified;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<String> titles = new ArrayList<>();
// Default division value.
// Project-specific overrides (e.g. "page" or "chapter") replace this default after construction.
private String division = "full text";
private String textItemType;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<String> languages = new ArrayList<>();
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Content> contents = new ArrayList<>();
public String getContext() {
return context;
}
public Item setContext(String context) {
this.context = context;
return this;
}
public String getTextapiVersion() {
return textapiVersion;
}
public Item setTextapiVersion(String textapiVersion) {
this.textapiVersion = textapiVersion;
return this;
}
public String getId() {
return id;
}
public Item setId(String id) {
this.id = id;
return this;
}
public String getTextapiType() {
return textapiType;
}
public Item setTextapiType(String textapiType) {
this.textapiType = textapiType;
return this;
}
public String getRevision() {
return revision;
}
public Item setRevision(String revision) {
this.revision = revision;
return this;
}
public String getCreated() {
return created;
}
public Item setCreated(String created) {
this.created = created;
return this;
}
public String getModified() {
return modified;
}
public Item setModified(String modified) {
this.modified = modified;
return this;
}
public List<String> getTitles() {
return titles;
}
public Item setTitles(List<String> titles) {
this.titles = titles;
return this;
}
public Item addTitle(String title) {
this.titles.add(title);
return this;
}
public String getDivision() {
// Safety net: the division field must never be empty in any response,
// so fall back to the default when null or blank.
return division != null && !division.isBlank() ? division : "full text";
}
public Item setDivision(String division) {
this.division = division;
return this;
}
public String getTextItemType() {
return textItemType;
}
public Item setTextItemType(String textItemType) {
this.textItemType = textItemType;
return this;
}
public List<String> getLanguages() {
return languages;
}
public Item setLanguages(List<String> languages) {
this.languages = languages;
return this;
}
public Item addLanguage(String language) {
this.languages.add(language);
return this;
}
public List<Content> getContents() {
return contents;
}
public Item setContents(List<Content> contents) {
this.contents = contents;
return this;
}
public Item addContent(Content content) {
this.contents.add(content);
return this;
}
}