package de.geeksfactory.opacclient.objects;
import java.io.Serializable;
public abstract class AccountItem implements Serializable {
protected long account;
protected String title;
protected String author;
protected String format;
protected SearchResult.MediaType mediaType;
protected String id;
protected String status;
protected Long dbId;
protected String cover;
/**
* @return The ID of the account this item is associated with
*/
public long getAccount() {
return account;
}
/**
* Set the ID of the account this item is associated with. Does not need to be set by the API
* implementation.
*/
public void setAccount(long account) {
this.account = account;
}
/**
* @return The Title of this item
*/
public String getTitle() {
return title;
}
/**
* Set title.
*/
public void setTitle(String title) {
this.title = title;
}
/**
* @return The author of this item. Optional.
*/
public String getAuthor() {
return author;
}
/**
* Set author. Optional.
*/
public void setAuthor(String author) {
this.author = author;
}
/**
* @return The format of this item. Optional.
*/
public String getFormat() {
return format;
}
/**
* Set item format. Optional.
* Use this if the OPAC shows a string representation of the item format. If you can recognize
* the media type, use {@link #setMediaType(SearchResult.MediaType)} instead.
*/
public void setFormat(String format) {
this.format = format;
}
/**
* @return The media type of this item. Optional.
*/
public SearchResult.MediaType getMediaType() {
return mediaType;
}
/**
* Set the media type of this item. Optional.
*/
public void setMediaType(SearchResult.MediaType mediaType) {
this.mediaType = mediaType;
}
/**
* @return media ID to open detail page, if possible.
*/
public String getId() {
return id;
}
/**
* Set media ID to open detail page, if possible.
*/
public void setId(String id) {
this.id = id;
}
/**
* @return status of an item. Some libraries use codes like "E" for "first lending period", "1"
* for "lending period extended once", etc. Optional.
*/
public String getStatus() {
return status;
}
/**
* Set status of an item. Some libraries use codes like "E" for "first lending period", "1" for
* "lending period extended once", etc. Optional.
*/
public void setStatus(String status) {
this.status = status;
}
/**
* @return ID for this item in the local account database. Is only available when it was
* retreived from the database.
*/
public Long getDbId() {
return dbId;
}
/**
* Set ID for this item in the local account database. Must not be set by the API
* implementation.
*/
public void setDbId(Long dbId) {
this.dbId = dbId;
}
/**
* @return A cover URL for this item. Optional.
*/
public String getCover() {
return cover;
}
/**
* Set a cover URL for this item. Optional.
*/
public void setCover(String cover) {
this.cover = cover;
}
/**
* Set property using the following keys: LentItem: barcode, returndate, homebranch,
* lendingbranch, prolongurl, renewable, download
*
* ReservedItem: availability, expirationdate, branch, cancelurl, bookingurl
*
* Both: title, author, format, id, status
*
* @param key one of the keys mentioned above
* @param value the value to set. Dates must be in ISO-8601 format (yyyy-MM-dd) and booleans as
* "Y"/"N".
*/
public void set(String key, String value) {
if ("".equals(value)) {
value = null;
}
switch (key) {
case "title":
setTitle(value);
break;
case "author":
setAuthor(value);
break;
case "format":
setFormat(value);
break;
case "id":
setId(value);
break;
case "status":
setStatus(value);
break;
case "cover":
setCover(value);
break;
case "mediatype":
setMediaType(SearchResult.MediaType.valueOf(value));
break;
default:
throw new IllegalArgumentException("unknown key: " + key);
}
}
@Override
public String toString() {
return "AccountItem{" +
"account=" + account +
", title='" + title + '\'' +
", author='" + author + '\'' +
", format='" + format + '\'' +
", mediaType=" + mediaType +
", id='" + id + '\'' +
", status='" + status + '\'' +
", dbId=" + dbId +
", cover='" + cover + '\'' +
'}';
}
}