String originalFileExt = FileUtil.getExtension(originalFileName);
String timestamp = new DateTime().format("yyyyMMddHHmmssssss");
if (originalFileName == null) {
throw new ValidateException("Por favor, indique o nome do ficheiro.", INEXISTENT_FILE_CODE);
}
// verifico se o ficheiro � v�lido
if (uploadedFile.getSize() == 0) {
throw new ValidateException("O ficheiro " + originalFileName + " � inv�lido!");
}
if (StringUtil.isEmpty(originalFileExt)) {
throw new ValidateException("A extens�o " + originalFileExt + " � inv�lida!");
}
// verifico se a extens�o � v�lida
if (possibleExtensions != null && possibleExtensions.indexOf(originalFileExt.toLowerCase()) == -1) {
throw new ValidateException("A extens�o " + originalFileExt + " � inv�lida!");
}
if (originalFileName.startsWith(".")) {
throw new ValidateException("O nome do ficheiro " + originalFileName + " � inv�lido!");
}
if (!inMemory) {
File savedFileName = new File(repositoryPath + "/" + originalFileName + "." + timestamp);
if (automaticUnzip && originalFileExt.equalsIgnoreCase("zip")) {
try {
String expectedXmlFile = StringUtil.replaceIgnoreCase(originalFileName, ".zip", ".xml");
savedFileName = new File(repositoryPath + "/" + expectedXmlFile + "." + timestamp);
OutputStream out = new FileOutputStream(savedFileName);
try {
ZipUtil.getContentFromZip(uploadedFile.getInputStream(), out, expectedXmlFile);
} finally {
out.close();
}
// uploadedFile.setContent(content); //substitu�mos o conte�do original que era um zip pelo ficheiro q estava l� dentro
} catch (IOException e) {
e.printStackTrace();
throw new ValidateException("Formato do ficheiro ZIP inv�lido");
}
} else {
// saves file to disk with timestamp
try {
uploadedFile.write(savedFileName);
} catch (FileUploadException e) {
throw new ValidateException("Ocorreu um erro na escrita do ficheiro para disco.");
}
}
setOriginalFileName(originalFileName);
setUploadedFile(savedFileName);