de.berlios.jhelpdesk.model.AdditionalFile.java Source code

Java tutorial

Introduction

Here is the source code for de.berlios.jhelpdesk.model.AdditionalFile.java

Source

/*
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, version 3 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * Copyright: (C) 2006 jHelpdesk Developers Team
 */
package de.berlios.jhelpdesk.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.io.FileUtils;

/**
 * Pliki w systemie, ktre s doczane do zgoszenia. Do kadego zgoszenia mona
 * doczy dowoln (ograniczon przestrzeni dyskow) ilo plikw. W bazie danych
 * przechowujemy informacje o plikach, same za plik we wskazanym katalogu. Pliki
 * z zaoenia maj pomc osobie zajmujcej si zgoszeniem rozwiza problem.
 *
 * @author jjhop
 */
@Entity
@Table(name = "ticket_additional_files")
@SequenceGenerator(name = "ticket_add_files_id_seq", sequenceName = "ticket_add_files_id_seq", allocationSize = 1)
public class AdditionalFile implements Serializable {

    /**
     * Identyfikator pliku
     */
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ticket_add_files_id_seq")
    @Column(name = "id")
    private Long fileId;

    @ManyToOne
    @JoinColumn(name = "ticket_id")
    private Ticket ticket;

    /**
     * Nazwa pliku.
     */
    @Column(name = "original_filename", length = 128, nullable = false)
    private String originalFileName;

    /**
     * Skrt z nazwy pliku i identyfikatora. Pozwala przechowywa wiele plikw
     * o tej samej nazwie w jednym miejscu nie generujc przy tym problemw.
     */
    @Column(name = "hashed_filename", length = 64, nullable = false, unique = true)
    private String hashedFileName;

    /**
     * Rozmiar pliku w bajtach.
     */
    @Column(name = "file_size", nullable = false)
    private Long fileSize;

    /**
     * Typ pliku (np. image/x-png, application/x-word).
     */
    @Column(name = "content_type", length = 64, nullable = false)
    private String contentType;

    /**
     * Zawarto pliku.
     */
    @Transient
    private byte[] fileData;

    /**
     * Zwraca identyfikator pliku.
     * 
     * @return identyfikator pliku
     *
     * @see #fileId
     */
    public Long getFileId() {
        return fileId;
    }

    /**
     * Ustawia identyfikator pliku. Metoda powinna by wykorzystywana
     * tylko podczas przepisywania danych o pliku z bazy danych.
     * 
     * @param fileId identyfikator pliku
     *
     * @see #fileId
     * @see #getFileId() 
     */
    public void setFileId(Long fileId) {
        this.fileId = fileId;
    }

    /**
     * Zwraca Ticket, z ktrym powizany jest plik.
     * 
     * @return Ticket, z ktrym powizany jest plik
     */
    public Ticket getTicket() {
        return ticket;
    }

    /**
     * Ustala powizanie pliku z Ticketem.
     *
     * @param ticket ticket, z ktrym ma by powizany plik.
     */
    public void setTicket(Ticket ticket) {
        this.ticket = ticket;
    }

    /**
     * Zwraca typ pliku. Jest to acuch w postaci podobnej do "image/gif".
     *
     * @return typ pliku
     *
     * @see #contentType
     */
    public String getContentType() {
        return contentType;
    }

    /**
     * Ustawia informacj o typie pliku. Naley ostronie korzysta z tej metody,
     * lub najlepiej po pierwszym ustawieniu (waciwego typu) nie wykorzystywa
     * jej ju w ogle. Od tego czasu powinna by wykorzystywana tylko podczas
     * przepisywania danych z bazy.
     *
     * @param contentType typ plik
     *
     * @see #contentType
     * @see #getContentType() 
     */
    public void setContentType(String contentType) {
        this.contentType = contentType;
    }

    /**
     * Zwraca zawarto pliku w postaci tablicy surowych bajtw.
     * 
     * @return zawarto pliku
     *
     * @see #fileData
     */
    public byte[] getFileData() {
        return fileData;
    }

    /**
     * Zapisuje w obiekcie zawarto pliku. Plik z zaoenia jest niezmienny wic
     * po zapisaniu go po raz pierwszy z tej metody powinnie korzysta tylko mechanizm
     * przepisywania informacji z bazy danych.
     * 
     * @param fileData zawarto pliku
     *
     * @see #fileData
     * @see #getFileData() 
     */
    public void setFileDate(byte[] fileData) {
        this.fileData = fileData;
    }

    /**
     * Zwraca rozmiar pliku w bajtach. Jest to waciwie rozmiar tablicy z danymi<br/>
     * {@code getFileSize().toInt() == getFileData().length}.
     *
     * @return rozmiar pliku w bajtach
     *
     * @see #fileSize
     * @see #fileData
     * @see #getFileData()
     */
    public Long getFileSize() {
        return fileSize;
    }

    /**
     * Ustawia rozmiar pliku (warto w bajtach). Po pierwszym uyciu rozmiar nie powinien by
     * zmieniany i od tego momentu metoda powinna by wykorzystaywan tylko przez mechanizm
     * przepisujcy informacje z bazy danych.
     *
     * @param fileSize rozmiar pliku w bajtach
     *
     * @see #fileSize
     * @see #getFileSize()
     * @see #fileData
     * @see #getFileData() 
     */
    public void setFileSize(Long fileSize) {
        this.fileSize = fileSize;
    }

    /**
     * Zwraca rozmiar plik sformatowany w sposb czytelny dla czowieka.
     * 
     * @return rozmiar plik sformatowany w sposb czytelny dla czowieka
     *
     * @see FileUtils#byteCountToDisplaySize(long)
     */
    public String getHumanReadableFileSize() {
        return FileUtils.byteCountToDisplaySize(getFileSize());
    }

    /**
     * Zwraca skrt nazwy pliku i identyfikatora.
     *
     * @return skrt nazwy pliku i identyfikatora
     *
     * @see #hashedFileName
     */
    public String getHashedFileName() {
        return hashedFileName;
    }

    /**
     * Ustawia skrt z nazwy pliku i identyfikatora. Metoda powinna by uywana tylko
     * przez mechanizm przepisywania danych z bazy danych.
     *
     * @param hashedFileName skrt nazwy pliku i identyfikatora
     *
     * @see #hashedFileName
     * @see #getHashedFileName() 
     */
    public void setHashedFileName(String hashedFileName) {
        this.hashedFileName = hashedFileName;
    }

    /**
     * Zwraca oryginaln nazw pliku. Jest to nazwa pliku, pod jak bdzie on pokazywany
     * w szczegach zgoszenia.
     * 
     * @return oryginalna nazwa pliku
     *
     * @see #originalFileName
     */
    public String getOriginalFileName() {
        return originalFileName;
    }

    /**
     * Ustawia nazw pliku. Metoda powinna by uywana tylko
     * przez mechanizm przepisywania danych z bazy danych.
     * 
     * @param originalFileName nazwa pliku
     *
     * @see #originalFileName
     * @see #getOriginalFileName() 
     */
    public void setOriginalFileName(String originalFileName) {
        this.originalFileName = originalFileName;
    }
}