Add error checking for data import

This commit is contained in:
Naoki Takezoe
2016-04-29 12:52:10 +09:00
parent a6790b049d
commit 7ec85cbf99
2 changed files with 19 additions and 7 deletions

View File

@@ -10,6 +10,7 @@ import gitbucket.core.util.Implicits._
import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.Git
import org.eclipse.jgit.dircache.DirCache import org.eclipse.jgit.dircache.DirCache
import org.eclipse.jgit.lib.{FileMode, Constants} import org.eclipse.jgit.lib.{FileMode, Constants}
import org.scalatra
import org.scalatra._ import org.scalatra._
import org.scalatra.servlet.{MultipartConfig, FileUploadSupport, FileItem} import org.scalatra.servlet.{MultipartConfig, FileUploadSupport, FileItem}
import org.apache.commons.io.{IOUtils, FileUtils} import org.apache.commons.io.{IOUtils, FileUtils}
@@ -80,9 +81,13 @@ class FileUploadController extends ScalatraServlet with FileUploadSupport with R
post("/import") { post("/import") {
session.get(Keys.Session.LoginAccount).collect { case loginAccount: Account if loginAccount.isAdmin => session.get(Keys.Session.LoginAccount).collect { case loginAccount: Account if loginAccount.isAdmin =>
execute({ (file, fileId) => execute({ (file, fileId) =>
import JDBCUtil._ if(file.getName.endsWith(".xml")){
val conn = request2Session(request).conn import JDBCUtil._
conn.importAsXML(file.getInputStream) val conn = request2Session(request).conn
conn.importAsXML(file.getInputStream)
} else {
throw new RuntimeException("Import is available for only the XML file.")
}
}, _ => true) }, _ => true)
} }
redirect("/admin/data") redirect("/admin/data")

View File

@@ -30,10 +30,10 @@
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading strong">Import</div> <div class="panel-heading strong">Import (only XML)</div>
<div class="panel-body"> <div class="panel-body">
<form class="form form-horizontal" action="@path/upload/import" method="POST" enctype="multipart/form-data"> <form class="form form-horizontal" action="@path/upload/import" method="POST" enctype="multipart/form-data" id="import-form">
<input type="file" name="file"> <input type="file" name="file" id="file">
<input type="submit" class="btn btn-success pull-right" value="Import" id="import"> <input type="submit" class="btn btn-success pull-right" value="Import" id="import">
</form> </form>
</div> </div>
@@ -42,7 +42,14 @@
} }
<script> <script>
$(function(){ $(function(){
$('#import').click(function(){ $('#import-form').submit(function(){
if(!$('#file').val() == ''){
alert('Choose an import XML file.');
return false;
} else if(!$('#file').val().endsWith(".xml")){
alert('Import is available for only the XML file.');
return false;
}
return confirm('All existing data is deleted before importing.\nAre you sure?'); return confirm('All existing data is deleted before importing.\nAre you sure?');
}) })
}) })