package pt.estgp.estgweb.web.controllers.examples.jsonwidget;
import com.owlike.genson.TransformationException;
import org.apache.struts.action.ActionForm;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.controllers.utils.FileUploaded;
import pt.estgp.estgweb.web.controllers.utils.FilesUploadResult;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
/**
* Created by jorgemachado on 27/12/16.
*/
public class WidgetFileUploadExampleController
extends AbstractWidgetAjaxController
{
/**
* Example of simple service returning true if every thing gos right
* @param form
* @param request
* @param response
* @return
* @throws IOException
* @throws TransformationException
*/
public 1.5.0/docs/api/java/lang/Boolean.html">Boolean uploadFilesSimple
(ActionForm form,
HttpServletRequest request,
HttpServletResponse response
) throws 1.5.0/docs/api/java/io/IOException.html">IOException, TransformationException
{
JsonWidgetFileUploadExampleForm filesUploadForm =
(JsonWidgetFileUploadExampleForm
) form
;
FilesUploadResult result = filesUploadForm.
getFilesUploadResult();
for(FileUploaded f: result.
getUploadedFiles())
{
1.5.0/docs/api/java/io/File.html">File tmpFile =
new 1.5.0/docs/api/java/io/File.html">File(Globals.
TMP_DIR +
1.5.0/docs/api/java/io/File.html">File.
separator + f.
getTmpName());
if(tmpFile.
exists())
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println( f.
getFileName() +
" in tmp : " + f.
getTmpName() +
" has size " + tmpFile.
length());
addMessageAsString
(request,
"Ficheiro " + f.
getFileName() +
" importado com sucesso");
}
else
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println("FAIL: file is not in tmp: " + f.
getFileName() +
" in tmp : " + f.
getTmpName());
addErrorAsString
(request,
"Ficheiro " + f.
getFileName() +
" falhou a importação");
return false;
}
}
return true;
}
/**
* Example of service with feedback
* @param form
* @param request
* @param response
* @return
* @throws IOException
* @throws TransformationException
* @throws JSONException
*/
public JSONObject uploadFilesFeedback
(ActionForm form,
HttpServletRequest request,
HttpServletResponse response
) throws 1.5.0/docs/api/java/io/IOException.html">IOException, TransformationException, JSONException
{
JsonWidgetFileUploadExampleForm filesUploadForm =
(JsonWidgetFileUploadExampleForm
) form
;
FilesUploadResult result = filesUploadForm.
getFilesUploadResult();
JSONObject returnResult =
new JSONObject
();
JSONArray readedFilesFeedback =
new JSONArray
();
returnResult.
put("readedFilesFeedback",readedFilesFeedback
);
//Vamos usar este array para colocar os novos
JSONArray persistentNewFiles =
new JSONArray
();
returnResult.
put("persistentNewFiles",persistentNewFiles
);
for(FileUploaded f: result.
getUploadedFiles())
{
1.5.0/docs/api/java/io/File.html">File tmpFile =
new 1.5.0/docs/api/java/io/File.html">File(Globals.
TMP_DIR +
1.5.0/docs/api/java/io/File.html">File.
separator + f.
getTmpName());
tmpFile.
length();
JSONObject readedFile =
new JSONObject
();
readedFilesFeedback.
put(readedFile
);
readedFile.
put("fileName",f.
getFileName());
readedFile.
put("tmpName",f.
getTmpName());
readedFile.
put("arriveSize",
"" +
(tmpFile.
length()/1024
));
readedFile.
put("title",
"" + f.
getTitle());
readedFile.
put("description",
"" + f.
getDescription());
if(tmpFile.
exists())
{
readedFile.
put("upload",
"ok");
addMessageAsString
(request,
"Ficheiro " + f.
getFileName() +
" importado com sucesso");
}
else
{
readedFile.
put("upload",
"fail");
addErrorAsString
(request,
"Ficheiro " + f.
getFileName() +
" falhou a importação");
}
f.
setTmpName(null);
f.
setRepositoryStream("999999");
persistentNewFiles.
put(FileUploaded.
serializeJson(f
));
}
return returnResult
;
}
}