package com.kdcloud.lib.domain;
import java.util.LinkedList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="index")
public class Index {
static class Link {
@XmlAttribute
String href;
public Link() {
}
public Link(String href) {
super();
this.href = href;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
static class Item {
Link reference;
Link metadata;
}
@XmlElement(name="item")
List<Item> items = new LinkedList<Index.Item>();
public void add(String referenceUrl, String metadataUrl) {
Item item = new Item();
item.reference = new Link(referenceUrl);
item.metadata = new Link(metadataUrl);
items.add(item);
}
public void addAll(Index other) {
items.addAll(other.items);
}
public int size() {
return items.size();
}
private String addBaseUrl(String baseUrl, String href) {
if (href.charAt(0) == '/')
return baseUrl + href;
return baseUrl + "/" + href;
}
public void setReferencesBaseUrl(String baseUrl) {
for (Item i : items) {
if (i.reference != null)
i.reference.href = addBaseUrl(baseUrl, i.reference.href);
}
}
public void setMetadataBaseUrl(String baseUrl) {
for (Item i : items) {
if (i.metadata != null)
i.metadata.href = addBaseUrl(baseUrl, i.metadata.href);
}
}
public void setBaseUrl(String baseUrl) {
setReferencesBaseUrl(baseUrl);
setMetadataBaseUrl(baseUrl);
}
public List<String> getAllReferences() {
LinkedList<String> list = new LinkedList<String>();
for (Item i : items) {
if (i.reference != null)
list.add(i.reference.href);
}
return list;
}
public List<String> getAllMetadataUrl() {
LinkedList<String> list = new LinkedList<String>();
for (Item i : items) {
if (i.metadata != null)
list.add(i.metadata.href);
}
return list;
}
}