/*
* Copyright (c) 2014 Dennis Fischer.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0+
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors: Dennis Fischer
*/
package de.chaosfisch.uploader.template;
import com.google.common.base.Strings;
import de.chaosfisch.google.account.Account;
import de.chaosfisch.google.youtube.playlist.Playlist;
import de.chaosfisch.google.youtube.upload.metadata.Metadata;
import de.chaosfisch.google.youtube.upload.metadata.Monetization;
import de.chaosfisch.google.youtube.upload.metadata.Social;
import de.chaosfisch.google.youtube.upload.metadata.permissions.Permissions;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class Template {
private final List<Playlist> playlists = new CopyOnWriteArrayList<>();
private File defaultdir = new File(System.getProperty("user.home"));
private Social social = new Social();
private Monetization monetization = new Monetization();
private Permissions permissions = new Permissions();
private Metadata metadata = new Metadata();
private String id;
private File enddir;
private File thumbnail;
private String name;
private Account account;
public interface Validation {
String NAME = "NAME";
}
private Template() {
}
public Template(final String name) {
setName(name);
}
@Override
public String toString() {
return name;
}
public String getId() {
return id;
}
public void setId(final String id) {
this.id = id;
}
public File getDefaultdir() {
return defaultdir;
}
public void setDefaultdir(final File defaultdir) {
this.defaultdir = defaultdir;
}
public File getEnddir() {
return enddir;
}
public void setEnddir(final File enddir) {
this.enddir = enddir;
}
public File getThumbnail() {
return thumbnail;
}
public void setThumbnail(final File thumbnail) {
this.thumbnail = thumbnail;
}
public Account getAccount() {
return account;
}
public void setAccount(final Account account) {
this.account = account;
}
public Social getSocial() {
return social;
}
public void setSocial(final Social social) {
this.social = social;
}
public Monetization getMonetization() {
return monetization;
}
public void setMonetization(final Monetization monetization) {
this.monetization = monetization;
}
public Permissions getPermissions() {
return permissions;
}
public void setPermissions(final Permissions permissions) {
this.permissions = permissions;
}
public Metadata getMetadata() {
return metadata;
}
public void setMetadata(final Metadata metadata) {
this.metadata = metadata;
}
public List<Playlist> getPlaylists() {
return new ArrayList<>(playlists);
}
public void setPlaylists(final List<Playlist> playlists) {
this.playlists.clear();
this.playlists.addAll(playlists);
}
public String getName() {
return name;
}
public void setName(final String name) {
if (Strings.isNullOrEmpty(name)) {
throw new IllegalArgumentException(Validation.NAME);
}
this.name = name;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof Template)) {
return false;
}
final Template template = (Template) obj;
return !(null != id ? !id.equals(template.id) : null != template.id);
}
@Override
public int hashCode() {
return null != id ? id.hashCode() : 0;
}
}