/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.service.filehistory; import java.io.*; import java.util.*; import net.java.sip.communicator.service.contactlist.*; /** * File History Service stores info for file transfers from various protocols. * * @author Damian Minkov */ public interface FileHistoryService { /** * Returns all the file transfers made after the given date * * @param contact MetaContact the receiver or sender of the file * @param startDate Date the start date of the transfers * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByStartDate( MetaContact contact, Date startDate) throws RuntimeException; /** * Returns all the file transfers made before the given date * * @param contact MetaContact the receiver or sender of the file * @param endDate Date the end date of the transfers * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByEndDate( MetaContact contact, Date endDate) throws RuntimeException; /** * Returns all the file transfers made between the given dates * * @param contact MetaContact the receiver or sender of the file * @param startDate Date the start date of the transfers * @param endDate Date the end date of the transfers * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByPeriod( MetaContact contact, Date startDate, Date endDate) throws RuntimeException; /** * Returns all the file transfers made between the given dates and * having the given keywords in the filename * * @param contact MetaContact the receiver or sender of the file * @param startDate Date the start date of the transfers * @param endDate Date the end date of the transfers * @param keywords array of keywords * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByPeriod(MetaContact contact, Date startDate, Date endDate, String[] keywords) throws RuntimeException; /** * Returns all the file transfers made between the given dates * and having the given keywords in the filename * * @param contact MetaContact the receiver or sender of the file * @param startDate Date the start date of the transfers * @param endDate Date the end date of the transfers * @param keywords array of keywords * @param caseSensitive is keywords search case sensitive * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByPeriod( MetaContact contact, Date startDate, Date endDate, String[] keywords, boolean caseSensitive) throws RuntimeException; /** * Returns the supplied number of file transfers * * @param contact MetaContact the receiver or sender of the file * @param count filetransfer count * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findLast(MetaContact contact, int count) throws RuntimeException; /** * Returns all the file transfers having the given keyword in the filename * * @param contact MetaContact the receiver or sender of the file * @param keyword keyword * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByKeyword( MetaContact contact, String keyword) throws RuntimeException; /** * Returns all the file transfers having the given keyword in the filename * * @param contact MetaContact the receiver or sender of the file * @param keyword keyword * @param caseSensitive is keywords search case sensitive * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByKeyword( MetaContact contact, String keyword, boolean caseSensitive) throws RuntimeException; /** * Returns all the file transfers having the given keywords in the filename * * @param contact MetaContact the receiver or sender of the file * @param keywords keyword * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByKeywords( MetaContact contact, String[] keywords) throws RuntimeException; /** * Returns all the file transfershaving the given keywords in the filename * * @param contact MetaContact the receiver or sender of the file * @param keywords keyword * @param caseSensitive is keywords search case sensitive * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findByKeywords( MetaContact contact, String[] keywords, boolean caseSensitive) throws RuntimeException; /** * Returns the supplied number of recent file transfers after the given date * * @param contact MetaContact the receiver or sender of the file * @param date transfers after date * @param count transfers count * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findFirstRecordsAfter( MetaContact contact, Date date, int count) throws RuntimeException; /** * Returns the supplied number of recent file transfers before the given date * * @param contact MetaContact the receiver or sender of the file * @param date transfers before date * @param count transfers count * @return Collection of FileRecords * @throws RuntimeException */ public Collection<FileRecord> findLastRecordsBefore( MetaContact contact, Date date, int count) throws RuntimeException; /** * Permanently removes all locally stored file history. * * @throws java.io.IOException * Thrown if the history could not be removed due to a IO error. */ public void eraseLocallyStoredHistory() throws IOException; /** * Permanently removes locally stored file history for the metacontact. * * @throws java.io.IOException * Thrown if the history could not be removed due to a IO error. */ public void eraseLocallyStoredHistory(MetaContact contact) throws IOException; }