package edu.mit.mitmobile2.libraries;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BookItem {
public String id;
public String title;
public String image;
public List<String> author;
public List<String> year;
public List<String> publisher;
public List<String> isbn;
public String url;
public String emailAndCiteMessage;
public List<String> subjects;
public List<String> lang;
public List<String> extent;
public List<String> format;
public List<String> summary;
public List<String> editions;
public List<String> address;
public List<Holding> holdings;
public boolean detailsLoaded = false;
public final static String MITLibrariesOCLCCode = "MYG";
public CharSequence getAuthorsDisplayString() {
StringBuilder builder = new StringBuilder();
if (year != null && year.size() > 0) {
builder.append(this.year.get(0) + "; ");
}
if (author != null) {
for (int i = 0; i < author.size(); i++) {
if (i > 0) {
builder.append(", ");
}
builder.append(author.get(i));
}
}
return builder;
}
/*
public CharSequence getYearsDisplayString() {
if(year != null) {
StringBuilder builder = new StringBuilder();
for(String aYear : year) {
builder.append(aYear + ", ");
}
return builder;
} else {
return null;
}
}
*/
public List<Holding> getHoldingsByOCLCCode(String code) {
ArrayList<Holding> filteredHoldings = new ArrayList<Holding>();
for(Holding holding : holdings) {
if (holding.code.equals(code)){
filteredHoldings.add(holding);
}
}
return filteredHoldings;
}
public static class Holding {
public String library;
public String address;
public String url;
public String code;
public int count;
private ArrayList<Availability> mAvailibitity = new ArrayList<Availability>();
public void addAvailibility(boolean available, String callNumber, String location, String status, String collection) {
mAvailibitity.add(new Availability(available, callNumber, location, status, collection));
}
public List<Availability> getAvailabitity() {
return mAvailibitity;
}
public class Availability {
boolean available;
String callNumber;
String location;
String status;
String collection;
public Availability(boolean available, String callNumber, String location, String status, String collection) {
this.available = available;
this.callNumber = callNumber;
this.location = location;
this.status = status;
this.collection = collection;
}
}
public class Availabilitys {
int available = 0;
int total = 0;
ArrayList<Availability> books = new ArrayList<Availability>();
public List<Availability> getBooks() {
return books;
}
}
public Map<String, Availabilitys> getAvailabilitys() {
HashMap<String, Availabilitys> counts = new HashMap<String, Availabilitys>();
for (Availability availability : mAvailibitity) {
Availabilitys availablitys = null;
if (!counts.containsKey(availability.location)) {
availablitys = new Availabilitys();
counts.put(availability.location, availablitys);
} else {
availablitys = counts.get(availability.location);
}
availablitys.total += 1;
if (availability.available) {
availablitys.available += 1;
}
availablitys.books.add(availability);
}
return counts;
}
}
}