/** * Copyright (C) Intersect 2012. * * This module contains Proprietary Information of Intersect, * and should be treated as Confidential. */ package au.org.intersect.exsite9.service; import java.util.List; import au.org.intersect.exsite9.domain.Folder; import au.org.intersect.exsite9.domain.MetadataAttributeValue; import au.org.intersect.exsite9.domain.MetadataCategory; import au.org.intersect.exsite9.domain.MetadataValue; import au.org.intersect.exsite9.domain.Project; import au.org.intersect.exsite9.domain.ResearchFile; /** * A Service to provide actions that may be performed with Research Files. */ public interface IResearchFileService { /** * Identifies new files for a project. * @param project The project to identify new files for. */ public void identifyNewFilesForProject(Project project); /** * Identifies new files for a project in a folder. * @param project The project to identify new files for. * @param folder The folder to identify new files in. */ public void identifyNewFilesForFolder(Project project, Folder folder); /** * Associates metadata to a research file. * @param file The file. * @param metadataCategory The metadata category to associate. * @param metadataValue The metadata value to associate. */ public void associateMetadata(final ResearchFile file, final MetadataCategory metadataCategory, final MetadataValue metadataValue, final MetadataAttributeValue metadataAttributeValue); /** * Disassociates metadata from a research file. * @param file The file. * @param metadataCategory The metadata category to disassociate. * @param metadataValue The metadata value to disassociate. */ public void disassociateMetadata(final ResearchFile file, final MetadataCategory metadataCategory, final MetadataValue metadataValue); public void disassociateMetadataAttributeValue(final MetadataCategory metadataCategory, final MetadataAttributeValue metadataAttributeValue); /** * Dissassociates multiple metadata values from a research file. * @param file The file. * @param metadataCategory The metadata category to disassociate. * @param metadataValue The metadata values to disassociate. */ public void disassociateMultipleMetadataValues(final ResearchFile file, final MetadataCategory metadataCategory, final List<MetadataValue> metadataValues); /** * Obtains research files with a metadata association. * @param metadataCategory The metadata category of the association. * @param metadataValue The metadata value of the assocation. * @return The research files with the provided assocation. */ public List<ResearchFile> getResearchFilesWithAssociatedMetadata(final MetadataCategory metadataCategory, final MetadataValue metadataValue); public List<ResearchFile> getResearchFilesWithAssociatedMetadataAttribute(MetadataCategory metadataCategory, MetadataAttributeValue toDelete); /** * Obtains a research file by it's ID. * @param id The ID of the research file to find. * @return The research file. */ public ResearchFile findResearchFileByID(final Long id); /** * Updates a research file. * @param selectionObject The research file to update. */ public void updateResearchFile(ResearchFile selectionObject); /** * Consolidates a sub folder into its parent folder. * @param project The project to perform the consolidation for. * @param parentFolder The parent folder. * @param subFolder The sub folder. */ public void consolidateSubFolderIntoParentFolder(final Project project, final Folder parentFolder, final Folder subFolder); /** * Import an existing folder structure into the project creating new Groups for folders and new ResearchFiles for files. * The created group will be a child of the Project. * @param project * @param folder */ public void importFolderStructureForProject(final Project project, Folder folder); public void changeAFilesParentFolder(ResearchFile researchFile, long newFolderId); }