package com.limegroup.gnutella.metadata.video;
import java.util.ArrayList;
import java.util.List;
import org.limewire.util.NameValue;
import com.limegroup.gnutella.metadata.MetaData;
import com.limegroup.gnutella.xml.LimeXMLDocument;
import com.limegroup.gnutella.xml.LimeXMLNames;
/**
* A composite of video data for marshalling it to and from disk. When loading
* meta-data from video files to LimeXMLDocuments and when writing LimeXMLDocument
* updates to disk.
*/
public class VideoMetaData implements MetaData {
private String title;
private String year;
private int length = -1;
private String comment;
private String language;
private String license;
private int width = -1;
private int height = -1;
private String licensetype;
public String getTitle() { return title; }
public String getYear() { return year; }
public int getLength() { return length; }
public String getComment() { return comment; }
public String getLanguage() { return language; }
public String getLicense() { return license; }
public int getWidth() { return width; }
public int getHeight() { return height; }
public String getLicenseType() { return licensetype; }
public void setTitle(String title) { this.title = title; }
public void setYear(String year) { this.year = year; }
public void setLength(int length) { this.length = length; }
public void setComment(String comment) { this.comment = comment; }
public void setLanguage(String language) { this.language = language; }
public void setLicense(String license) { this.license = license; }
public void setWidth(int width) { this.width = width; }
public void setHeight(int height) { this.height = height; }
public void setLicenseType(String licensetype) { this.licensetype = licensetype; }
/**
* The XML schema this data represents.
*/
public String getSchemaURI() {
return LimeXMLNames.VIDEO_SCHEMA;
}
/**
* Populates the fields with the values from the LimeXMLDocument.
*/
public void populate(LimeXMLDocument doc) {
title = doc.getValue(LimeXMLNames.VIDEO_TITLE);
year = doc.getValue(LimeXMLNames.VIDEO_YEAR);
comment = doc.getValue(LimeXMLNames.VIDEO_COMMENTS);
language = doc.getValue(LimeXMLNames.VIDEO_LANGUAGE);
license = doc.getValue(LimeXMLNames.VIDEO_LICENSE);
}
/**
* @return the values as a Name Value List representation
*/
public List<NameValue<String>> toNameValueList() {
List<NameValue<String>> list = new ArrayList<NameValue<String>>();
add(list, title, LimeXMLNames.VIDEO_TITLE);
add(list, year, LimeXMLNames.VIDEO_YEAR);
add(list, length, LimeXMLNames.VIDEO_LENGTH);
add(list, comment, LimeXMLNames.VIDEO_COMMENTS);
add(list, language, LimeXMLNames.VIDEO_LANGUAGE);
add(list, license, LimeXMLNames.VIDEO_LICENSE);
add(list, width, LimeXMLNames.VIDEO_WIDTH);
add(list, height, LimeXMLNames.VIDEO_HEIGHT);
add(list, licensetype, LimeXMLNames.VIDEO_LICENSETYPE);
return list;
}
private void add(List<NameValue<String>> list, String value, String key) {
if(isValid(value))
list.add(new NameValue<String>(key, value.trim()));
}
private void add(List<NameValue<String>> list, int value, String key) {
if(isValid(value))
list.add(new NameValue<String>(key, "" + value));
}
private boolean isValid(String s) {
return s != null && !s.trim().equals("");
}
private boolean isValid(int i) {
return i >= 0;
}
}