/**
* Este arquivo é parte do Biblivre3.
*
* Biblivre3 é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 3 da
* Licença, ou (caso queira) qualquer versão posterior.
*
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de
* MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
* com este programa, Se não, veja em <http://www.gnu.org/licenses/>.
*
* @author Alberto Wagner <alberto@biblivre.org.br>
* @author Danniel Willian <danniel@biblivre.org.br>
*
*/
package biblivre3.cataloging.holding;
import biblivre3.enums.Availability;
import biblivre3.enums.Database;
import biblivre3.utils.NaturalOrderComparator;
import java.util.Date;
import java.util.Properties;
import mercury.DTO;
import mercury.I18nUtils;
import mercury.IFJson;
import org.apache.commons.lang.StringUtils;
import org.json.JSONException;
import org.json.JSONObject;
/**
*
* @author Danniel Nascimento (dannielwillian@biblivre.org.br)
* @since 09/03/2009
*/
public class HoldingDTO extends DTO implements IFJson, Comparable<Object> {
private Integer serial;
private Integer recordSerial;
private String assetHolding;
private String locationD;
private Database database;
private Date created;
private Date modified;
private String iso2709;
private Boolean lent;
private Availability availability;
private String[] location;
private String marc;
private JSONObject json;
public final Availability getAvailability() {
return availability;
}
public final void setAvailability(Availability availability) {
this.availability = availability;
}
public final Integer getRecordSerial() {
return recordSerial;
}
public final void setRecordSerial(Integer recordSerial) {
this.recordSerial = recordSerial;
}
public Database getDatabase() {
return database;
}
public void setDatabase(Database database) {
this.database = database;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getModified() {
return modified;
}
public void setModified(Date modified) {
this.modified = modified;
}
public final String getIso2709() {
return iso2709;
}
public final void setIso2709(String iso2709) {
this.iso2709 = iso2709;
}
public final Integer getSerial() {
return serial;
}
public final void setSerial(Integer serial) {
this.serial = serial;
}
public JSONObject getJson() {
return json;
}
public void setJson(JSONObject json) {
this.json = json;
}
public String getMarc() {
return marc;
}
public void setMarc(String marc) {
this.marc = marc;
}
public Boolean getLent() {
return lent;
}
public void setLent(Boolean lent) {
this.lent = lent;
}
public String[] getLocation() {
return location;
}
public void setLocation(String[] location) {
this.location = location;
}
public String getAssetHolding() {
return assetHolding;
}
public void setAssetHolding(String assetHolding) {
this.assetHolding = assetHolding;
}
public String getLocationD() {
return locationD;
}
public void setLocationD(String locationD) {
this.locationD = locationD;
}
@Override
public JSONObject toJSONObject(Properties properties) {
JSONObject data = new JSONObject();
try {
data.put("serial", this.getSerial());
data.putOpt("created", this.getCreated());
if (this.getAvailability() != null) {
data.putOpt("available_text", I18nUtils.getText(properties, this.getAvailability().getLabel()));
data.putOpt("available", this.getAvailability().ordinal());
}
if (this.getLent() != null) {
String lentLabel = this.lent ? I18nUtils.getText(properties, "LABEL_IS_LENT") : I18nUtils.getText(properties, "LABEL_IS_NOT_LENT");
data.putOpt("lent", lentLabel);
}
final String iLocation = StringUtils.join(this.getLocation(), " ");
if (StringUtils.isNotBlank(iLocation)) {
data.put("location", iLocation);
}
data.putOpt("assetHolding", this.getAssetHolding());
data.putOpt("location_d", this.getLocationD());
if (this.getJson() != null) {
data.put("data", this.getJson());
}
if (this.getMarc() != null) {
data.put("data", this.getMarc());
}
} catch (JSONException e) {}
return data;
}
@Override
public int compareTo(Object o) {
if (o == null) {
return 0;
}
if (!(o instanceof HoldingDTO)) {
return 0;
}
return NaturalOrderComparator.NUMERICAL_ORDER.compare(this.getAssetHolding(), ((HoldingDTO) o).getAssetHolding());
}
}