package com.ojn.gexf4j.core.impl;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.ojn.gexf4j.core.Metadata;
public class MetadataImpl implements Metadata {
private String creator = null;
private String description = null;
private List<String> keywords = null;
private Date lastModified = null;
public MetadataImpl() {
keywords = new ArrayList<String>();
}
@Override
public List<String> getKeywords() {
return keywords;
}
@Override
public boolean hasCreator() {
return (creator != null);
}
@Override
public Metadata clearCreator() {
creator = null;
return this;
}
@Override
public String getCreator() {
checkState(hasCreator(), "Creator has not been set.");
return creator;
}
@Override
public Metadata setCreator(String creator) {
checkArgument(creator != null, "Creator cannot be set to null.");
this.creator = creator;
return this;
}
@Override
public boolean hasDescription() {
return (description != null);
}
@Override
public Metadata clearDescription() {
description = null;
return this;
}
@Override
public String getDescription() {
checkState(hasDescription(), "Description has not been set.");
return description;
}
@Override
public Metadata setDescription(String description) {
checkArgument(description != null, "Description cannot be set to null.");
this.description = description;
return this;
}
@Override
public boolean hasLastModified() {
return (lastModified != null);
}
@Override
public Metadata clearLastModified() {
lastModified = null;
return this;
}
@Override
public Date getLastModified() {
checkState(hasLastModified(), "Last Modified has not been set.");
return lastModified;
}
@Override
public Metadata setLastModified(Date lastModified) {
checkArgument(lastModified != null, "Last Modified cannot be set to null.");
this.lastModified = lastModified;
return this;
}
@Override
public Metadata clearMetadata() {
creator = null;
description = null;
lastModified = null;
keywords.clear();
return this;
}
@Override
public boolean isEmpty() {
return (getKeywords().size() == 0 &&
!hasCreator() &&
!hasDescription() &&
!hasLastModified());
}
}