byte[] currentData = IOUtils.toByteArray(is);
if(destinationFile==null){
Contentlet fileAsset = new Contentlet();
Structure faStructure = StructureCache.getStructureByInode(folder.getDefaultFileType());
Field fieldVar = faStructure.getFieldVar(FileAssetAPI.BINARY_FIELD);
fileAsset.setStructureInode(folder.getDefaultFileType());
fileAsset.setFolder(folder.getInode());
if (currentData != null) {
java.io.File tempUserFolder = new java.io.File(APILocator.getFileAPI().getRealAssetPathTmpBinary() + java.io.File.separator + user.getUserId() +
java.io.File.separator + fieldVar.getFieldContentlet());
if (!tempUserFolder.exists())
tempUserFolder.mkdirs();
java.io.File fileData = new java.io.File(tempUserFolder.getAbsolutePath() + java.io.File.separator + fileName);
if(fileData.exists())
fileData.delete();
// Saving the new working data
FileChannel writeCurrentChannel = new FileOutputStream(fileData).getChannel();
writeCurrentChannel.truncate(0);
ByteBuffer buffer = ByteBuffer.allocate(currentData.length);
buffer.put(currentData);
buffer.position(0);
writeCurrentChannel.write(buffer);
writeCurrentChannel.force(false);
writeCurrentChannel.close();
fileAsset.setStringProperty(FileAssetAPI.TITLE_FIELD, fileName);
fileAsset.setStringProperty(FileAssetAPI.FILE_NAME_FIELD, fileName);
fileAsset.setBinary(FileAssetAPI.BINARY_FIELD, fileData);
fileAsset.setHost(host.getIdentifier());
fileAsset=APILocator.getContentletAPI().checkin(fileAsset, user, false);
//Validate if the user have the right permission before
if(isAutoPub && !perAPI.doesUserHavePermission(fileAsset, PermissionAPI.PERMISSION_PUBLISH, user) ){
APILocator.getContentletAPI().archive(fileAsset, APILocator.getUserAPI().getSystemUser(), false);
APILocator.getContentletAPI().delete(fileAsset, APILocator.getUserAPI().getSystemUser(), false);
throw new DotSecurityException("User does not have permission to publish contentlets");
}else if(!isAutoPub && !perAPI.doesUserHavePermission(fileAsset, PermissionAPI.PERMISSION_EDIT, user)){
APILocator.getContentletAPI().archive(fileAsset, APILocator.getUserAPI().getSystemUser(), false);
APILocator.getContentletAPI().delete(fileAsset, APILocator.getUserAPI().getSystemUser(), false);
throw new DotSecurityException("User does not have permission to edit contentlets");
}
if(isAutoPub && perAPI.doesUserHavePermission(fileAsset, PermissionAPI.PERMISSION_PUBLISH, user)) {
APILocator.getContentletAPI().publish(fileAsset, user, false);
Date currentDate = new Date();
fileResourceCache.add(resourceUri + "|" + user.getUserId(), currentDate.getTime());
}
}
}else{
if(destinationFile instanceof File){
// Save the file size
File file = fileAPI.getFileByURI(path, host, false, user, false);
file.setSize(currentData.length);
file.setModDate(modifiedDate);
file.setModUser(user.getUserId());
try {
HibernateUtil.saveOrUpdate(file);
} catch (DotHibernateException e1) {
Logger.error(this,e1.getMessage(), e1);
}
}
if (currentData != null) {
// Saving the new working data
java.io.File fileData;
if(destinationFile instanceof File) {
fileData=workingFile;
}
else {
Structure faStructure = StructureCache.getStructureByInode(folder.getDefaultFileType());
Field fieldVar = faStructure.getFieldVar(FileAssetAPI.BINARY_FIELD);
java.io.File tempUserFolder = new java.io.File(APILocator.getFileAPI().getRealAssetPathTmpBinary() + java.io.File.separator + user.getUserId() +
java.io.File.separator + fieldVar.getFieldContentlet());
if (!tempUserFolder.exists())
tempUserFolder.mkdirs();
fileData = new java.io.File(tempUserFolder.getAbsolutePath() + java.io.File.separator + fileName);
if(fileData.exists())