/** * Save the file uploaded * * @param user the user that save the file * @param host Current host * @param uploadedFile * @param folder The folder where the file is going to be save * @param title The filename * @return File * @throws Exception */ @SuppressWarnings("unchecked") private static FileAsset saveFile( User user, Host host, java.io.File uploadedFile, String folderPath, String title) throws Exception { Folder folder = APILocator.getFolderAPI().findFolderByPath(folderPath, host, user, false); if (!UtilMethods.isSet(folder.getInode())) { User systemUser = APILocator.getUserAPI().getSystemUser(); folder = APILocator.getFolderAPI() .createFolders(folderPath, host, APILocator.getUserAPI().getSystemUser(), false); } byte[] bytes = FileUtil.getBytes(uploadedFile); if (bytes != null) { String newFileName = ""; String name = UtilMethods.getFileName(title); int counter = 1; String fileName = name + "." + UtilMethods.getFileExtension(title); while (APILocator.getFileAPI().fileNameExists(folder, fileName)) { newFileName = name + "(" + counter + ")"; fileName = newFileName + "." + UtilMethods.getFileExtension(title); counter++; } while (APILocator.getFileAssetAPI().fileNameExists(host, folder, name, "")) { newFileName = name + "(" + counter + ")"; fileName = newFileName + "." + UtilMethods.getFileExtension(title); counter++; } if (UtilMethods.isSet(newFileName)) { name = newFileName; } Contentlet cont = new Contentlet(); cont.setStructureInode(folder.getDefaultFileType()); cont.setStringProperty(FileAssetAPI.TITLE_FIELD, UtilMethods.getFileName(name)); cont.setFolder(folder.getInode()); cont.setHost(host.getIdentifier()); cont.setBinary(FileAssetAPI.BINARY_FIELD, uploadedFile); if (StructureCache.getStructureByInode(cont.getStructureInode()).getStructureType() == Structure.STRUCTURE_TYPE_FILEASSET) cont.setStringProperty("fileName", title); cont = APILocator.getContentletAPI().checkin(cont, user, false); if (APILocator.getPermissionAPI() .doesUserHavePermission(cont, PermissionAPI.PERMISSION_PUBLISH, user)) APILocator.getVersionableAPI().setLive(cont); return APILocator.getFileAssetAPI().fromContentlet(cont); } return null; }