|
@@ -18,6 +18,7 @@ import java.util.logging.LogManager;
|
|
|
import java.util.logging.Logger;
|
|
import java.util.logging.Logger;
|
|
|
|
|
|
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.ServletException;
|
|
|
|
|
+import javax.servlet.http.HttpServlet;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
@@ -27,22 +28,42 @@ import cz.hsrs.db.pool.SQLExecutor;
|
|
|
import cz.hsrs.db.util.AlertUtil;
|
|
import cz.hsrs.db.util.AlertUtil;
|
|
|
import cz.hsrs.db.util.ServerUtil;
|
|
import cz.hsrs.db.util.ServerUtil;
|
|
|
|
|
|
|
|
|
|
+import static cz.hsrs.servlet.feeder.ServiceParameters.*;
|
|
|
|
|
|
|
|
-public class FeederServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
|
|
|
|
|
|
|
+
|
|
|
|
|
+public class FeederServlet extends HttpServlet {
|
|
|
static final long serialVersionUID = 1L;
|
|
static final long serialVersionUID = 1L;
|
|
|
|
|
|
|
|
- public static Logger logger = Logger.getLogger(SQLExecutor.LOGGER_ID);
|
|
|
|
|
|
|
+ private static final Logger logger = Logger.getLogger(FeederServlet.class.getSimpleName());
|
|
|
|
|
+
|
|
|
private static final List<URL> BACKUP_URLS = new LinkedList<>();
|
|
private static final List<URL> BACKUP_URLS = new LinkedList<>();
|
|
|
-
|
|
|
|
|
|
|
|
|
|
- private static String getTimeZone(){
|
|
|
|
|
- Calendar cal = Calendar.getInstance();
|
|
|
|
|
- int z = ((cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / (60 * 1000)/60);
|
|
|
|
|
- return "+0"+String.valueOf(z).subSequence(0, 1)+"00";
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void init() throws ServletException {
|
|
|
|
|
+ String propFile = getServletContext().getRealPath("WEB-INF/database.properties");
|
|
|
|
|
+ Properties prop = new Properties();
|
|
|
|
|
+ try {
|
|
|
|
|
+ prop.load(new FileInputStream(propFile));
|
|
|
|
|
+ SQLExecutor.setProperties(prop);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ logger.log(Level.SEVERE, e.getMessage(), e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /* Initialize logging properties */
|
|
|
|
|
+ try {
|
|
|
|
|
+ FileInputStream fstrem = new FileInputStream(new File(getServletContext().getRealPath("WEB-INF/logging.properties")));
|
|
|
|
|
+ LogManager.getLogManager().readConfiguration(fstrem);
|
|
|
|
|
+ logger.log(Level.INFO, "Logging inialized Succesefully!");
|
|
|
|
|
+ } catch (SecurityException | IOException e1) {
|
|
|
|
|
+ logger.log(Level.SEVERE, e1.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ SQLExecutor.setProperties(prop);
|
|
|
|
|
+ super.init();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- protected void doGet(HttpServletRequest request,
|
|
|
|
|
- HttpServletResponse response) throws ServletException, IOException {
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
|
|
|
|
|
|
/* Forward request to other servers */
|
|
/* Forward request to other servers */
|
|
|
try {
|
|
try {
|
|
@@ -51,69 +72,53 @@ public class FeederServlet extends javax.servlet.http.HttpServlet implements jav
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
logger.log(Level.WARNING, e.getMessage() + " query: " + request.getQueryString(), e);
|
|
logger.log(Level.WARNING, e.getMessage() + " query: " + request.getQueryString(), e);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- /* Insert observation request */
|
|
|
|
|
- if (request.getParameter(ServiceParameters.OPERATION).equals(ServiceParameters.INSERT_OBSERVATION)) {
|
|
|
|
|
- PrintWriter out = response.getWriter();
|
|
|
|
|
- try {
|
|
|
|
|
- out.print(insObservation(request));
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- logger.log(Level.WARNING, e.getMessage() + " query: "+ request.getQueryString(), e);
|
|
|
|
|
- out.print(false);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /* Insert position request */
|
|
|
|
|
- else if (request.getParameter(ServiceParameters.OPERATION).equals(ServiceParameters.INSERT_POSITION)) {
|
|
|
|
|
- PrintWriter out = response.getWriter();
|
|
|
|
|
- try {
|
|
|
|
|
- out.print(insPosition(request));
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- logger.log(Level.WARNING, e.getMessage()+" query: "+request.getQueryString(), e);
|
|
|
|
|
- out.print(false);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- /* Insert new alert event request */
|
|
|
|
|
- else if (request.getParameter(ServiceParameters.OPERATION).equals(ServiceParameters.INSERT_ALERT_EVENT)) {
|
|
|
|
|
- PrintWriter out = response.getWriter();
|
|
|
|
|
- try {
|
|
|
|
|
- out.print(insAlertEvent(request)); // depends on existing older event!!!
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- logger.log(Level.WARNING, e.getMessage() + " query: " + request.getQueryString(), e);
|
|
|
|
|
- out.print(false);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- /* Set solving parameter of alert event request */
|
|
|
|
|
- else if (request.getParameter(ServiceParameters.OPERATION).equals(ServiceParameters.SOLVING_ALERT_EVENT)) {
|
|
|
|
|
- PrintWriter out = response.getWriter();
|
|
|
|
|
- try {
|
|
|
|
|
- insSolvingAlertEvent(request);
|
|
|
|
|
- out.print(true);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- logger.log(Level.WARNING, e.getMessage() + " query: " + request.getQueryString(), e);
|
|
|
|
|
- out.print(false);
|
|
|
|
|
- }
|
|
|
|
|
- } else if (request.getParameter(ServiceParameters.OPERATION).equals("RESET")) {
|
|
|
|
|
- SQLExecutor.close();
|
|
|
|
|
- init();
|
|
|
|
|
- response.sendRedirect("./monitor.jsp");
|
|
|
|
|
|
|
+ String requestOperation = request.getParameter(ServiceParameters.OPERATION);
|
|
|
|
|
|
|
|
- } else if (request.getParameter(ServiceParameters.OPERATION).equals("SLEEP")) {
|
|
|
|
|
- try {
|
|
|
|
|
- Thread.sleep(20000);
|
|
|
|
|
- PrintWriter out = response.getWriter();
|
|
|
|
|
- out.print("uzzzz....");
|
|
|
|
|
- } catch (InterruptedException e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
|
|
+ PrintWriter out = response.getWriter();
|
|
|
|
|
+ try {
|
|
|
|
|
+ switch (requestOperation) {
|
|
|
|
|
+ case INSERT_OBSERVATION: { // Insert observation request
|
|
|
|
|
+ out.print(insObservation(request));
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case INSERT_POSITION: { // Insert position request
|
|
|
|
|
+ out.print(insPosition(request));
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case INSERT_ALERT_EVENT: { // Insert new alert event request
|
|
|
|
|
+ out.print(insAlertEvent(request)); // depends on existing older event!!!
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case SOLVING_ALERT_EVENT: { // Set solving parameter of alert event request
|
|
|
|
|
+ out.print(insSolvingAlertEvent(request));
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "RESET": { // Set solving parameter of alert event request
|
|
|
|
|
+ SQLExecutor.close();
|
|
|
|
|
+ init();
|
|
|
|
|
+ response.sendRedirect("./monitor.jsp");
|
|
|
|
|
+ }
|
|
|
|
|
+ case "SLEEP": {
|
|
|
|
|
+ try {
|
|
|
|
|
+ Thread.sleep(20000);
|
|
|
|
|
+ out.print("uzzzz....");
|
|
|
|
|
+ } catch (InterruptedException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ logger.log(Level.WARNING, e.getMessage() + " query: " + request.getQueryString(), e);
|
|
|
|
|
+ out.print(false);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
|
|
|
|
|
|
/* Insert position via insert.jsp page form */
|
|
/* Insert position via insert.jsp page form */
|
|
|
- if (request.getParameter(ServiceParameters.OPERATION).equals(ServiceParameters.INSERT_POSITION)) {
|
|
|
|
|
|
|
+ if (request.getParameter(ServiceParameters.OPERATION).equals(INSERT_POSITION)) {
|
|
|
PrintWriter out = response.getWriter();
|
|
PrintWriter out = response.getWriter();
|
|
|
try {
|
|
try {
|
|
|
insPosition(request);
|
|
insPosition(request);
|
|
@@ -127,7 +132,8 @@ public class FeederServlet extends javax.servlet.http.HttpServlet implements jav
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public static Date parse(String dateString) throws ParseException {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ private static Date parse(String dateString) throws ParseException {
|
|
|
final SimpleDateFormat formaterT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
|
|
final SimpleDateFormat formaterT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
|
|
|
final SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
|
|
final SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
|
|
|
|
|
|
|
@@ -155,7 +161,13 @@ public class FeederServlet extends javax.servlet.http.HttpServlet implements jav
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- protected boolean insObservation(HttpServletRequest request) throws SQLException, ParseException {
|
|
|
|
|
|
|
+ private static String getTimeZone(){
|
|
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
|
|
+ int z = ((cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / (60 * 1000)/60);
|
|
|
|
|
+ return "+0"+String.valueOf(z).subSequence(0, 1)+"00";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private static boolean insObservation(HttpServletRequest request) throws SQLException, ParseException {
|
|
|
Double value = Double.parseDouble(request.getParameter(ServiceParameters.VALUE));
|
|
Double value = Double.parseDouble(request.getParameter(ServiceParameters.VALUE));
|
|
|
String time = request.getParameter(ServiceParameters.DATE);
|
|
String time = request.getParameter(ServiceParameters.DATE);
|
|
|
long unit_id = Long.parseLong(request.getParameter(ServiceParameters.UNIT_ID));
|
|
long unit_id = Long.parseLong(request.getParameter(ServiceParameters.UNIT_ID));
|
|
@@ -164,13 +176,8 @@ public class FeederServlet extends javax.servlet.http.HttpServlet implements jav
|
|
|
Date date = parse(time);// "2008-01-02 12:00:00");
|
|
Date date = parse(time);// "2008-01-02 12:00:00");
|
|
|
return DatabaseFeedOperation.insertObservation(date, unit_id, sensor_id, value);
|
|
return DatabaseFeedOperation.insertObservation(date, unit_id, sensor_id, value);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * Method insert new position in database
|
|
|
|
|
- * @param request HTTP request with parameters
|
|
|
|
|
- * @throws SQLException while parsing request
|
|
|
|
|
- */
|
|
|
|
|
- protected boolean insPosition(HttpServletRequest request) throws SQLException {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ private static boolean insPosition(HttpServletRequest request) throws SQLException {
|
|
|
boolean inserted;
|
|
boolean inserted;
|
|
|
/* Mandatory lat and lon */
|
|
/* Mandatory lat and lon */
|
|
|
double lat = Double.parseDouble(request.getParameter(ServiceParameters.LAT));
|
|
double lat = Double.parseDouble(request.getParameter(ServiceParameters.LAT));
|
|
@@ -213,35 +220,7 @@ public class FeederServlet extends javax.servlet.http.HttpServlet implements jav
|
|
|
return inserted;
|
|
return inserted;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void init() throws ServletException {
|
|
|
|
|
- String propFile = getServletContext().getRealPath("WEB-INF/database.properties");
|
|
|
|
|
- Properties prop = new Properties();
|
|
|
|
|
- try {
|
|
|
|
|
- prop.load(new FileInputStream(propFile));
|
|
|
|
|
- SQLExecutor.setProperties(prop);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- logger.log(Level.SEVERE, e.getMessage(), e);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /* Initialize logging properties */
|
|
|
|
|
- try {
|
|
|
|
|
- FileInputStream fstrem = new FileInputStream(new File(getServletContext().getRealPath("WEB-INF/logging.properties")));
|
|
|
|
|
- LogManager.getLogManager().readConfiguration(fstrem);
|
|
|
|
|
- logger.log(Level.INFO, "Logging inialized Succesefully!");
|
|
|
|
|
- } catch (SecurityException | IOException e1) {
|
|
|
|
|
- logger.log(Level.SEVERE, e1.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- SQLExecutor.setProperties(prop);
|
|
|
|
|
- super.init();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * Method processes insertAlertEvent request
|
|
|
|
|
- * @param request - HTTP GET request
|
|
|
|
|
- * @throws Exception throws exception while parsing time stamp
|
|
|
|
|
- */
|
|
|
|
|
- protected boolean insAlertEvent(HttpServletRequest request) throws Exception {
|
|
|
|
|
|
|
+ private static boolean insAlertEvent(HttpServletRequest request) throws Exception {
|
|
|
String time = request.getParameter(ServiceParameters.DATE);
|
|
String time = request.getParameter(ServiceParameters.DATE);
|
|
|
long unit_id = Long.parseLong(request.getParameter(ServiceParameters.UNIT_ID));
|
|
long unit_id = Long.parseLong(request.getParameter(ServiceParameters.UNIT_ID));
|
|
|
int alert_id = Integer.parseInt(request.getParameter(ServiceParameters.ALERT_ID));
|
|
int alert_id = Integer.parseInt(request.getParameter(ServiceParameters.ALERT_ID));
|
|
@@ -257,13 +236,9 @@ public class FeederServlet extends javax.servlet.http.HttpServlet implements jav
|
|
|
return notOlderEvent;
|
|
return notOlderEvent;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * Method processes insert solving parameter request
|
|
|
|
|
- * @param request HTTP get request
|
|
|
|
|
- * @throws Exception while parsing alert_event_id
|
|
|
|
|
- */
|
|
|
|
|
- protected void insSolvingAlertEvent(HttpServletRequest request) throws Exception {
|
|
|
|
|
|
|
+ private static boolean insSolvingAlertEvent(HttpServletRequest request) throws Exception {
|
|
|
int event_id = Integer.parseInt(request.getParameter(ServiceParameters.ALERT_EVENT_ID));
|
|
int event_id = Integer.parseInt(request.getParameter(ServiceParameters.ALERT_EVENT_ID));
|
|
|
DatabaseFeedOperation.solvingAlertEvent(event_id);
|
|
DatabaseFeedOperation.solvingAlertEvent(event_id);
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|