001package service.tut.pori.apilta.files.datatypes;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import javax.xml.bind.annotation.XmlAccessType;
007import javax.xml.bind.annotation.XmlAccessorType;
008import javax.xml.bind.annotation.XmlElement;
009import javax.xml.bind.annotation.XmlRootElement;
010
011import core.tut.pori.http.ResponseData;
012
013/**
014 * list of file details.
015 */
016@XmlRootElement(name=Definitions.ELEMENT_FILE_DETAILS_LIST)
017@XmlAccessorType(XmlAccessType.NONE)
018public class FileDetailsList extends ResponseData {
019  @XmlElement(name=Definitions.ELEMENT_FILE_DETAILS)
020  private List<FileDetails> _files = null;
021
022  /**
023   * @return the files
024   * @see #setFiles(List)
025   */
026  public List<FileDetails> getFiles() {
027    return _files;
028  }
029
030  /**
031   * @param files the files to set
032   * @see #getFiles()
033   */
034  public void setFiles(List<FileDetails> files) {
035    _files = files;
036  }
037  
038  /**
039   * 
040   * @param details
041   * @see #getFiles()
042   */
043  public void addFile(FileDetails details) {
044    if(_files == null){
045      _files = new ArrayList<>();
046    }
047    _files.add(details);
048  }
049  
050  /**
051   * for sub-classing, use the static
052   * 
053   * @return true if empty
054   * @see #isEmpty(FileDetailsList)
055   */
056  protected boolean isEmpty() {
057    return (_files == null || _files.isEmpty());
058  }
059  
060  /**
061   * 
062   * @param list
063   * @return true if list is null or empty
064   */
065  public static boolean isEmpty(FileDetailsList list) {
066    return (list == null || list.isEmpty());
067  }
068  
069  /**
070   * for sub-classing, use the static
071   * 
072   * @return true if valid
073   * @see #isValid(FileDetailsList)
074   */
075  protected boolean isValid() {
076    if(isEmpty()){
077      return false;
078    }else{
079      for(FileDetails details : _files){
080        if(!FileDetails.isValid(details)){
081          return false;
082        }
083      }
084      return true;
085    }
086  }
087  
088  /**
089   * 
090   * @param list
091   * @return true if the list is not null and valid
092   */
093  public static boolean isValid(FileDetailsList list) {
094    return (list != null && list.isValid());
095  }
096}