Java tutorial
/* * 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; } }