Some progress on fileupload

This commit is contained in:
Ziver Koc 2016-07-13 17:21:45 +02:00
parent 795893ea2e
commit c0412d40c7
12 changed files with 88 additions and 35 deletions

12
Hal.iml
View file

@ -4,20 +4,8 @@
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/resource" type="java-resource" relativeOutputPath="resource" />
<sourceFolder url="file://$MODULE_DIR$/external/sphinx4-5prealpha-src/sphinx4-core/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/external/sphinx4-5prealpha-src/sphinx4-core/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/external/sphinx4-5prealpha-src/sphinx4-data/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/lib/sphinx4-5prealpha-src/sphinx4-core/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/lib/sphinx4-5prealpha-src/sphinx4-core/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/lib/sphinx4-5prealpha-src/sphinx4-data/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/lib/sphinx4-5prealpha-src/sphinx4-samples/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/lib/java-speech-api-master/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/lib/sphinx4-5prealpha-src/sphinx4-data" />
<excludeFolder url="file://$MODULE_DIR$/lib/sphinx4-5prealpha-src/sphinx4-samples" />
<excludeFolder url="file://$MODULE_DIR$/lib/sphinx4-5prealpha-src/tests" />
</content>
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />

View file

@ -21,7 +21,7 @@
</a>
<div class="edit-mode btn-toolbar">
<div class="btn-group-vertical">
<button type="button" class="btn btn-sm btn-default" title="Change Background Image">
<button id="button-bg-edit" type="button" class="btn btn-sm btn-default" title="Change Background Image">
<span class="glyphicon glyphicon-picture" aria-hidden="true"></span>
</button>
<br />
@ -74,10 +74,11 @@
});
// BG Upload
$("#button-bg").click(function() {
$("#button-bg-edit").click(function() {
// Reset modal
//$('#bg-file-input').parent().show();
//$('#bg-file-progress').parent().hide();
$('#bg-file-input').parent().show();
$('#bg-file-progress').parent().hide();
$('#bgUploadModal').modal('show');
});
$('#bg-file-input').filer({
limit: 1,
@ -92,13 +93,14 @@
$('#bg-file-progress').parent().show();
},
success: function(data, el){
$('#bgUploadModal').modal('hide');
drawMap();
},
error: function(el){
$("bg-upload-progress").addClass("progress-bar-danger");
$("#bg-upload-progress").addClass("progress-bar-danger");
},
onProgress: function(t){
$("bg-upload-progress").css("width", t+"%");
$("#bg-upload-progress").css("width", t+"%");
},
}
});
@ -188,10 +190,10 @@
<div class="modal-body">
<center>
<div class="input-group">
<input type="file" name="files[]" multiple="multiple" id="bg-file-input">
<input type="file" name="bg-file" id="bg-file-input">
</div>
<div class="progress">
<div id="bg-file-progress" class="progress-bar progress-bar-striped active" style="width: 45%"></div>
<div id="bg-file-progress" class="progress-bar progress-bar-striped active" style="width: 1%"></div>
</div>
</center>
</div>

View file

@ -156,8 +156,7 @@ public class HalContext {
}
logger.info("DB upgrade done");
dbConf.setProperty(PROPERTY_DB_VERSION, defaultDBConf.getProperty(PROPERTY_DB_VERSION));
storeProperties();
setProperty(PROPERTY_DB_VERSION, defaultDBConf.getProperty(PROPERTY_DB_VERSION));
}
referenceDB.close();
} catch (Exception e){
@ -177,15 +176,12 @@ public class HalContext {
public static int getIntegerProperty(String key){
return Integer.parseInt(getStringProperty(key));
}
public synchronized static void storeProperties() throws SQLException {
logger.fine("Saving conf to DB...");
public static void setProperty(String key, String value) throws SQLException {
PreparedStatement stmt = db.getPreparedStatement("REPLACE INTO conf (key, value) VALUES (?, ?)");
for(Object key : dbConf.keySet()){
stmt.setObject(1, key);
stmt.setObject(2, dbConf.get(key));
stmt.addBatch();
}
DBConnection.execBatch(stmt);
stmt.setObject(1, key);
stmt.setObject(2, value);
DBConnection.exec(stmt);
dbConf.setProperty(key, value);
}
public static DBConnection getDB(){

View file

@ -49,7 +49,7 @@ public abstract class HalHttpPage implements HttpPage{
request.containsKey("json"))){
out.setHeader("Content-Type", "application/json");
JSONWriter writer = new JSONWriter(out);
writer.write(((HalJsonPage)this).jsonResponse(session,cookie, request));
writer.write(((HalJsonPage)this).jsonResponse(header, session,cookie, request));
writer.close();
}
else{
@ -66,7 +66,7 @@ public abstract class HalHttpPage implements HttpPage{
tmpl.set("rootNav", rootNav.createPagedNavInstance(header).getSubNavs());
tmpl.set("userNav", userNav.createPagedNavInstance(header).getSubNavs());
tmpl.set("alerts", HalAlertManager.getInstance().generateAlerts());
tmpl.set("content", httpRespond(session, cookie, request));
tmpl.set("content", httpRespond(header, session, cookie, request));
out.print(tmpl.compile());
}
} catch (Exception e) {
@ -90,6 +90,7 @@ public abstract class HalHttpPage implements HttpPage{
public abstract Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)
@ -99,6 +100,7 @@ public abstract class HalHttpPage implements HttpPage{
public interface HalJsonPage{
DataNode jsonResponse(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)

View file

@ -7,6 +7,7 @@ import se.hal.struct.Event;
import se.hal.struct.User;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.parser.Templator;
import zutil.ui.Configurator;
import zutil.ui.Configurator.ConfigurationParam;
@ -40,6 +41,7 @@ public class EventConfigHttpPage extends HalHttpPage {
@Override
public Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)

View file

@ -10,6 +10,7 @@ import se.hal.util.HistoryDataListSqlResult;
import se.hal.util.HistoryDataListSqlResult.HistoryData;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.parser.Templator;
import java.sql.PreparedStatement;
@ -29,6 +30,7 @@ public class EventOverviewHttpPage extends HalHttpPage {
@Override
public Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)

View file

@ -7,10 +7,17 @@ import se.hal.struct.Event;
import se.hal.struct.Sensor;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.net.http.multipart.MultipartField;
import zutil.net.http.multipart.MultipartFileField;
import zutil.net.http.multipart.MultipartParser;
import zutil.parser.Base64Decoder;
import zutil.parser.Base64Encoder;
import zutil.parser.DataNode;
import zutil.parser.Templator;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Map;
/**
@ -19,6 +26,9 @@ import java.util.Map;
public class MapHttpPage extends HalHttpPage implements HalHttpPage.HalJsonPage{
private static final String TEMPLATE = "resource/web/map.tmpl";
private String bgType;
private byte[] bgImage;
public MapHttpPage() {
super("map");
@ -28,16 +38,43 @@ public class MapHttpPage extends HalHttpPage implements HalHttpPage.HalJsonPage{
@Override
public Templator httpRespond(Map<String, Object> session,
public Templator httpRespond(HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request) throws Exception {
if ("POST".equals(header.getRequestType())){
MultipartParser multipart = new MultipartParser(header);
Iterator<MultipartField> it = multipart.iterator();
MultipartField field;
while ((field = it.next()) != null){
if (field instanceof MultipartFileField){
MultipartFileField file = (MultipartFileField)field;
String ext = FileUtil.getFileExtension(file.getFilename());
if (ext.equals("jpg") || ext.equals("png") || ext.equals("svg") || ext.equals("gif")) {
saveBgImage(ext, file.getContent());
loadBgImage();
}
}
}
return null;
}
if (request.containsKey("bgimage")){
if (bgImage == null)
loadBgImage();
// send bg image;
}
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
return tmpl;
}
@Override
public DataNode jsonResponse(Map<String, Object> session,
public DataNode jsonResponse(HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request) throws Exception {
DBConnection db = HalContext.getDB();
@ -86,4 +123,17 @@ public class MapHttpPage extends HalHttpPage implements HalHttpPage.HalJsonPage{
deviceNode.set("y", device.getY());
return deviceNode;
}
private void loadBgImage(){
String property = HalContext.getStringProperty("map_bgimage");
if (property != null) {
String[] split = property.split(",", 2);
bgType = split[0];
bgImage = Base64Decoder.decodeToByte(split[1]);
}
}
private void saveBgImage(String type, byte[] data) throws SQLException {
HalContext.setProperty("map_bgimage", type+","+ Base64Encoder.encode(data));
}
}

View file

@ -2,6 +2,7 @@ package se.hal.page;
import se.hal.intf.HalHttpPage;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.parser.Templator;
import java.util.Map;
@ -17,6 +18,7 @@ public class PCHeatMapHttpPage extends HalHttpPage {
@Override
public Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)

View file

@ -11,6 +11,7 @@ import se.hal.util.AggregateDataListSqlResult.AggregateData;
import se.hal.util.UTCTimeUtility;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.parser.DataNode;
import zutil.parser.Templator;
@ -29,6 +30,7 @@ public class PCOverviewHttpPage extends HalHttpPage implements HalHttpPage.HalJs
@Override
public Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)
@ -48,6 +50,7 @@ public class PCOverviewHttpPage extends HalHttpPage implements HalHttpPage.HalJs
@Override
public DataNode jsonResponse(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request) throws Exception {

View file

@ -7,6 +7,7 @@ import se.hal.struct.Sensor;
import se.hal.struct.User;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.parser.Templator;
import zutil.ui.Configurator;
import zutil.ui.Configurator.ConfigurationParam;
@ -40,6 +41,7 @@ public class SensorConfigHttpPage extends HalHttpPage {
@Override
public Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)

View file

@ -10,6 +10,7 @@ import se.hal.util.HistoryDataListSqlResult.HistoryData;
import se.hal.util.UTCTimeUtility;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.parser.Templator;
import java.sql.PreparedStatement;
@ -29,6 +30,7 @@ public class SensorOverviewHttpPage extends HalHttpPage {
@Override
public Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)

View file

@ -5,6 +5,7 @@ import se.hal.intf.HalHttpPage;
import se.hal.struct.User;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.net.http.HttpHeader;
import zutil.parser.Templator;
import java.util.Map;
@ -20,6 +21,7 @@ public class UserConfigHttpPage extends HalHttpPage {
@Override
public Templator httpRespond(
HttpHeader header,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)