Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
use instance helpers for DocumentUpload methods (mikado method)
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmason committed Jul 17, 2013
1 parent b9fd4b4 commit 02762da
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 45 deletions.
59 changes: 27 additions & 32 deletions zanata-war/src/main/java/org/zanata/file/DocumentUpload.java
Expand Up @@ -89,9 +89,8 @@ protected DocumentUpload(
this.translationFileServiceImpl = translationFileServiceImpl;
}

protected static void checkUploadPreconditions(GlobalDocumentId id,
DocumentFileUploadForm uploadForm, ZanataIdentity identity,
ProjectIterationDAO projectIterationDAO, Session session)
protected void checkUploadPreconditions(GlobalDocumentId id,
DocumentFileUploadForm uploadForm)
{
if (!identity.isLoggedIn())
{
Expand Down Expand Up @@ -125,7 +124,7 @@ protected static void checkUploadPreconditions(GlobalDocumentId id,
"Form parameter 'uploadId' must be provided when this is not the first part.");
}

HDocumentUpload upload = retrieveUploadObject(uploadForm, session);
HDocumentUpload upload = retrieveUploadObject(uploadForm);
if (upload == null)
{
throw new ChunkUploadException(Status.PRECONDITION_FAILED,
Expand Down Expand Up @@ -181,34 +180,32 @@ protected static void checkUploadPreconditions(GlobalDocumentId id,
}
}

private static HDocumentUpload retrieveUploadObject(DocumentFileUploadForm uploadForm, Session session)
{
// TODO put in DAO
Criteria criteria = session.createCriteria(HDocumentUpload.class);
criteria.add(Restrictions.idEq(uploadForm.getUploadId()));
HDocumentUpload upload = (HDocumentUpload) criteria.uniqueResult();
return upload;
}

protected static HDocumentUpload saveUploadPart(GlobalDocumentId id,
HLocale locale, DocumentFileUploadForm uploadForm, Session session,
ProjectIterationDAO projectIterationDAO)
protected HDocumentUpload saveUploadPart(GlobalDocumentId id,
HLocale locale, DocumentFileUploadForm uploadForm)
{
HDocumentUpload upload;
if (uploadForm.getFirst())
{
upload = createMultipartUpload(id, uploadForm, locale, projectIterationDAO);
upload = createMultipartUpload(id, uploadForm, locale);
}
else
{
upload = retrieveUploadObject(uploadForm, session);
upload = retrieveUploadObject(uploadForm);
}
saveUploadPart(uploadForm, upload, session);
saveUploadPart(uploadForm, upload);
return upload;
}

private HDocumentUpload retrieveUploadObject(DocumentFileUploadForm uploadForm)
{
// TODO put in DAO
Criteria criteria = session.createCriteria(HDocumentUpload.class);
criteria.add(Restrictions.idEq(uploadForm.getUploadId()));
HDocumentUpload upload = (HDocumentUpload) criteria.uniqueResult();
return upload;
}

private static HDocumentUpload createMultipartUpload(GlobalDocumentId id, DocumentFileUploadForm uploadForm, HLocale locale,
ProjectIterationDAO projectIterationDAO)
private HDocumentUpload createMultipartUpload(GlobalDocumentId id, DocumentFileUploadForm uploadForm, HLocale locale)
{
HProjectIteration projectIteration = projectIterationDAO.getBySlug(id.getProjectSlug(), id.getVersionSlug());
HDocumentUpload newUpload = new HDocumentUpload();
Expand All @@ -221,8 +218,7 @@ private static HDocumentUpload createMultipartUpload(GlobalDocumentId id, Docume
return newUpload;
}

private static void saveUploadPart(DocumentFileUploadForm uploadForm, HDocumentUpload upload,
Session session)
private void saveUploadPart(DocumentFileUploadForm uploadForm, HDocumentUpload upload)
{
Blob partContent = session.getLobHelper().createBlob(uploadForm.getFileStream(), uploadForm.getSize().intValue());
HDocumentUploadPart newPart = new HDocumentUploadPart();
Expand All @@ -237,13 +233,12 @@ protected static boolean isSinglePart(DocumentFileUploadForm uploadForm)
return uploadForm.getFirst() && uploadForm.getLast();
}

protected static File combineToTempFileAndDeleteUploadRecord(HDocumentUpload upload, Session session,
TranslationFileService transFileService)
protected File combineToTempFileAndDeleteUploadRecord(HDocumentUpload upload)
{
File tempFile;
try
{
tempFile = DocumentUpload.combineToTempFile(upload, transFileService);
tempFile = combineToTempFile(upload);
}
catch (HashMismatchException e)
{
Expand All @@ -265,7 +260,7 @@ protected static File combineToTempFileAndDeleteUploadRecord(HDocumentUpload upl
return tempFile;
}

private static File combineToTempFile(HDocumentUpload upload, TranslationFileService service) throws SQLException
private File combineToTempFile(HDocumentUpload upload) throws SQLException
{
Vector<InputStream> partStreams = new Vector<InputStream>();
for (HDocumentUploadPart part : upload.getParts())
Expand All @@ -285,7 +280,7 @@ private static File combineToTempFile(HDocumentUpload upload, TranslationFileSer
}
InputStream combinedParts = new SequenceInputStream(partStreams.elements());
combinedParts = new DigestInputStream(combinedParts, md);
File tempFile = service.persistToTempFile(combinedParts);
File tempFile = translationFileServiceImpl.persistToTempFile(combinedParts);
String md5hash = new String(Hex.encodeHex(md.digest()));

if (!md5hash.equals(upload.getContentHash()))
Expand All @@ -307,19 +302,19 @@ protected static InputStream getInputStream(Optional<File> tempFile, DocumentFil
}
}

protected static boolean isNewDocument(GlobalDocumentId id, DocumentDAO dao)
protected boolean isNewDocument(GlobalDocumentId id)
{
return dao.getByProjectIterationAndDocId(id.getProjectSlug(), id.getVersionSlug(), id.getDocId()) == null;
return documentDAO.getByProjectIterationAndDocId(id.getProjectSlug(), id.getVersionSlug(), id.getDocId()) == null;
}

protected static File persistTempFileFromUpload(DocumentFileUploadForm uploadForm, TranslationFileService transFileService)
protected File persistTempFileFromUpload(DocumentFileUploadForm uploadForm)
{
File tempFile;
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
InputStream fileContents = new DigestInputStream(uploadForm.getFileStream(), md);
tempFile = transFileService.persistToTempFile(fileContents);
tempFile = translationFileServiceImpl.persistToTempFile(fileContents);
String md5hash = new String(Hex.encodeHex(md.digest()));
if (!md5hash.equals(uploadForm.getHash()))
{
Expand Down
Expand Up @@ -96,7 +96,7 @@ public Response tryUploadSourceFile(GlobalDocumentId id, DocumentFileUploadForm

if (!uploadForm.getLast())
{
HDocumentUpload upload = saveUploadPart(id, NULL_LOCALE, uploadForm, session, projectIterationDAO);
HDocumentUpload upload = saveUploadPart(id, NULL_LOCALE, uploadForm);
totalChunks = upload.getParts().size();
return Response.status(Status.ACCEPTED)
.entity(new ChunkUploadResponse(upload.getId(), totalChunks, true,
Expand All @@ -111,10 +111,9 @@ public Response tryUploadSourceFile(GlobalDocumentId id, DocumentFileUploadForm
}
else
{
HDocumentUpload upload = saveUploadPart(id, NULL_LOCALE,
uploadForm, session, projectIterationDAO);
HDocumentUpload upload = saveUploadPart(id, NULL_LOCALE, uploadForm);
totalChunks = upload.getParts().size();
tempFile = Optional.of(combineToTempFileAndDeleteUploadRecord(upload, session, translationFileServiceImpl));
tempFile = Optional.of(combineToTempFileAndDeleteUploadRecord(upload));
}

if (uploadForm.getFileType().equals(".pot"))
Expand All @@ -126,15 +125,15 @@ public Response tryUploadSourceFile(GlobalDocumentId id, DocumentFileUploadForm
{
if (!tempFile.isPresent())
{
tempFile = Optional.of(persistTempFileFromUpload(uploadForm, translationFileServiceImpl));
tempFile = Optional.of(persistTempFileFromUpload(uploadForm));
}
processAdapterFile(tempFile.get(), id, uploadForm);
}
if (tempFile.isPresent())
{
tempFile.get().delete();
}
return sourceUploadSuccessResponse(isNewDocument(id, documentDAO), totalChunks);
return sourceUploadSuccessResponse(isNewDocument(id), totalChunks);
}
catch (ChunkUploadException e)
{
Expand All @@ -155,7 +154,7 @@ private void checkSourceUploadPreconditions(GlobalDocumentId id,
{
try
{
checkUploadPreconditions(id, uploadForm, identity, projectIterationDAO, session);
checkUploadPreconditions(id, uploadForm);
checkSourceUploadAllowed(id);
}
catch (AuthorizationException e)
Expand Down Expand Up @@ -294,7 +293,7 @@ private void parsePotFile(InputStream potStream, GlobalDocumentId id, DocumentFi

private boolean useOfflinePo(GlobalDocumentId id)
{
return !isNewDocument(id, documentDAO)
return !isNewDocument(id)
&& !translationFileServiceImpl.isPoDocument(id.getProjectSlug(), id.getVersionSlug(), id.getDocId());
}

Expand Down
Expand Up @@ -107,7 +107,7 @@ public Response tryUploadTranslationFile(String projectSlug, String iterationSlu
else
{
HDocumentUpload upload = saveUploadPart(new GlobalDocumentId(projectSlug, iterationSlug, docId), locale,
uploadForm, session, projectIterationDAO);
uploadForm);
totalChunks = upload.getParts().size();
if (!uploadForm.getLast())
{
Expand All @@ -116,7 +116,7 @@ public Response tryUploadTranslationFile(String projectSlug, String iterationSlu
"Chunk accepted, awaiting remaining chunks."))
.build();
}
tempFile = Optional.of(combineToTempFileAndDeleteUploadRecord(upload, session, translationFileServiceImpl));
tempFile = Optional.of(combineToTempFileAndDeleteUploadRecord(upload));
}

TranslationsResource transRes;
Expand All @@ -129,7 +129,7 @@ public Response tryUploadTranslationFile(String projectSlug, String iterationSlu
{
if (!tempFile.isPresent())
{
tempFile = Optional.of(DocumentUpload.persistTempFileFromUpload(uploadForm, translationFileServiceImpl));
tempFile = Optional.of(persistTempFileFromUpload(uploadForm));
}
// FIXME this is misusing the 'filename' field. the method should probably take a
// type anyway
Expand Down Expand Up @@ -172,7 +172,7 @@ private void checkTranslationUploadPreconditions(String projectSlug, String iter
String docId, String localeId, DocumentFileUploadForm uploadForm)
{
checkUploadPreconditions(new GlobalDocumentId(projectSlug, iterationSlug, docId),
uploadForm, identity, projectIterationDAO, session);
uploadForm);

// TODO check translation upload allowed

Expand All @@ -183,7 +183,7 @@ private void checkTranslationUploadPreconditions(String projectSlug, String iter
private void checkDocumentExists(String projectSlug, String iterationSlug, String docId,
DocumentFileUploadForm uploadForm)
{
if (isNewDocument(new GlobalDocumentId(projectSlug, iterationSlug, docId), documentDAO))
if (isNewDocument(new GlobalDocumentId(projectSlug, iterationSlug, docId)))
{
throw new ChunkUploadException(Status.NOT_FOUND,
"No document with id \"" + docId + "\" exists in project-version \"" +
Expand Down

0 comments on commit 02762da

Please sign in to comment.