package models;
import managers.FolderManager;
import managers.GroupAccountManager;
import models.base.BaseNotifiable;
import models.base.INotifiable;
import models.enums.LinkType;
import play.data.validation.Constraints.Required;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Media extends BaseNotifiable implements INotifiable {
public static final String MEDIA_NEW_MEDIA = "media_new_media";
@Required
public String title;
@Required
public String fileName;
public String description;
@Required
public String url;
@Required
public String mimetype;
@Required
public Long size;
@ManyToOne
public Account owner;
@Transient
public File file;
@ManyToOne
public Folder folder;
@Transient
public String sizeInByte;
public Folder findRoot() {
return this.folder.findRoot(this.folder);
}
public Group findGroup() {
return this.folder.findRoot(this.folder).group;
}
public Account findAccount() {
return this.folder.findRoot(this.folder).account;
}
@Override
public Account getSender() {
return this.temporarySender;
}
@Override
public List<Account> getRecipients() {
return GroupAccountManager.staticFindAccountsByGroup(folder.group, LinkType.establish);
}
@Override
public String getTargetUrl() {
return controllers.routes.GroupController.media(this.findGroup().id, folder.id).toString();
}
}