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
}