Search in sources :

Example 6 with Folder

use of org.jbei.ice.storage.model.Folder in project ice by JBEI.

the class FolderController method getSharedUserFolders.

/**
     * Retrieves folders that have been shared with specified user as an individual or as part of a group.
     *
     * @param userId User whose shared folders are being retrieved
     * @return list of folders meeting the shared criteria
     */
public ArrayList<FolderDetails> getSharedUserFolders(String userId) {
    Account account = getAccount(userId);
    ArrayList<FolderDetails> folderDetails = new ArrayList<>();
    Set<Group> groups = account.getGroups();
    groups.remove(groupController.createOrRetrievePublicGroup());
    List<Folder> sharedFolders = DAOFactory.getPermissionDAO().retrieveFolderPermissions(account, groups);
    if (sharedFolders == null)
        return null;
    for (Folder folder : sharedFolders) {
        FolderDetails details = folder.toDataTransferObject();
        details.setType(folder.getType());
        long folderSize = dao.getFolderSize(folder.getId(), null, true);
        details.setCount(folderSize);
        if (folder.getCreationTime() != null)
            details.setCreationTime(folder.getCreationTime().getTime());
        folderDetails.add(details);
    }
    return folderDetails;
}
Also used : Account(org.jbei.ice.storage.model.Account) Group(org.jbei.ice.storage.model.Group) FolderDetails(org.jbei.ice.lib.dto.folder.FolderDetails) Folder(org.jbei.ice.storage.model.Folder)

Example 7 with Folder

use of org.jbei.ice.storage.model.Folder in project ice by JBEI.

the class FolderController method delete.

/**
     * Deletes either a user folder or bulk upload (which is represented as a folder to the user)
     *
     * @param userId   unique identifier for user requesting delete action
     * @param folderId unique identifier for folder to be deleted
     * @param type     type of folder to be deleted (either "UPLOAD" or "PRIVATE")
     * @return delete folder details
     */
public FolderDetails delete(String userId, long folderId, FolderType type) {
    switch(type) {
        case UPLOAD:
            BulkUploadController controller = new BulkUploadController();
            BulkUploadInfo info = controller.deleteDraftById(userId, folderId);
            if (info == null) {
                Logger.error("Could not locate bulk upload id " + folderId + " for deletion");
                return null;
            }
            FolderDetails details = new FolderDetails();
            details.setId(info.getId());
            return details;
        case PRIVATE:
        case TRANSFERRED:
        case SHARED:
            Folder folder = dao.get(folderId);
            if (folder == null)
                return null;
            if (!accountController.isAdministrator(userId) && !folder.getOwnerEmail().equalsIgnoreCase(userId)) {
                String errorMsg = userId + ": insufficient permissions to delete folder " + folderId;
                Logger.warn(errorMsg);
                throw new PermissionException(errorMsg);
            }
            details = folder.toDataTransferObject();
            long folderSize = dao.getFolderSize(folderId, null, true);
            details.setCount(folderSize);
            permissionDAO.clearPermissions(folder);
            dao.delete(folder);
            return details;
        default:
            Logger.error("Cannot delete folder of type " + type);
            return null;
    }
}
Also used : PermissionException(org.jbei.ice.lib.access.PermissionException) BulkUploadController(org.jbei.ice.lib.bulkupload.BulkUploadController) BulkUploadInfo(org.jbei.ice.lib.bulkupload.BulkUploadInfo) FolderDetails(org.jbei.ice.lib.dto.folder.FolderDetails) Folder(org.jbei.ice.storage.model.Folder)

Example 8 with Folder

use of org.jbei.ice.storage.model.Folder in project ice by JBEI.

the class FolderController method getUserFolders.

public ArrayList<FolderDetails> getUserFolders(String userId) {
    Account account = getAccount(userId);
    List<Folder> folders = dao.getFoldersByOwner(account);
    ArrayList<FolderDetails> folderDetails = new ArrayList<>();
    for (Folder folder : folders) {
        if (!folder.getOwnerEmail().equalsIgnoreCase(userId))
            continue;
        FolderDetails details = new FolderDetails(folder.getId(), folder.getName());
        long folderSize = dao.getFolderSize(folder.getId(), null, true);
        details.setCount(folderSize);
        details.setType(folder.getType());
        if (folder.getCreationTime() != null)
            details.setCreationTime(folder.getCreationTime().getTime());
        details.setCanEdit(true);
        folderDetails.add(details);
    }
    return folderDetails;
}
Also used : Account(org.jbei.ice.storage.model.Account) FolderDetails(org.jbei.ice.lib.dto.folder.FolderDetails) Folder(org.jbei.ice.storage.model.Folder)

Example 9 with Folder

use of org.jbei.ice.storage.model.Folder in project ice by JBEI.

the class FolderDAOTest method testGetFolderSize.

@Test
public void testGetFolderSize() throws Exception {
    Account account = AccountCreator.createTestAccount("testGetFolderSize", false);
    String email = account.getEmail();
    // create test folder
    Folder folder = createFolderObject("testGetFolderSize");
    folder = dao.create(folder);
    Assert.assertNotNull(folder);
    List<Entry> entries = new ArrayList<>();
    EntryCreator creator = new EntryCreator();
    // create 10 entries
    for (int i = 0; i < 10; i += 1) {
        Part part = new Part();
        part.setName("name" + i);
        part.setOwnerEmail(email);
        part.setAlias("alias" + i);
        part.setShortDescription("short description");
        Entry entry = creator.createEntry(account, part, null);
        entries.add(entry);
    }
    // add entries to folder
    folder = dao.addFolderContents(folder, entries);
    Assert.assertEquals(10, dao.getFolderSize(folder.getId(), null, true).intValue());
}
Also used : Account(org.jbei.ice.storage.model.Account) Entry(org.jbei.ice.storage.model.Entry) EntryCreator(org.jbei.ice.lib.entry.EntryCreator) Part(org.jbei.ice.storage.model.Part) ArrayList(java.util.ArrayList) Folder(org.jbei.ice.storage.model.Folder) Test(org.junit.Test)

Example 10 with Folder

use of org.jbei.ice.storage.model.Folder in project ice by JBEI.

the class FolderDAOTest method testGetFolderContents.

@Test
public void testGetFolderContents() throws Exception {
    Account account = AccountCreator.createTestAccount("testGetFolderContents", false);
    String email = account.getEmail();
    // create test folder
    Folder folder = createFolderObject("testGetFolderContents");
    folder = dao.create(folder);
    Assert.assertNotNull(folder);
    List<Entry> entries = new ArrayList<>();
    EntryCreator creator = new EntryCreator();
    // create 10 entries
    for (int i = 0; i < 10; i += 1) {
        Part part = new Part();
        part.setName("name" + i);
        part.setOwnerEmail(email);
        part.setAlias("alias" + i);
        part.setShortDescription("short description");
        Entry entry = creator.createEntry(account, part, null);
        entries.add(entry);
    }
    // add entries to folder
    folder = dao.addFolderContents(folder, entries);
    Assert.assertNotNull(folder);
}
Also used : Account(org.jbei.ice.storage.model.Account) Entry(org.jbei.ice.storage.model.Entry) EntryCreator(org.jbei.ice.lib.entry.EntryCreator) Part(org.jbei.ice.storage.model.Part) ArrayList(java.util.ArrayList) Folder(org.jbei.ice.storage.model.Folder) Test(org.junit.Test)

Aggregations

Folder (org.jbei.ice.storage.model.Folder)31 Account (org.jbei.ice.storage.model.Account)18 FolderDetails (org.jbei.ice.lib.dto.folder.FolderDetails)11 Test (org.junit.Test)9 ArrayList (java.util.ArrayList)7 EntryCreator (org.jbei.ice.lib.entry.EntryCreator)5 Entry (org.jbei.ice.storage.model.Entry)5 Part (org.jbei.ice.storage.model.Part)5 Group (org.jbei.ice.storage.model.Group)4 RemoteAccessModel (org.jbei.ice.storage.model.RemoteAccessModel)3 RemotePartner (org.jbei.ice.storage.model.RemotePartner)3 HashSet (java.util.HashSet)2 AccountTransfer (org.jbei.ice.lib.account.AccountTransfer)2 FolderAuthorization (org.jbei.ice.lib.dto.folder.FolderAuthorization)2 Date (java.util.Date)1 PermissionException (org.jbei.ice.lib.access.PermissionException)1 PermissionsController (org.jbei.ice.lib.access.PermissionsController)1 BulkUploadController (org.jbei.ice.lib.bulkupload.BulkUploadController)1 BulkUploadInfo (org.jbei.ice.lib.bulkupload.BulkUploadInfo)1 AccessPermission (org.jbei.ice.lib.dto.access.AccessPermission)1