diff --git a/src/main/scala/app/RepositoryViewerController.scala b/src/main/scala/app/RepositoryViewerController.scala index c497eeb..5da0170 100644 --- a/src/main/scala/app/RepositoryViewerController.scala +++ b/src/main/scala/app/RepositoryViewerController.scala @@ -2,7 +2,7 @@ import util.Directory._ import util.Implicits._ -import _root_.util.{ReadableRepositoryAuthenticator, JGitUtil, FileTypeUtil, CompressUtil} +import _root_.util.{ReadableRepositoryAuthenticator, JGitUtil, FileUtil} import service._ import org.scalatra._ import java.io.File @@ -143,12 +143,12 @@ JGitUtil.getContent(git, objectId, false).get } else { // Viewer - val large = FileTypeUtil.isLarge(git.getRepository.getObjectDatabase.open(objectId).getSize) - val viewer = if(FileTypeUtil.isImage(path)) "image" else if(large) "large" else "other" + val large = FileUtil.isLarge(git.getRepository.getObjectDatabase.open(objectId).getSize) + val viewer = if(FileUtil.isImage(path)) "image" else if(large) "large" else "other" val bytes = if(viewer == "other") JGitUtil.getContent(git, objectId, false) else None val content = if(viewer == "other"){ - if(bytes.isDefined && FileTypeUtil.isText(bytes.get)){ + if(bytes.isDefined && FileUtil.isText(bytes.get)){ // text JGitUtil.ContentInfo("text", bytes.map(new String(_, "UTF-8"))) } else { @@ -227,7 +227,7 @@ // create zip file val zipFile = new File(workDir, (if(revision.length == 40) revision.substring(0, 10) else revision) + ".zip") - CompressUtil.zip(zipFile, cloneDir) + FileUtil.createZipFile(zipFile, cloneDir) contentType = "application/octet-stream" zipFile diff --git a/src/main/scala/util/CompressUtil.scala b/src/main/scala/util/CompressUtil.scala deleted file mode 100644 index 10d4e6e..0000000 --- a/src/main/scala/util/CompressUtil.scala +++ /dev/null @@ -1,32 +0,0 @@ -package util - -import java.io.File -import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream -import org.apache.commons.compress.archivers.zip.ZipArchiveEntry -import org.apache.commons.io.FileUtils -import org.apache.commons.io.IOUtils - -object CompressUtil { - - def zip(dest: File, dir: File): Unit = { - def addDirectoryToZip(out: ZipArchiveOutputStream, dir: File, path: String): Unit = { - dir.listFiles.map { file => - if(file.isFile){ - out.putArchiveEntry(new ZipArchiveEntry(path + "/" + file.getName)) - out.write(FileUtils.readFileToByteArray(file)) - out.closeArchiveEntry - } else if(file.isDirectory){ - addDirectoryToZip(out, file, path + "/" + file.getName) - } - } - } - - val out = new ZipArchiveOutputStream(dest) - try { - addDirectoryToZip(out, dir, dir.getName) - } finally { - IOUtils.closeQuietly(out) - } - } - -} \ No newline at end of file diff --git a/src/main/scala/util/FileTypeUtil.scala b/src/main/scala/util/FileTypeUtil.scala deleted file mode 100644 index e3e8f5f..0000000 --- a/src/main/scala/util/FileTypeUtil.scala +++ /dev/null @@ -1,24 +0,0 @@ -package util - -import org.apache.commons.io.FilenameUtils -import java.net.URLConnection - -object FileTypeUtil { - - def getMimeType(name: String): String = { - val fileNameMap = URLConnection.getFileNameMap() - val mimeType = fileNameMap.getContentTypeFor(name) - if(mimeType == null){ - "application/octeat-stream" - } else { - mimeType - } - } - - def isImage(name: String): Boolean = getMimeType(name).startsWith("image/") - - def isLarge(size: Long): Boolean = (size > 1024 * 1000) - - def isText(content: Array[Byte]): Boolean = !content.contains(0) - -} \ No newline at end of file diff --git a/src/main/scala/util/FileUtil.scala b/src/main/scala/util/FileUtil.scala new file mode 100644 index 0000000..bc02378 --- /dev/null +++ b/src/main/scala/util/FileUtil.scala @@ -0,0 +1,47 @@ +package util + +import org.apache.commons.io.{IOUtils, FileUtils, FilenameUtils} +import java.net.URLConnection +import java.io.File +import org.apache.commons.compress.archivers.zip.{ZipArchiveEntry, ZipArchiveOutputStream} + +object FileUtil { + + def getMimeType(name: String): String = { + val fileNameMap = URLConnection.getFileNameMap() + val mimeType = fileNameMap.getContentTypeFor(name) + if(mimeType == null){ + "application/octeat-stream" + } else { + mimeType + } + } + + def isImage(name: String): Boolean = getMimeType(name).startsWith("image/") + + def isLarge(size: Long): Boolean = (size > 1024 * 1000) + + def isText(content: Array[Byte]): Boolean = !content.contains(0) + + def createZipFile(dest: File, dir: File): Unit = { + def addDirectoryToZip(out: ZipArchiveOutputStream, dir: File, path: String): Unit = { + dir.listFiles.map { file => + if(file.isFile){ + out.putArchiveEntry(new ZipArchiveEntry(path + "/" + file.getName)) + out.write(FileUtils.readFileToByteArray(file)) + out.closeArchiveEntry + } else if(file.isDirectory){ + addDirectoryToZip(out, file, path + "/" + file.getName) + } + } + } + + val out = new ZipArchiveOutputStream(dest) + try { + addDirectoryToZip(out, dir, dir.getName) + } finally { + IOUtils.closeQuietly(out) + } + } + +} \ No newline at end of file diff --git a/src/main/scala/util/JGitUtil.scala b/src/main/scala/util/JGitUtil.scala index 07ddc66..198ff80 100644 --- a/src/main/scala/util/JGitUtil.scala +++ b/src/main/scala/util/JGitUtil.scala @@ -374,7 +374,7 @@ */ def getContent(git: Git, id: ObjectId, large: Boolean): Option[Array[Byte]] = try { val loader = git.getRepository.getObjectDatabase.open(id) - if(large == false && FileTypeUtil.isLarge(loader.getSize)){ + if(large == false && FileUtil.isLarge(loader.getSize)){ None } else { val db = git.getRepository.getObjectDatabase @@ -419,12 +419,12 @@ import scala.collection.JavaConverters._ git.diff.setNewTree(newTreeIter).setOldTree(oldTreeIter).call.asScala.map { diff => - if(!fetchContent || FileTypeUtil.isImage(diff.getOldPath) || FileTypeUtil.isImage(diff.getNewPath)){ + if(!fetchContent || FileUtil.isImage(diff.getOldPath) || FileUtil.isImage(diff.getNewPath)){ DiffInfo(diff.getChangeType, diff.getOldPath, diff.getNewPath, None, None) } else { DiffInfo(diff.getChangeType, diff.getOldPath, diff.getNewPath, - JGitUtil.getContent(git, diff.getOldId.toObjectId, false).filter(FileTypeUtil.isText).map(new String(_, "UTF-8")), - JGitUtil.getContent(git, diff.getNewId.toObjectId, false).filter(FileTypeUtil.isText).map(new String(_, "UTF-8"))) + JGitUtil.getContent(git, diff.getOldId.toObjectId, false).filter(FileUtil.isText).map(new String(_, "UTF-8")), + JGitUtil.getContent(git, diff.getNewId.toObjectId, false).filter(FileUtil.isText).map(new String(_, "UTF-8"))) } }.toList } else { @@ -437,7 +437,7 @@ DiffInfo(ChangeType.ADD, null, walk.getPathString, None, None) } else { DiffInfo(ChangeType.ADD, null, walk.getPathString, None, - JGitUtil.getContent(git, walk.getObjectId(0), false).filter(FileTypeUtil.isText).map(new String(_, "UTF-8"))) + JGitUtil.getContent(git, walk.getObjectId(0), false).filter(FileUtil.isText).map(new String(_, "UTF-8"))) })) } walk.release