2019-10-04 16:52:14 +02:00
package com.wasteinformationserver.mqtt ;
2019-10-11 16:16:28 +02:00
import com.wasteinformationserver.basicutils.Log ;
2019-11-08 10:42:22 +01:00
import com.wasteinformationserver.db.JDCB ;
2019-11-15 10:51:50 +01:00
import org.eclipse.paho.client.mqttv3.MqttClient ;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions ;
import org.eclipse.paho.client.mqttv3.MqttException ;
2019-10-04 16:52:14 +02:00
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.sql.ResultSet ;
import java.sql.SQLException ;
2019-10-11 10:48:04 +02:00
import java.text.DateFormat ;
2019-11-15 10:51:50 +01:00
import java.text.SimpleDateFormat ;
import java.util.Calendar ;
import java.util.Date ;
2019-10-11 10:48:04 +02:00
import java.util.GregorianCalendar ;
2019-10-04 16:52:14 +02:00
public class mqtt {
2019-11-15 10:51:50 +01:00
MqttClient client = null ;
2019-10-11 15:02:55 +02:00
2019-10-11 09:03:14 +02:00
public mqtt ( ) {
2019-10-04 16:52:14 +02:00
}
2019-10-11 09:03:14 +02:00
public void notifymessage ( ) {
2019-10-04 16:52:14 +02:00
2019-11-15 10:51:50 +01:00
try {
client = new MqttClient ( " tcp://192.168.65.15:1883 " , " JavaSample " ) ;
MqttConnectOptions connOpts = new MqttConnectOptions ( ) ;
connOpts . setCleanSession ( true ) ;
client . connect ( connOpts ) ;
} catch ( MqttException e ) {
e . printStackTrace ( ) ;
}
mqttreceiver mr = new mqttreceiver ( client ) ;
2019-10-04 16:52:14 +02:00
mr . addMessageReceivedListener ( new ActionListener ( ) {
@Override
public void actionPerformed ( ActionEvent e ) {
2019-10-11 15:02:55 +02:00
String temp = e . getActionCommand ( ) ;
String [ ] split = temp . split ( " , " ) ;
2019-11-15 10:51:50 +01:00
getDatabasedata ( " SELECT pickupdates.pickupdate FROM pickupdates WHERE pickupdates.citywastezoneid=(SELECT cities.zone FROM cities WHERE cities.name=' " + split [ 1 ] + " ' AND cities.wastetype=' " + split [ 2 ] + " ' AND cities.zone= " + split [ 3 ] + " ) " , split [ 2 ] , Integer . parseInt ( split [ 0 ] ) ) ;
2019-10-04 16:52:14 +02:00
}
} ) ;
2019-10-11 15:02:55 +02:00
mr . getmessage ( ) ;
2019-10-04 16:52:14 +02:00
}
2019-11-15 10:51:50 +01:00
public void getDatabasedata ( String message , String wastetyp , int clientidentify ) {
2019-10-11 10:48:04 +02:00
2019-10-11 16:16:28 +02:00
Log . debug ( message ) ;
2019-11-08 10:42:22 +01:00
JDCB Database = new JDCB ( " placeuser " , " eaL956R6yFItQVBl " , " wasteinformation " ) ;
2019-10-11 15:02:55 +02:00
ResultSet result = Database . executeQuery ( message ) ;
2019-10-11 09:03:14 +02:00
try {
2019-11-15 10:51:50 +01:00
if ( ! result . isBeforeFirst ( ) ) {
int abholtag = 0 ;
transmitmessageAbfallart ( clientidentify + " , " + wastetyp + " , " + abholtag ) ;
} else {
while ( result . next ( ) ) {
String temptime = String . valueOf ( result . getString ( " pickupdate " ) ) ;
GregorianCalendar now = new GregorianCalendar ( ) ;
DateFormat df = DateFormat . getDateTimeInstance ( DateFormat . SHORT , DateFormat . LONG ) ;
String date = df . format ( now . getTime ( ) ) ;
String [ ] parts = temptime . split ( " - " ) ;
String tempyear = parts [ 0 ] ;
String [ ] yearsplit = tempyear . split ( " 0 " ) ;
String tempyearnew = yearsplit [ 1 ] ;
String newDate = parts [ 2 ] + " . " + parts [ 1 ] + " .20 " + tempyearnew ;
String [ ] partstwo = date . split ( " " ) ;
String Datetomorrow = nexDayDate ( ) ;
int abholtag ;
if ( partstwo [ 0 ] . contains ( newDate ) | | partstwo [ 0 ] . contains ( Datetomorrow ) ) {
abholtag = 1 ;
transmitmessageAbfallart ( clientidentify + " , " + wastetyp + " , " + abholtag ) ;
} else {
abholtag = 0 ;
transmitmessageAbfallart ( clientidentify + " , " + wastetyp + " , " + abholtag ) ;
}
2019-10-11 15:02:55 +02:00
}
2019-10-11 09:03:14 +02:00
}
} catch ( SQLException e ) {
2019-11-08 14:13:32 +01:00
System . out . println ( " Exception " ) ;
2019-10-11 09:03:14 +02:00
e . printStackTrace ( ) ;
2019-10-04 16:52:14 +02:00
}
2019-10-11 09:03:14 +02:00
}
2019-10-04 16:52:14 +02:00
2019-10-11 16:14:05 +02:00
private void transmitmessageAbfallart ( String temp ) {
2019-10-04 16:52:14 +02:00
2019-11-15 10:51:50 +01:00
mqtttransmitter mt = new mqtttransmitter ( client ) ;
2019-10-11 16:16:28 +02:00
Log . debug ( temp ) ;
2019-10-11 16:14:05 +02:00
mt . sendmessage ( temp ) ;
2019-10-04 16:52:14 +02:00
}
2019-11-15 10:51:50 +01:00
private String nexDayDate ( ) {
final DateFormat dateFormat = new SimpleDateFormat ( " yyyy/MM/dd " ) ;
Date currentDate = new Date ( ) ;
Calendar c = Calendar . getInstance ( ) ;
c . setTime ( currentDate ) ;
c . add ( Calendar . DATE , 1 ) ;
Date currentDatePlusOne = c . getTime ( ) ;
String temp = dateFormat . format ( currentDatePlusOne ) ;
String split [ ] = temp . split ( " / " ) ;
String newDate = split [ 2 ] + " . " + split [ 1 ] + " . " + split [ 0 ] ;
return newDate ;
}
2019-10-11 10:48:04 +02:00
}