/* * 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 */ /** * This class is generated by jOOQ */ package de.chaosfisch.google.youtube.upload; 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 org.joda.time.DateTime; import org.joda.time.Duration; import org.joda.time.Instant; import java.io.File; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class Upload { @Deprecated private transient Calendar dateOfStart; @Deprecated private transient Calendar dateOfRelease; private final CopyOnWriteArrayList<Playlist> playlists = new CopyOnWriteArrayList<>(); private Social social = new Social(); private Status status = new Status(); private Monetization monetization = new Monetization(); private Permissions permissions = new Permissions(); private Metadata metadata = new Metadata(); private String mimetype = "application/octet-stream"; private String id; private File file; private String uploadurl; private DateTime dateTimeOfStart; private int order; private DateTime dateTimeOfRelease; private boolean pauseOnFinish; private String videoid; private File enddir; private File thumbnail; private Account account; public int getOrder() { return order; } public void setOrder(final int order) { this.order = order; } public interface Validation { int MAX_THUMBNAIL_SIZE = 2097152; int MAX_TITLE_SIZE = 100; int MAX_DESCRIPTION_SIZE = 5000; String ACCOUNT = "accountNull"; String FILE = "fileNullNotExisting"; String ENDDIR = "enddirNotExisting"; String THUMBNAIL = "thumbnailNotExsiting"; String THUMBNAIL_SIZE = "thumbnailSize"; String TITLE = "titleNull"; String TITLE_SIZE = "titleSize"; String TITLE_CHARACTERS = "titleCharacters"; String CATEGORY = "categoryNull"; String DESCRIPTION_SIZE = "descriptionNull"; String DESCRIPTION_CHARACTERS = "descriptionCharacters"; String KEYWORD = "keywordIllegal"; } public Upload() { } public Upload(final Account account, final File file) { if (null == account) { throw new IllegalArgumentException(Validation.ACCOUNT); } this.account = account; setFile(file); } public String getId() { return id; } public void setId(final String id) { this.id = id; } public File getFile() { return file; } public void setFile(final File file) { if (null == file || !file.exists()) { throw new IllegalArgumentException(Validation.FILE); } this.file = file; } public String getMimetype() { return mimetype; } public void setMimetype(final String mimetype) { this.mimetype = mimetype; } public String getUploadurl() { return uploadurl; } public void setUploadurl(final String uploadurl) { this.uploadurl = uploadurl; } public DateTime getDateTimeOfStart() { return dateTimeOfStart; } public void setDateTimeOfStart(final DateTime dateTimeOfStart) { if (null == dateTimeOfStart || dateTimeOfStart.isBefore(Instant.now().minus(Duration.standardSeconds(5)))) { this.dateTimeOfStart = null; } else { this.dateTimeOfStart = dateTimeOfStart; } } public DateTime getDateTimeOfRelease() { return dateTimeOfRelease; } @SuppressWarnings("MagicNumber") public void setDateTimeOfRelease(final DateTime dateTimeOfRelease) { if (null == dateTimeOfRelease || dateTimeOfRelease.isBeforeNow()) { this.dateTimeOfRelease = null; } else { final int mod = dateTimeOfRelease.getMinuteOfHour() % 30; this.dateTimeOfRelease = dateTimeOfRelease.plusMinutes(16 > mod ? -mod : 30 - mod) .minuteOfHour() .roundFloorCopy(); } } public boolean isPauseOnFinish() { return pauseOnFinish; } public void setPauseOnFinish(final boolean pauseOnFinish) { this.pauseOnFinish = pauseOnFinish; } public String getVideoid() { return videoid; } public void setVideoid(final String videoid) { this.videoid = videoid; } public File getEnddir() { return enddir; } public void setEnddir(final File enddir) { if (null != enddir && !enddir.exists()) { throw new IllegalArgumentException(Validation.ENDDIR); } this.enddir = enddir; } public File getThumbnail() { return thumbnail; } public void setThumbnail(final File thumbnail) { if (null != thumbnail) { if (!thumbnail.exists()) { throw new IllegalArgumentException(Validation.THUMBNAIL); } else if (Validation.MAX_THUMBNAIL_SIZE < thumbnail.length()) { throw new IllegalArgumentException(Validation.THUMBNAIL_SIZE); } } this.thumbnail = thumbnail; } public Social getSocial() { return social; } public void setSocial(final Social social) { this.social = social; } public Status getStatus() { return status; } public void setStatus(final Status status) { this.status = status; } 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 Account getAccount() { return account; } public void setAccount(final Account account) { this.account = account; } public List<Playlist> getPlaylists() { return new ArrayList<>(playlists); } public void setPlaylists(final List<Playlist> playlists) { this.playlists.clear(); this.playlists.addAll(playlists); } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (!(obj instanceof Upload)) { return false; } final Upload upload = (Upload) obj; return !(null != id ? !id.equals(upload.id) : null != upload.id); } @Override public int hashCode() { return null != id ? id.hashCode() : 0; } }