List of usage examples for org.joda.time DateTimeComparator getTimeOnlyInstance
public static DateTimeComparator getTimeOnlyInstance()
From source file:com.quinsoft.altdomain.AltTimeDomain.java
License:Open Source License
@Override public int compare(Task task, AttributeInstance attributeInstance, AttributeDef attributeDef, Object internalValue, Object externalValue) { Object value = null;/*w ww . j av a2 s. c o m*/ try { // See if we can convert the externalValue to an internal value. But if not, then // I don't want to throw the exception because,I just want to say that the values // don't compare. In other words, in code we might be comparing a date to an invalid // date value but since I'm not actually setting the value, then I don't want to // throw the exception. value = convertExternalValue(task, attributeInstance, attributeDef, null, externalValue); } catch (Throwable t) { String strIgnore = task.readZeidonConfig(task.getApplication().getName(), "IgnoreDomainCompareError"); //String strIgnore = task.readZeidonConfig( application.getName(), "IgnoreDomainCompareError" ); if (strIgnore.equals("Y")) { return -1; } else { throw ZeidonException.wrapException(t).prependAttributeDef(attributeDef); } } try { //Object value = convertExternalValue( task, attributeDef, null, externalValue ); //Object value = externalValue; Integer rc = compareNull(task, attributeDef, internalValue, value); if (rc != null) return rc; assert internalValue instanceof DateTime; assert value instanceof DateTime; return DateTimeComparator.getTimeOnlyInstance().compare(internalValue, value); } catch (Throwable t) { throw ZeidonException.wrapException(t).prependAttributeDef(attributeDef); } }
From source file:com.quinsoft.zeidon.domains.TimeDomain.java
License:Open Source License
@Override public int compare(Task task, AttributeInstance attributeInstance, AttributeDef attributeDef, Object internalValue, Object externalValue) { try {//from w w w. j ava 2s .co m Object value = convertExternalValue(task, attributeInstance, attributeDef, null, externalValue); Integer rc = compareNull(task, attributeDef, internalValue, value); if (rc != null) return rc; assert internalValue instanceof DateTime; assert value instanceof DateTime; return DateTimeComparator.getTimeOnlyInstance().compare(internalValue, value); } catch (Throwable t) { throw ZeidonException.wrapException(t).prependAttributeDef(attributeDef); } }
From source file:javafxapplication4.JavaFXApplication4.java
@Override
public void init() throws IOException {
// Twitter ==============================
// String Test = "This is a test message";
// Twitter twitter = TwitterFactory.getSingleton();
// Status status = null;
// try {
// status = twitter.updateStatus(Test);
// } catch (TwitterException ex) {
// logger.warn("Unexpected error", e);
// }
// System.out.println("Successfully updated the status to [" + status.getText() + "].");
logger.info("Starting application...Bissmillah.");
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override/*from w ww. j ava 2 s .c o m*/
public void run() {
logger.info("Exiting application....");
ProcessBuilder processBuilder2 = new ProcessBuilder("bash", "-c",
"echo \"standby 0000\" | cec-client -d 1 -s \"standby 0\" RPI");
try {
Process process2 = processBuilder2.start();
} catch (IOException e) {
logger.warn("Unexpected error", e);
}
}
}));
moonPhase = 200;
// Get Parameter from database==========================================================
try {
c = DBConnect.connect();
SQL = "Select * from settings_parramatta";
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
id = rs.getInt("id");
platform = rs.getString("platform");
facebook_notification_enable = rs.getBoolean("facebook_notification_enable");
internet_able = rs.getBoolean("internet_able");
facebook_Receive = rs.getBoolean("facebook_Receive");
latitude = rs.getDouble("latitude");
longitude = rs.getDouble("longitude");
timezone = rs.getInt("timezone");
timeZone_ID = rs.getString("timeZone_ID");
device_name = rs.getString("device_name");
device_location = rs.getString("device_location");
pir_sensor = rs.getBoolean("pir_sensor");
calcMethod = rs.getInt("calcMethod");
AsrJuristic = rs.getInt("AsrJuristic");
fb_Access_token = rs.getString("fb_Access_token");
page_ID = rs.getString("page_ID");
maghrib_adj = rs.getInt("maghrib_adj");
max_ar_hadith_len = rs.getInt("max_ar_hadith_len");
max_en_hadith_len = rs.getInt("max_en_hadith_len");
}
c.close();
System.out.format("Prayertime server running on %s platform\n", platform);
System.out.format(
" Face Book Notification Enabled: %s \n Device is internet able: %s \n Face Book Receive posts: %s \n Facebook page ID: %s \n Latitude: %s \n Longitude: %s \n Time Zone: %s \n Calculation Method: %s \n Asr Juristic: %s \n",
facebook_notification_enable, internet_able, facebook_Receive, page_ID, latitude, longitude,
timezone, calcMethod, AsrJuristic);
System.out.format("This Device Name is:%s at %s \n", device_name, device_location);
System.out.format("Time Zone ID is:%s \n", timeZone_ID);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
if (facebook_notification_enable) {
System.out.println("facebook notification is enabled");
}
if (!facebook_notification_enable) {
System.out.println("facebook notification is not enabled");
}
if (pir_sensor) {
System.out.println("PIR sensor is enabled");
}
// facebook Client ==========================================================================
// FacebookClient facebookClient = new DefaultFacebookClient("CAAJRZCld8U30BAMmPyEHDW2tlR07At1vTmtHEmD8iHtiFWx7D2ZBroCVWQfdhxQ7h2Eohv8ZBPRk85vs2r7XC0K4ibGdFNMTkh0mJU8vui9PEnpvENOSAFD2q7CQ7NJXjlyK1yITmcrvZBAZByy4qV7whiAb2a2SN7s23nYvDgMMG3RhdPIakZBLV39pkksjYZD");
FacebookClient facebookClient = new DefaultFacebookClient(fb_Access_token);
// Pushover ==========================================================================
//https://github.com/nicatronTg/jPushover\
//
Pushover p = new Pushover("WHq3q48zEFpTqU47Wxygr3VMqoodxc", "skhELgtWRXslAUrYx9yp1s0Os89JTF");
String temp_msg = device_name + " at " + device_location + " is starting";
try {
if (internet_able) {
p.sendMessage(temp_msg);
}
}
// catch (IOException e){e.printStackTrace();}
catch (Exception e) {
System.err.println("Sending failed. " + e.getMessage());
}
// }
// test
// try
// {
// //String pageID = page_ID +"/feed?;
// String pageID = "me/feed";
// String temporary_msg = " This is an Automated test message";
// facebookClient.publish(pageID, FacebookType.class, Parameter.with("message", temporary_msg));
//
// }
// catch (FacebookException e){logger.warn("Unexpected error", e);}
//Load random Background image on strtup ===============================================
images = new ArrayList<String>();
//change on osx
if (platform.equals("osx"))
// {directory = new File("/Users/ossama/Projects/Pi/javafx/prayertime/background/");}
{
directory = new File("/Users/ossama/Dropbox/Projects/Pi/javafx/prayertime/background");
}
// {directory = new File("/Users/samia/NetBeansProjects/prayertime_files/background/");}
//change on Pi
if (platform.equals("pi")) {
directory = new File("/home/pi/prayertime/Images/");
}
files = directory.listFiles();
for (File f : files) {
images.add(f.getName());
}
System.out.println(images);
countImages = images.size();
imageNumber = (int) (Math.random() * countImages);
rand_Image_Path = directory + "/" + images.get(imageNumber);
System.out.println(rand_Image_Path);
if (!platform.equals("osx")) {
try {
broadcast_msg = "Prayer Time Server Starting";
socket1 = new DatagramSocket(null);
socket1.setBroadcast(true);
buf1 = broadcast_msg.getBytes();
group = InetAddress.getByName("255.255.255.255");
packet1 = new DatagramPacket(buf1, buf1.length, group, 8888);
socket1.send(packet1);
} catch (Exception e) {
System.err.println("Sending failed. " + e.getMessage());
}
}
// ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "echo \"as\" | cec-client -d 1 -s \"standby 0\" RPI");
// Process process = processBuilder.start();
// BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
// String line = null;
// while ((line = br.readLine()) != null) {
// System.out.println(line);
// }
// ProcessBuilder processBuilder_Athan = new ProcessBuilder("bash", "-c", "mpg123 /home/pi/prayertime/Audio/athan1.mp3");
// try {Process process3 = processBuilder_Athan.start();}
// catch (IOException e) {logger.warn("Unexpected error", e);}
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/PTBLARC.TTF").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/BMajidSh.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/Oldoutsh.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/BJadidBd.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/wlm_carton.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/Arial_Black.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/Arial_Bold.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/timeburner_regular.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/Pinstripe_Limo.ttf").toExternalForm(), 30);
Font.loadFont(JavaFXApplication4.class.getResource("Fonts/LateefRegOT.ttf").toExternalForm(), 30);
data = FXCollections.observableArrayList();
Mainpane = new GridPane();
footer_Label = new Label();
like_Label = new Label();
Moon_Image_Label = new Label();
Sunrise_Image_Label = new Label();
Phase_Label = new Label();
Moon_Date_Label = new Label();
Sunrise_Date_Label = new Label();
jamaat_Label_eng = new Label();
jamaat_Label_ar = new Label();
athan_Label_eng = new Label();
athan_Label_ar = new Label();
friday_Label_eng = new Label();
friday_Label_ar = new Label();
sunrise_Label_eng = new Label();
sunrise_Label_ar = new Label();
fajr_Label_ar = new Label();
fajr_Label_eng = new Label();
zuhr_Label_ar = new Label();
zuhr_Label_eng = new Label();
asr_Label_ar = new Label();
asr_Label_eng = new Label();
maghrib_Label_ar = new Label();
maghrib_Label_eng = new Label();
isha_Label_ar = new Label();
isha_Label_eng = new Label();
hadith_Label = new Label();
ar_moon_hadith_Label_L1 = new Label();
ar_moon_hadith_Label_L2 = new Label();
en_moon_hadith_Label_L1 = new Label();
en_moon_hadith_Label_L2 = new Label();
announcement_Label = new Label();
athan_Change_Label_L1 = new Label();
athan_Change_Label_L2 = new Label();
hour_Label = new Label();
minute_Label = new Label();
second_Label = new Label();
date_Label = new Label();
separator_Label = new Label();
divider1_Label = new Label();
divider2_Label = new Label();
fajr_hourLeft = new Label();
fajr_hourRight = new Label();
time_Separator1 = new Label();
fajr_minLeft = new Label();
fajr_minRight = new Label();
fajr_jamma_hourLeft = new Label();
fajr_jamma_hourRight = new Label();
time_jamma_Separator1 = new Label();
fajr_jamma_minLeft = new Label();
fajr_jamma_minRight = new Label();
sunrise_hourLeft = new Label();
sunrise_hourRight = new Label();
time_Separator2 = new Label();
sunrise_minLeft = new Label();
sunrise_minRight = new Label();
zuhr_hourLeft = new Label();
zuhr_hourRight = new Label();
time_Separator3 = new Label();
zuhr_minLeft = new Label();
zuhr_minRight = new Label();
zuhr_jamma_hourLeft = new Label();
zuhr_jamma_hourRight = new Label();
time_jamma_Separator2 = new Label();
zuhr_jamma_minLeft = new Label();
zuhr_jamma_minRight = new Label();
asr_hourLeft = new Label();
asr_hourRight = new Label();
time_Separator4 = new Label();
asr_minLeft = new Label();
asr_minRight = new Label();
asr_jamma_hourLeft = new Label();
asr_jamma_hourRight = new Label();
time_jamma_Separator3 = new Label();
asr_jamma_minLeft = new Label();
asr_jamma_minRight = new Label();
maghrib_hourLeft = new Label();
maghrib_hourRight = new Label();
time_Separator5 = new Label();
maghrib_minLeft = new Label();
maghrib_minRight = new Label();
maghrib_jamma_hourLeft = new Label();
maghrib_jamma_hourRight = new Label();
time_jamma_Separator4 = new Label();
maghrib_jamma_minLeft = new Label();
maghrib_jamma_minRight = new Label();
isha_hourLeft = new Label();
isha_hourRight = new Label();
time_Separator6 = new Label();
isha_minLeft = new Label();
isha_minRight = new Label();
isha_jamma_hourLeft = new Label();
isha_jamma_hourRight = new Label();
time_jamma_Separator5 = new Label();
isha_jamma_minLeft = new Label();
isha_jamma_minRight = new Label();
friday_hourLeft = new Label();
friday_hourRight = new Label();
time_Separator8 = new Label();
friday_minLeft = new Label();
friday_minRight = new Label();
friday2_hourLeft = new Label();
friday2_hourRight = new Label();
time_Separator9 = new Label();
friday2_minLeft = new Label();
friday2_minRight = new Label();
facebook_Label = new Label();
athan_Label_ar.setId("prayer-label-arabic");
athan_Label_ar.setText("");
prayertime_pane.setHalignment(athan_Label_ar, HPos.CENTER);
athan_Label_eng.setId("prayer-label-english");
athan_Label_eng.setText("Athan");
prayertime_pane.setHalignment(athan_Label_eng, HPos.CENTER);
jamaat_Label_ar.setId("prayer-label-arabic");
jamaat_Label_ar.setText("");
prayertime_pane.setHalignment(jamaat_Label_ar, HPos.CENTER);
jamaat_Label_eng.setId("prayer-label-english");
jamaat_Label_eng.setText("Congregation");
prayertime_pane.setHalignment(jamaat_Label_eng, HPos.CENTER);
sunrise_Label_ar.setId("prayer-label-arabic");
sunrise_Label_ar.setText("");
prayertime_pane.setHalignment(sunrise_Label_ar, HPos.CENTER);
sunrise_Label_eng.setId("prayer-label-english");
sunrise_Label_eng.setText("Sunrise");
prayertime_pane.setHalignment(sunrise_Label_eng, HPos.CENTER);
friday_Label_ar.setId("prayer-label-arabic");
friday_Label_ar.setText("");
prayertime_pane.setHalignment(friday_Label_ar, HPos.CENTER);
friday_Label_eng.setId("prayer-label-english");
friday_Label_eng.setText("Friday");
prayertime_pane.setHalignment(friday_Label_eng, HPos.CENTER);
isha_Label_ar.setId("prayer-label-arabic");
isha_Label_ar.setText("");
prayertime_pane.setHalignment(isha_Label_ar, HPos.CENTER);
isha_Label_eng.setId("prayer-label-english");
isha_Label_eng.setText("Isha");
prayertime_pane.setHalignment(isha_Label_eng, HPos.CENTER);
maghrib_Label_ar.setId("prayer-label-arabic");
maghrib_Label_ar.setText("");
prayertime_pane.setHalignment(maghrib_Label_ar, HPos.CENTER);
maghrib_Label_eng.setId("prayer-label-english");
maghrib_Label_eng.setText("Maghrib");
prayertime_pane.setHalignment(maghrib_Label_eng, HPos.CENTER);
asr_Label_ar.setId("prayer-label-arabic");
asr_Label_ar.setText("");
GridPane.setHalignment(asr_Label_ar, HPos.CENTER);
asr_Label_eng.setId("prayer-label-english");
asr_Label_eng.setText("Asr");
GridPane.setHalignment(asr_Label_eng, HPos.CENTER);
zuhr_Label_ar.setId("prayer-label-arabic");
zuhr_Label_ar.setText("");
GridPane.setHalignment(zuhr_Label_ar, HPos.CENTER);
zuhr_Label_eng.setId("prayer-label-english");
zuhr_Label_eng.setText("Duhr");
GridPane.setHalignment(zuhr_Label_eng, HPos.CENTER);
fajr_Label_ar.setId("prayer-label-arabic");
fajr_Label_ar.setText("?");
GridPane.setHalignment(fajr_Label_ar, HPos.CENTER);
fajr_Label_eng.setId("prayer-label-english");
fajr_Label_eng.setText("Fajr");
GridPane.setHalignment(fajr_Label_eng, HPos.CENTER);
Timer prayerCalcTimer = new Timer();
prayerCalcTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
// Moon m = new Moon();
// moonPhase = m.illuminatedPercentage();
// isWaning = m.isWaning();
// update_moon_image = true;
// System.out.println("The moon is " + moonPhase + "% full and " + (isWaning ? "waning" : "waxing"));
//
Locale.setDefault(new Locale("en", "AU"));
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
// cal.add(Calendar.DAY_OF_MONTH, -3);
// cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.setFirstDayOfWeek(Calendar.MONDAY);
dayofweek_int = cal.get(Calendar.DAY_OF_WEEK);
String date = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
PrayTime getprayertime = new PrayTime();
getprayertime.setTimeFormat(0);
getprayertime.setCalcMethod(calcMethod);
getprayertime.setAsrJuristic(AsrJuristic);
getprayertime.setAdjustHighLats(0);
int[] offsets = { 0, 0, 0, 0, 0, 0, 0 }; // {Fajr,Sunrise,Dhuhr,Asr,Sunset,Maghrib,Isha}
getprayertime.tune(offsets);
Date time = cal.getTime();
System.out
.println(" daylight saving? " + TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time));
// The following calculate the next daylight saving date
DateTimeZone zone = DateTimeZone.forID(timeZone_ID);
DateTimeFormatter format = DateTimeFormat.mediumDateTime();
// long current = System.currentTimeMillis();
// for (int i=0; i < 1; i++)
// {
// long next = zone.nextTransition(current);
// if (current == next)
// {
// break;
// }
// System.out.println ("Next Daylight saving Change: " + format.print(next) + " Into DST? "
// + !zone.isStandardOffset(next));
// current = next;
// }
long next = zone.nextTransition(System.currentTimeMillis());
Date nextTransitionDate = new Date(next);
Format format1 = new SimpleDateFormat("yyyy MM dd HH:mm:ss");
format1.format(nextTransitionDate).toString();
Calendar nextTransitionCal = Calendar.getInstance();
nextTransitionCal.setTime(nextTransitionDate);
// Date fajr_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm").parse(next);
nextTransitionCal.add(Calendar.DAY_OF_MONTH, -7);
nextTransitionCal.set(Calendar.HOUR_OF_DAY, 0);
System.out.println("Next Daylight saving Check (-7 days): " + nextTransitionCal.getTime());
ArrayList<String> prayerTimes = getprayertime.getPrayerTimes(cal, latitude, longitude,
timezone);
ArrayList<String> prayerNames = getprayertime.getTimeNames();
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
Date fajr_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + new Time(formatter.parse(prayerTimes.get(0)).getTime()));
cal.setTime(fajr_temp);
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
cal.add(Calendar.MINUTE, 60);
}
Date fajr = cal.getTime();
fajr_cal = Calendar.getInstance();
fajr_cal.setTime(fajr);
fajr_begins_time = fajr_cal.getTime();
System.out.println(" fajr time " + fajr_begins_time);
Date sunrise_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + new Time(formatter.parse(prayerTimes.get(1)).getTime()));
cal.setTime(sunrise_temp);
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
cal.add(Calendar.MINUTE, 60);
}
Date sunrise = cal.getTime();
sunrise_cal = Calendar.getInstance();
sunrise_cal.setTime(sunrise);
sunrise_time = sunrise_cal.getTime();
System.out.println(" sunrise time " + sunrise_time);
cal.add(Calendar.MINUTE, 15);
Date duha = cal.getTime();
// System.out.println(duha);
duha_cal = Calendar.getInstance();
duha_cal.setTime(duha);
duha_cal.set(Calendar.MILLISECOND, 0);
duha_cal.set(Calendar.SECOND, 0);
System.out.println(" Duha alarm time " + duha_cal.getTime());
Date zuhr_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + new Time(formatter.parse(prayerTimes.get(2)).getTime()));
cal.setTime(zuhr_temp);
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
cal.add(Calendar.MINUTE, 60);
}
Date zuhr = cal.getTime();
zuhr_cal = Calendar.getInstance();
zuhr_cal.setTime(zuhr);
zuhr_begins_time = zuhr_cal.getTime();
System.out.println(" Zuhr time " + zuhr_begins_time);
Date asr_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + new Time(formatter.parse(prayerTimes.get(3)).getTime()));
cal.setTime(asr_temp);
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
cal.add(Calendar.MINUTE, 60);
}
Date asr = cal.getTime();
asr_cal = Calendar.getInstance();
asr_cal.setTime(asr);
asr_begins_time = asr_cal.getTime();
System.out.println(" Asr time " + asr_begins_time);
Date maghrib_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + new Time(formatter.parse(prayerTimes.get(5)).getTime()));
cal.setTime(maghrib_temp);
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
cal.add(Calendar.MINUTE, 60);
}
Date maghrib = cal.getTime();
maghrib_cal = Calendar.getInstance();
maghrib_cal.setTime(maghrib);
maghrib_begins_time = maghrib_cal.getTime();
System.out.println(" maghrib time " + maghrib_begins_time);
maghrib_plus15_cal = (Calendar) maghrib_cal.clone();
maghrib_plus15_cal.add(Calendar.MINUTE, +15);
Date isha_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + new Time(formatter.parse(prayerTimes.get(6)).getTime()));
cal.setTime(isha_temp);
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
cal.add(Calendar.MINUTE, 60);
}
Date isha = cal.getTime();
isha_cal = Calendar.getInstance();
isha_cal.setTime(isha);
isha_begins_time = isha_cal.getTime();
System.out.println(" isha time " + isha_begins_time);
// set friday prayer here
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
friday_jamaat = "12:45";
friday2_jamaat = "01:20";
} else {
friday_jamaat = "12:45";
friday2_jamaat = "01:20";
}
update_prayer_labels = true;
getFacebook = true;
DateTime_now = new DateTime();
Calendar_now = Calendar.getInstance();
Calendar_now.setTime(new Date());
Calendar_now.set(Calendar.MILLISECOND, 0);
Calendar_now.set(Calendar.SECOND, 0);
Calendar_now.set(Calendar.MINUTE, 0);
Calendar_now.set(Calendar.HOUR_OF_DAY, 0);
tzSAUDI_ARABIA = DateTimeZone.forID("Asia/Riyadh");
dtIslamic = DateTime_now.withChronology(
IslamicChronology.getInstance(tzSAUDI_ARABIA, IslamicChronology.LEAP_YEAR_15_BASED));
System.out.print("Arabic Date: ");
System.out.print(dtIslamic.getMonthOfYear());
System.out.print("/");
System.out.println(dtIslamic.getDayOfMonth());
if (dtIslamic.getMonthOfYear() == 9) {
System.out.println("==========Ramadan Moubarik==========");
}
//enable athan play time
if (dayofweek_int != olddayofweek_int) {
Moon m = new Moon();
moonPhase = m.illuminatedPercentage();
isWaning = m.isWaning();
update_moon_image = true;
System.out.println(
"The moon is " + moonPhase + "% full and " + (isWaning ? "waning" : "waxing"));
// old_today = Calendar.getInstance();
olddayofweek_int = dayofweek_int;
// System.out.println("current day of the week " + dayofweek_int );
// System.out.println("old day of the week " + olddayofweek_int );
// System.out.println(" cal: " + cal );
fajr_athan_enable = true;
duha_athan_enable = true;
zuhr_athan_enable = true;
asr_athan_enable = true;
maghrib_athan_enable = true;
isha_athan_enable = true;
getHadith = true;
//==============JAMAA Prayer time
try {
c = DBConnect.connect();
// System.out.println("connected");
SQL = "select * from paramatta_prayertimes where DATE(date) = DATE(NOW())";
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
id = rs.getInt("id");
prayer_date = rs.getDate("date");
fajr_jamaat_time = rs.getTime("fajr_jamaat");
zuhr_jamaat_time = rs.getTime("zuhr_jamaat");
asr_jamaat_time = rs.getTime("asr_jamaat");
maghrib_jamaat_time = rs.getTime("maghrib_jamaat");
isha_jamaat_time = rs.getTime("isha_jamaat");
}
c.close();
fajr_jamaat = fajr_jamaat_time.toString();
zuhr_jamaat = zuhr_jamaat_time.toString();
// if (TimeZone.getTimeZone( timeZone_ID).inDaylightTime( time )){zuhr_jamaat = "01:15";}
//
// else
// {
//
// HolidayManager HOLIDAY = HolidayManager.getInstance(HolidayCalendar.AUSTRALIA);
// Set<Holiday> holidays = HOLIDAY.getHolidays(2014, "NSW");
// System.out.println(holidays);
// System.out.println(dayofweek_int);
// if (dayofweek_int == 1 || dayofweek_int == 7)
// {
// zuhr_jamaat = "12:15";
// }
// else{zuhr_jamaat = "01:15";}
// }
asr_jamaat = asr_jamaat_time.toString();
maghrib_jamaat = maghrib_jamaat_time.toString();
isha_jamaat = isha_jamaat_time.toString();
// print the results
System.out.format("%s,%s,%s,%s,%s,%s,%s \n", id, prayer_date, fajr_jamaat, zuhr_jamaat,
asr_jamaat, maghrib_jamaat, isha_jamaat);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
//==============Prayer notification - setup notification timming
Date fajr_jamaat_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + fajr_jamaat);
cal.setTime(fajr_jamaat_temp);
cal.add(Calendar.MINUTE, 5);
Date fajr_jamaat = cal.getTime();
fajr_jamaat_update_cal = Calendar.getInstance();
fajr_jamaat_update_cal.setTime(fajr_jamaat);
fajr_jamaat_update_cal.set(Calendar.MILLISECOND, 0);
fajr_jamaat_update_cal.set(Calendar.SECOND, 0);
fajr_jamaat_cal = (Calendar) fajr_jamaat_update_cal.clone();
fajr_jamaat_cal.add(Calendar.MINUTE, -5);
// System.out.println("fajr Jamaat update scheduled at:" + fajr_jamaat_update_cal.getTime());
Date zuhr_jamaat_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + zuhr_jamaat);
cal.setTime(zuhr_jamaat_temp);
Date zuhr_jamaat_Date = cal.getTime();
zuhr_jamaat_cal = Calendar.getInstance();
zuhr_jamaat_cal.setTime(zuhr_jamaat_Date);
zuhr_jamaat_cal.set(Calendar.MILLISECOND, 0);
zuhr_jamaat_cal.set(Calendar.SECOND, 0);
zuhr_plus15_cal = (Calendar) zuhr_jamaat_cal.clone();
zuhr_plus15_cal.add(Calendar.MINUTE, +15);
Date asr_jamaat_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + asr_jamaat);
cal.setTime(asr_jamaat_temp);
cal.add(Calendar.MINUTE, 5);
Date asr_jamaat = cal.getTime();
asr_jamaat_update_cal = Calendar.getInstance();
asr_jamaat_update_cal.setTime(asr_jamaat);
asr_jamaat_update_cal.set(Calendar.MILLISECOND, 0);
asr_jamaat_update_cal.set(Calendar.SECOND, 0);
// System.out.println("asr Jamaat update scheduled at:" + asr_jamaat_update_cal.getTime());
asr_jamaat_cal = (Calendar) asr_jamaat_update_cal.clone();
asr_jamaat_cal.add(Calendar.MINUTE, -5);
// maghrib_jamaat_cal = (Calendar)maghrib_cal.clone();
// maghrib_jamaat_cal.add(Calendar.MINUTE, maghrib_adj);
Date maghrib_jamaat_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + maghrib_jamaat);
cal.setTime(maghrib_jamaat_temp);
cal.add(Calendar.MINUTE, 5);
Date maghrib_jamaat = cal.getTime();
maghrib_jamaat_update_cal = Calendar.getInstance();
maghrib_jamaat_update_cal.setTime(maghrib_jamaat);
maghrib_jamaat_update_cal.set(Calendar.MILLISECOND, 0);
maghrib_jamaat_update_cal.set(Calendar.SECOND, 0);
// System.out.println("maghrib Jamaat update scheduled at:" + maghrib_jamaat_update_cal.getTime());
maghrib_jamaat_cal = (Calendar) maghrib_jamaat_update_cal.clone();
maghrib_jamaat_cal.add(Calendar.MINUTE, -5);
Date isha_jamaat_temp = new SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(date + " " + isha_jamaat);
cal.setTime(isha_jamaat_temp);
cal.add(Calendar.MINUTE, 5);
Date isha_jamaat = cal.getTime();
isha_jamaat_update_cal = Calendar.getInstance();
isha_jamaat_update_cal.setTime(isha_jamaat);
isha_jamaat_update_cal.set(Calendar.MILLISECOND, 0);
isha_jamaat_update_cal.set(Calendar.SECOND, 0);
// System.out.println("Isha Jamaat update scheduled at:" + isha_jamaat_update_cal.getTime());
isha_jamaat_cal = (Calendar) isha_jamaat_update_cal.clone();
isha_jamaat_cal.add(Calendar.MINUTE, -5);
//==============Prayer time change notification logic + 5days
// check excel file in documentation folder for a flow chart
// check if a notification has already been sent, to avoid flooding users with notifications, i.e during a system restart
ar_notification_Msg_Lines = null;
try {
c = DBConnect.connect();
SQL = "Select * from notification where id = (select max(id) from notification)";
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
id = rs.getInt("id");
notification_Date = rs.getDate("notification_Date");
en_message_String = rs.getString("en_message_String");
ar_message_String = rs.getString("ar_message_String");
notification_Sent = rs.getBoolean("notification_Sent");
}
c.close();
System.out.format("%s,%s,%s,%s \n", notification_Date, en_message_String,
ar_message_String, notification_Sent);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
notification_Date_cal = Calendar.getInstance();
notification_Date_cal.setTime(notification_Date);
notification_Date_cal.set(Calendar.MILLISECOND, 0);
notification_Date_cal.set(Calendar.SECOND, 0);
// System.out.println("notification_Date_cal:" + notification_Date_cal.getTime());
// System.out.println("Calendar_now: " + Calendar_now.getTime());
if (Calendar_now.compareTo(notification_Date_cal) < 0) //&& !notification_Sent
{
en_notification_Msg = en_message_String;
ar_notification_Msg = ar_message_String;
ar_notification_Msg_Lines = ar_notification_Msg.split("\\r?\\n");
en_notification_Msg_Lines = en_notification_Msg.split("\\r?\\n");
athan_Change_Label_visible = true;
getFacebook = false;
}
if (Calendar_now.compareTo(notification_Date_cal) >= 0) //&& !notification_Sent
{
athan_Change_Label_visible = false;
try {
c = DBConnect.connect();
SQL = "select * from paramatta_prayertimes where DATE(date) = DATE(NOW() ) + INTERVAL 2 DAY ";
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
future_prayer_date = rs.getDate("date");
future_fajr_jamaat_time = rs.getTime("fajr_jamaat");
future_asr_jamaat_time = rs.getTime("asr_jamaat");
future_maghrib_jamaat_time = rs.getTime("maghrib_jamaat");
future_isha_jamaat_time = rs.getTime("isha_jamaat");
}
c.close();
// print the results
System.out.format("%s,%s,%s,%s,%s \n", future_prayer_date, future_fajr_jamaat_time,
future_asr_jamaat_time, future_maghrib_jamaat_time,
future_isha_jamaat_time);
if (!fajr_jamaat_time.equals(future_fajr_jamaat_time)) {
System.out.println("Fajr Prayer Time Difference");
fajr_jamma_time_change = true;
notification = true;
java.sql.Date sqlDate = new java.sql.Date(future_prayer_date.getTime());
c = DBConnect.connect();
PreparedStatement ps = c.prepareStatement(
"INSERT INTO prayertime.notification (notification_Date) VALUE (?)");
ps.setDate(1, sqlDate);
ps.executeUpdate();
c.close();
}
if (!asr_jamaat_time.equals(future_asr_jamaat_time)) {
System.out.println("asr Prayer Time Difference");
asr_jamma_time_change = true;
if (!notification) {
java.sql.Date sqlDate = new java.sql.Date(future_prayer_date.getTime());
c = DBConnect.connect();
PreparedStatement ps = c.prepareStatement(
"INSERT INTO prayertime.notification (notification_Date) VALUE (?)");
ps.setDate(1, sqlDate);
ps.executeUpdate();
c.close();
}
notification = true;
}
if (!maghrib_jamaat_time.equals(future_maghrib_jamaat_time)) {
System.out.println("maghrib Prayer Time Difference");
maghrib_jamma_time_change = true;
if (!notification) {
java.sql.Date sqlDate = new java.sql.Date(future_prayer_date.getTime());
c = DBConnect.connect();
PreparedStatement ps = c.prepareStatement(
"INSERT INTO prayertime.notification (notification_Date) VALUE (?)");
ps.setDate(1, sqlDate);
ps.executeUpdate();
c.close();
}
notification = true;
}
if (!isha_jamaat_time.equals(future_isha_jamaat_time)) {
System.out.println("isha Prayer Time Difference");
isha_jamma_time_change = true;
if (!notification) {
java.sql.Date sqlDate = new java.sql.Date(future_prayer_date.getTime());
c = DBConnect.connect();
PreparedStatement ps = c.prepareStatement(
"INSERT INTO prayertime.notification (notification_Date) VALUE (?)");
ps.setDate(1, sqlDate);
ps.executeUpdate();
c.close();
}
notification = true;
}
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
}
fullMoon = MoonPhaseFinder.findFullMoonFollowing(Calendar.getInstance());
newMoon = MoonPhaseFinder.findNewMoonFollowing(Calendar.getInstance());
System.out.println("The moon is full on " + fullMoon);
System.out.println("The moon is new on " + newMoon);
if (newMoon.before(fullMoon)) {
System.out.println("New moon is before full moon");
} else {
System.out.println("Full moon is before new moon");
}
pir_disactive_startup = false;
// ======= Notification for ashura and full moon 5 days earlier, 2 days before fasting period
//TODO Use moonsighting.info to get moon sighting observations
Days d = Days.daysBetween(new DateMidnight(DateTime_now), new DateMidnight(fullMoon));
int days_Between_Now_Fullmoon = d.getDays();
System.out.format("Days left to full moon: %s\n", days_Between_Now_Fullmoon);
fullMoon_plus1 = (Date) fullMoon.clone();
Date ashura = (Date) fullMoon.clone();
DateTimeComparator comparator = DateTimeComparator.getTimeOnlyInstance();
// System.out.println(days_Between_Now_Fullmoon);
if (dtIslamic.getMonthOfYear() == 1 && days_Between_Now_Fullmoon == 9
&& comparator.compare(fullMoon, maghrib_cal) > 0) {
//hide hadith label boolean
getHadith = false;
// getFacebook = false;
hadith_Label_visible = false;
//show moon notification label boolean
moon_hadith_Label_visible = true;
// 15 - 9 = 6 Ashura = fullMoon_plus1.setTime(fullMoon.getTime() - 4 * 24 * 60 * 60 * 1000);
try {
c = DBConnect.connect();
SQL = "select hadith, translated_hadith from hadith WHERE (translated_hadith LIKE '%Ashura%') and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
hadith = rs.getString("hadith");
translated_hadith = rs.getString("translated_hadith");
}
c.close();
System.out.println("Ashura arabic hadith length" + hadith.length());
System.out.println("Ashura english hadith length" + translated_hadith.length());
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
ashura.setTime(fullMoon.getTime() - 4 * 24 * 60 * 60 * 1000);
String Ashura_dow_ar = new SimpleDateFormat("' 'EEEE' '", new Locale("ar"))
.format(ashura);
String Ashura_dow_en = new SimpleDateFormat("EEEE").format(ashura);
String temp_ar_text1 = " ";
String temp_ar_text2 = " . ? ";
ar_moon_notification = temp_ar_text1 + Ashura_dow_ar + temp_ar_text2;
en_moon_notification = "A reminder that the 10th of Muharram \"Ashura\" will fall on "
+ Ashura_dow_en
+ ", It is recommended to fast either the 9th & 10th of Muharram or the 10th & 11th ";
facebook_moon_notification_Msg = ar_moon_notification + "\n\n" + en_moon_notification;
if (facebook_notification_enable) {
try {
//String pageID = page_ID +"/feed?;
String pageID = "me/feed";
facebookClient.publish(pageID, FacebookType.class,
Parameter.with("message", facebook_moon_notification_Msg));
System.out.println("Full Moon Notification Sent to Facebook:");
System.out.println(facebook_moon_notification_Msg);
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
}
}
}
else if (dtIslamic.getMonthOfYear() == 1 && days_Between_Now_Fullmoon == 9) {
//hide hadith label boolean
getHadith = false;
// getFacebook = false;
hadith_Label_visible = false;
//show moon notification label boolean
moon_hadith_Label_visible = true;
// 15 - 9 = 6 Ashura = fullMoon_plus1.setTime(fullMoon.getTime() - 5 * 24 * 60 * 60 * 1000);
}
if (dtIslamic.getMonthOfYear() != 9 && days_Between_Now_Fullmoon <= 5
&& days_Between_Now_Fullmoon >= 2) {
//hide hadith label boolean
getHadith = false;
// getFacebook = false;
hadith_Label_visible = false;
//show moon notification label boolean
moon_hadith_Label_visible = true;
try {
c = DBConnect.connect();
SQL = "select hadith, translated_hadith from hadith WHERE day = '15' ORDER BY RAND( ) LIMIT 1";
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
ar_full_moon_hadith = rs.getString("hadith");
en_full_moon_hadith = rs.getString("translated_hadith");
}
c.close();
System.out.format("Full Moon arabic hadith: %s\n", ar_full_moon_hadith);
System.out.format("Full Moon english hadith: %s\n", en_full_moon_hadith);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
if (days_Between_Now_Fullmoon == 5 && comparator.compare(fullMoon, maghrib_cal) < 0) {
fullMoon_plus1.setTime(fullMoon.getTime() - 2 * 24 * 60 * 60 * 1000);
String FullMoon_dow_ar = new SimpleDateFormat("' 'EEEE' '", new Locale("ar"))
.format(fullMoon_plus1);
String FullMoon_dow_en = new SimpleDateFormat("EEEE").format(fullMoon_plus1);
String temp_ar_text1 = " ? ? ";
String temp_ar_text2 = " ? . ";
ar_moon_notification = temp_ar_text1 + FullMoon_dow_ar + temp_ar_text2;
en_moon_notification = "We would like to remind our dear brothers & sisters that this month's \"White days\" will start this "
+ FullMoon_dow_en
+ ", it is recommended to fast these days. Pls note that this is based on calendar calculations not moon sighting observations";
facebook_moon_notification_Msg = ar_moon_notification + "\n\n"
+ en_moon_notification;
// try
// {
// //String pageID = page_ID +"/feed?;
// String pageID = "me/feed";
// facebookClient.publish(pageID, FacebookType.class, Parameter.with("message", facebook_moon_notification_Msg));
// }
// catch (FacebookException e){logger.warn("Unexpected error", e);}
// System.out.println("Full Moon Notification Sent to Facebook:" );
// System.out.println(facebook_moon_notification_Msg);
}
else if (days_Between_Now_Fullmoon == 5) {
if (comparator.compare(fullMoon, maghrib_cal) > 0) {
fullMoon_plus1.setTime(fullMoon.getTime() - 1 * 24 * 60 * 60 * 1000);
String FullMoon_dow_ar = new SimpleDateFormat("' 'EEEE' '", new Locale("ar"))
.format(fullMoon_plus1);
String FullMoon_dow_en = new SimpleDateFormat("EEEE").format(fullMoon_plus1);
String temp_ar_text1 = " ? ? ";
String temp_ar_text2 = " ? . ";
ar_moon_notification = temp_ar_text1 + FullMoon_dow_ar + temp_ar_text2;
en_moon_notification = "We would like to remind our dear brothers & sisters that this month's \"White days\" will start this "
+ FullMoon_dow_en
+ ", it is recommended to fast these days. Pls note that this is based on calendar calculations not moon sighting observations";
facebook_moon_notification_Msg = ar_moon_notification + "\n\n"
+ en_moon_notification;
if (facebook_notification_enable) {
try {
//String pageID = page_ID +"/feed?;
String pageID = "me/feed";
facebookClient.publish(pageID, FacebookType.class,
Parameter.with("message", facebook_moon_notification_Msg));
System.out.println("Full Moon Notification Sent to Facebook:");
System.out.println(facebook_moon_notification_Msg);
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
}
}
}
else {
fullMoon_plus1.setTime(fullMoon.getTime() - 2 * 24 * 60 * 60 * 1000);
String FullMoon_dow_ar = new SimpleDateFormat("' 'EEEE' '", new Locale("ar"))
.format(fullMoon_plus1);
String FullMoon_dow_en = new SimpleDateFormat("EEEE").format(fullMoon_plus1);
String temp_ar_text1 = " ? ? ";
String temp_ar_text2 = " ? . ";
ar_moon_notification = temp_ar_text1 + FullMoon_dow_ar + temp_ar_text2;
en_moon_notification = "We would like to remind our dear brothers & sisters that this month's \"White days\" will start this "
+ FullMoon_dow_en
+ ", it is recommended to fast these days. Pls note that this is based on calendar calculations not moon sighting observations";
facebook_moon_notification_Msg = ar_moon_notification + "\n\n"
+ en_moon_notification;
System.out.println("Full Moon Notification:");
System.out.println(facebook_moon_notification_Msg);
}
}
else if (days_Between_Now_Fullmoon == 3) {
if (comparator.compare(fullMoon, maghrib_cal) > 0) {
fullMoon_plus1.setTime(fullMoon.getTime() - 1 * 24 * 60 * 60 * 1000);
String FullMoon_dow_ar = new SimpleDateFormat("' 'EEEE' '", new Locale("ar"))
.format(fullMoon_plus1);
String FullMoon_dow_en = new SimpleDateFormat("EEEE").format(fullMoon_plus1);
String temp_ar_text1 = " ? ? ";
String temp_ar_text2 = " ? . ";
ar_moon_notification = temp_ar_text1 + FullMoon_dow_ar + temp_ar_text2;
en_moon_notification = "We would like to remind our dear brothers & sisters that this month's \"White days\" will start this "
+ FullMoon_dow_en
+ ", it is recommended to fast these days. Pls note that this is based on calendar calculations not moon sighting observations";
facebook_moon_notification_Msg = ar_moon_notification + "\n\n"
+ en_moon_notification;
}
else {
String temp_ar_text1 = " ? ? ";
String temp_ar_text2 = " ? . ";
ar_moon_notification = temp_ar_text1 + temp_ar_text2;
en_moon_notification = "We would like to remind our dear brothers & sisters that this month's \"White days\" will start tomorrow, it is recommended to fast these days. Pls note that this is based on calendar calculations not moon sighting observations";
facebook_moon_notification_Msg = ar_moon_notification + "\n\n"
+ en_moon_notification;
if (facebook_notification_enable) {
try {
//String pageID = page_ID +"/feed?;
String pageID = "me/feed";
facebookClient.publish(pageID, FacebookType.class,
Parameter.with("message", facebook_moon_notification_Msg));
System.out.println("Full Moon Notification Sent to Facebook:");
System.out.println(facebook_moon_notification_Msg);
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
}
}
}
}
else if (days_Between_Now_Fullmoon == 2
&& comparator.compare(fullMoon, maghrib_cal) > 0) {
String temp_ar_text1 = " ? ? ";
String temp_ar_text2 = " ? . ";
ar_moon_notification = temp_ar_text1 + temp_ar_text2;
System.out.println(ar_moon_notification);
en_moon_notification = "We would like to remind our dear brothers & sisters that this month's \"White days\" will start tomorrow, it is recommended to fast these days. Pls note that this is based on calendar calculations not moon sighting observations";
System.out.println(en_moon_notification);
facebook_moon_notification_Msg = ar_moon_notification + "\n\n"
+ en_moon_notification;
if (facebook_notification_enable) {
try {
//String pageID = page_ID +"/feed?;
String pageID = "me/feed";
facebookClient.publish(pageID, FacebookType.class,
Parameter.with("message", facebook_moon_notification_Msg));
System.out.println("Full Moon Notification Sent to Facebook:");
System.out.println(facebook_moon_notification_Msg);
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
}
}
}
else {
getHadith = true;
moon_hadith_Label_visible = false;
hadith_Label_visible = true;
System.out.println("moon else");
}
}
else if (days_Between_Now_Fullmoon > 5 || days_Between_Now_Fullmoon < 2
|| dtIslamic.getMonthOfYear() != 1) {
getHadith = true;
// getFacebook = true;
//hide moon notification label boolean
moon_hadith_Label_visible = false;
//show hadith label boolean
hadith_Label_visible = true;
}
}
//TODO Prayer time change notification/////////////////////put this in a thread, so error does not stop code further down ========================================================
// creates message to send to facebook
// creates labels for notification
if (notification) {
ar_notification_Msg_Lines = null;
// Calendar_now.setTime(future_prayer_date);
Calendar prayertime_Change_Due_Date = null;
prayertime_Change_Due_Date = Calendar.getInstance();
prayertime_Change_Due_Date.setTime(future_prayer_date);
System.out.println("Calendar_now: " + Calendar_now.getTime());
int day = prayertime_Change_Due_Date.get(Calendar.DAY_OF_MONTH);
String dayStr = day + suffixes[day];
String en_notification_date = new SimpleDateFormat("EEEE").format(future_prayer_date);
String en_notification_date1 = new SimpleDateFormat("' of ' MMMM")
.format(future_prayer_date);
String ar_notification_date = new SimpleDateFormat(" EEEE d MMMM ", new Locale("ar"))
.format(future_prayer_date);
labeconv = " " + ar_notification_date
+ " \n";
StringBuilder builder = new StringBuilder();
for (int i = 0; i < labeconv.length(); i++) {
if (Character.isDigit(labeconv.charAt(i))) {
builder.append(arabicChars[(int) (labeconv.charAt(i)) - 48]);
} else {
builder.append(labeconv.charAt(i));
}
}
ar_notification_Msg = builder.toString();
en_notification_Msg = "Starting from " + en_notification_date + " the " + dayStr
+ en_notification_date1 + " the following prayer time(s) will change\n";
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm");
// en_notification_Msg = "Time change\nTime saving will be in effect as of *Sunday, November 03, 2013*\nAll prayer times will move back by one hour.\nJummah prayer will be at 1:00 PM";
if (fajr_jamma_time_change) {
String future_fajr_jamaat_time_mod = DATE_FORMAT.format(future_fajr_jamaat_time);
// Date future_fajr_jamaat_time_mod = new SimpleDateFormat("HH:mm").parse("Fajr time: " + future_fajr_jamaat_time);
en_notification_Msg = en_notification_Msg + "Fajr: " + future_fajr_jamaat_time_mod
+ " ";
ar_notification_Msg = ar_notification_Msg + "?: " + future_fajr_jamaat_time_mod
+ " ";
fajr_jamma_time_change = false;
}
if (Calendar_now.compareTo(nextTransitionCal) == 0) {
if (TimeZone.getTimeZone(timeZone_ID).inDaylightTime(time)) {
future_zuhr_jamaat_time = "12:15";
} else {
future_zuhr_jamaat_time = "13:15";
}
en_notification_Msg = en_notification_Msg + "Duhr & Friday: " + future_zuhr_jamaat_time
+ " ";
ar_notification_Msg = ar_notification_Msg + " : "
+ future_zuhr_jamaat_time + " ";
}
if (asr_jamma_time_change) {
String future_asr_jamaat_time_mod = DATE_FORMAT.format(future_asr_jamaat_time);
// Date future_fajr_jamaat_time_mod = new SimpleDateFormat("HH:mm").parse("Fajr time: " + future_fajr_jamaat_time);
en_notification_Msg = en_notification_Msg + "Asr: " + future_asr_jamaat_time_mod
+ " ";
ar_notification_Msg = ar_notification_Msg + ": " + future_asr_jamaat_time_mod
+ " ";
asr_jamma_time_change = false;
}
if (maghrib_jamma_time_change) {
String future_maghrib_jamaat_time_mod = DATE_FORMAT.format(future_maghrib_jamaat_time);
// Date future_maghrib_jamaat_time_mod = new SimpleDateFormat("HH:mm").parse("Fajr time: " + future_maghrib_jamaat_time);
en_notification_Msg = en_notification_Msg + "Maghrib: "
+ future_maghrib_jamaat_time_mod;
ar_notification_Msg = ar_notification_Msg + ": "
+ future_maghrib_jamaat_time_mod;
maghrib_jamma_time_change = false;
}
if (isha_jamma_time_change) {
String future_isha_jamaat_time_mod = DATE_FORMAT.format(future_isha_jamaat_time);
// Date future_fajr_jamaat_time_mod = new SimpleDateFormat("HH:mm").parse("Fajr time: " + future_fajr_jamaat_time);
en_notification_Msg = en_notification_Msg + "Isha: " + future_isha_jamaat_time_mod;
ar_notification_Msg = ar_notification_Msg + ": "
+ future_isha_jamaat_time_mod;
isha_jamma_time_change = false;
}
try {
c = DBConnect.connect();
Statement st = (Statement) c.createStatement();
st.executeUpdate("UPDATE prayertime.notification SET en_message_String='"
+ en_notification_Msg + "' ORDER BY id DESC LIMIT 1");
st.executeUpdate("UPDATE prayertime.notification SET ar_message_String= '"
+ ar_notification_Msg + "' ORDER BY id DESC LIMIT 1");
c.close();
ar_notification_Msg_Lines = ar_notification_Msg.split("\\r?\\n");
en_notification_Msg_Lines = en_notification_Msg.split("\\r?\\n");
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
notification = false;
athan_Change_Label_visible = true;
getFacebook = false;
notification_Msg = ar_notification_Msg_Lines[0] + "\n" + ar_notification_Msg_Lines[1]
+ "\n\n" + en_notification_Msg_Lines[0] + "\n" + en_notification_Msg_Lines[1];
System.out.println(notification_Msg);
// Twitter twitter = TwitterFactory.getSingleton();
// Status status = null;
// try {status = twitter.updateStatus(notification_Msg);}
// catch (TwitterException ex) {logger.warn("Unexpected error", e);}
// System.out.println("Successfully updated the status to [" + status.getText() + "].");
System.out.println("Notification Sent to Facebook");
if (facebook_notification_enable) {
try {
//String pageID = page_ID +"/feed?;
String pageID = "me/feed";
facebookClient.publish(pageID, FacebookType.class,
Parameter.with("message", notification_Msg));
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
}
try {
p.sendMessage(en_notification_Msg);
} catch (Exception e) {
{
logger.warn("Unexpected error", e);
}
}
}
if (isStarting) {
isStarting = false;
}
// Get Facebook Latest Post =================================================================================
if (getFacebook && facebook_Receive && internet_able) {
getFacebook = false;
facebook_Text_Post = false;
facebook_Picture_Post = false;
facebook_post = "";
// facebook_Post_Url = "";
facebook_Fan_Count = "";
Calendar facebook_created_time_calendar = null;
Calendar facebook_photo_created_time_calendar = null;
Calendar facebook_check_post_date = Calendar.getInstance();
facebook_check_post_date.add(Calendar.DAY_OF_MONTH, -6);
long facebook_check_post_Unix_Time = facebook_check_post_date.getTimeInMillis() / 1000;
// out.println(facebook_check_post_Unix_Time);
String query = "SELECT message,timeline_visibility, created_time FROM stream WHERE source_id = "
+ page_ID
+ " AND message AND strlen(attachment.fb_object_type) < 1 AND type != 56 AND type = 46 AND strpos(message, \"prayer time(s)\") < 0 AND strpos(message, \"White days\") < 0 AND strpos(message, \"Hadith of the Day:\") < 0 AND created_time > "
+ facebook_check_post_Unix_Time + " LIMIT 1";
// String query = "{\"messages\":\"SELECT message,timeline_visibility, created_time FROM stream WHERE source_id = " + page_ID + " AND message AND strlen(attachment.fb_object_type) < 1 AND type != 56 AND type = 46 AND strpos(message, \'prayer time(s)\') < 0 AND strpos(message, \'White days\') < 0 AND strpos(message, \'Hadith of the Day:\') < 0 AND created_time > " + facebook_check_post_Unix_Time + " LIMIT 1\" , \"count\": \"SELECT fan_count FROM page WHERE page_id = " + page_ID + "\"}";
// out.println(query);
try {
List<JsonObject> queryResults = facebookClient.executeFqlQuery(query, JsonObject.class);
if (!queryResults.isEmpty()) {
JsonObject facebookPost_J = queryResults.get(0);
facebook_post = facebookPost_J.getString("message");
// facebook_post = "Asalamualaikum,\n" + "We have been given a large printer/copier for administration at Daar Ibn\n Abbas. Is there any brothers available to pick it up from Lakemba? ";
String[] lines = facebook_post.split("\r\n|\r|\n");
if (null != facebook_post && !"".equals(facebook_post)) {
if (facebook_post.contains("\n\n")) {
out.println("'/n/n' detected");
facebook_post = facebook_post.replace("\n\n", "\n");
out.println(facebook_post);
}
facebook_created_time_calendar = Calendar
.getInstance(TimeZone.getTimeZone(timeZone_ID));
facebook_created_time_calendar
.setTimeInMillis(queryResults.get(0).getLong("created_time") * 1000);
// out.print("Comment posted on:"); out.println(facebook_created_time_calendar.getTime());
if (facebook_post.contains("tonight") || facebook_post.contains("today") && Days
.daysBetween(new DateMidnight(DateTime_now),
new DateMidnight(facebook_created_time_calendar))
.getDays() != 0) {
out.println(
"Facebook post contains either the word 'today' or 'tonight' and has not been posted today");
facebook_post = "";
facebook_Label_visible = false;
}
else if (facebook_post.length() > 390 || lines.length > 6) {
System.out.println("Facebook post is too large, it will not be posted");
System.out.println("Facebook lines: " + lines.length);
System.out.println("Facebook string length: " + facebook_post.length());
facebook_post = "";
facebook_Label_visible = false;
}
else {
facebook_Text_Post = true;
facebook_Label_visible = true;
facebook_Label_visible_set_once = true;
}
}
} else {
out.println("Facebook post is empty");
}
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
query = "SELECT fan_count FROM page WHERE page_id = " + page_ID;
try {
List<JsonObject> queryResults = facebookClient.executeFqlQuery(query, JsonObject.class);
facebook_Fan_Count = queryResults.get(0).getString("fan_count");
out.println("Page Likes: " + facebook_Fan_Count);
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
query = "SELECT attachment.media.photo.images.src, created_time FROM stream WHERE source_id = "
+ page_ID + " AND type = 247 AND created_time > " + facebook_check_post_Unix_Time
+ " LIMIT 1";
try {
List<JsonObject> queryResults = facebookClient.executeFqlQuery(query, JsonObject.class);
if (!queryResults.isEmpty()) {
if (null != facebook_Post_Url && !"".equals(facebook_Post_Url)) {
old_facebook_Post_Url = new String(facebook_Post_Url);
}
// out.println(old_facebook_Post_Url);
try {
facebook_Post_Url = queryResults.get(0).getJsonObject("attachment")
.getJsonArray("media").getJsonObject(0).getJsonObject("photo")
.getJsonArray("images").getJsonObject(1).getString("src");
} catch (Exception e) {
logger.warn("facebook post url exception", e);
}
out.println(facebook_Post_Url);
facebook_photo_created_time_calendar = Calendar
.getInstance(TimeZone.getTimeZone(timeZone_ID));
facebook_photo_created_time_calendar
.setTimeInMillis(queryResults.get(0).getLong("created_time") * 1000);
out.print("Comment posted on:");
out.println(facebook_photo_created_time_calendar.getTime());
if (null != facebook_Post_Url && !"".equals(facebook_Post_Url)) {
if (null != old_facebook_Post_Url && !"".equals(old_facebook_Post_Url)) {
if (facebook_Post_Url.equals(old_facebook_Post_Url)) {
out.print(
"Facebook photo post has not changed from previous fetch, nothing has been set");
}
if (!facebook_Post_Url.equals(old_facebook_Post_Url)) {
facebook_Picture_Post = true;
facebook_Label_visible = true;
facebook_Label_visible_set_once = true;
}
}
else {
facebook_Picture_Post = true;
facebook_Label_visible = true;
facebook_Label_visible_set_once = true;
}
}
}
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
//compare text and picture post dates, if facebook_Picture_Post && facebook_Text_Post are true, and dates are not null
// which ever was posted last, clear facebook_post = ""; or facebook_Post_Url = "";
if (facebook_Picture_Post && facebook_Text_Post) {
if (facebook_photo_created_time_calendar.before(facebook_created_time_calendar)) {
facebook_Post_Url = "";
}
else {
facebook_post = "";
}
}
}
// Get Daily Hadith =================================================================================
if (getHadith) {
getHadith = false;
try {
c = DBConnect.connect();
if (dtIslamic.getMonthOfYear() == 9 && dtIslamic.getDayOfMonth() < 19) {
SQL = "select hadith, translated_hadith from hadith WHERE topic = 'fasting' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
}
// if (dtIslamic.getMonthOfYear()==9){SQL ="select hadith, translated_hadith from hadith WHERE ID = 2872";}
else if (dtIslamic.getMonthOfYear() == 9 && dtIslamic.getDayOfMonth() > 19) {
SQL = "select hadith, translated_hadith from hadith WHERE topic = 'Virtues of the Night of Qadr' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
} else if (dtIslamic.getMonthOfYear() == 9 && dtIslamic.getDayOfMonth() > 28) {
SQL = "select hadith, translated_hadith from hadith WHERE translated_hadith LIKE '%fitr %' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
} else if (dtIslamic.getMonthOfYear() == 10 && dtIslamic.getDayOfMonth() == 1) {
SQL = "select hadith, translated_hadith from hadith WHERE translated_hadith LIKE '%fitr %' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
}
//SELECT * FROM hadith WHERE translated_hadith LIKE '%fitr %'
else if (dtIslamic.getMonthOfYear() == 12 && dtIslamic.getDayOfMonth() < 13) {
SQL = "select hadith, translated_hadith from hadith WHERE topic = 'Hajj (Pilgrimage)' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
} else if (dayofweek_int == 6) {
SQL = "select hadith, translated_hadith from hadith WHERE day = '5' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
}
else if (dtIslamic.getMonthOfYear() == 1 && dtIslamic.getDayOfMonth() > 7
&& dtIslamic.getDayOfMonth() < 12) {
SQL = "select hadith, translated_hadith from hadith WHERE (translated_hadith LIKE '%Ashura%') and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
}
else {
SQL = "select * from hadith WHERE day = '0' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
// SQL = "select * from hadith where length(translated_hadith)>527"; // the bigest Hadith
}
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
hadith = rs.getString("hadith");
translated_hadith = rs.getString("translated_hadith");
}
c.close();
System.out.println("arabic hadith length" + hadith.length());
System.out.println(" english hadith length" + translated_hadith.length());
// 528 length should be the max allowed for the hadith in english, generally arabic hadith is smaller than english translation
facebook_hadith = "Hadith of the Day:\n\n" + hadith + "\n\n" + translated_hadith;
// check if a notification has already been sent, to avoid flooding users with notifications, i.e during system restarts
c = DBConnect.connect();
SQL = "Select * from facebook_hadith_notification where id = (select max(id) from facebook_hadith_notification)";
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
id = rs.getInt("id");
hadith_notification_Date = rs.getDate("notification_date");
}
c.close();
hadith_notification_Date_cal = Calendar.getInstance();
hadith_notification_Date_cal.setTime(hadith_notification_Date);
hadith_notification_Date_cal.set(Calendar.MILLISECOND, 0);
hadith_notification_Date_cal.set(Calendar.SECOND, 0);
// System.out.println(hadith_notification_Date_cal.getTime());
System.out.println(Calendar_now.getTime());
if (Calendar_now.compareTo(hadith_notification_Date_cal) == 0) {
System.out.println("hadith has already been posted today to Facebook");
}
if (Calendar_now.compareTo(hadith_notification_Date_cal) != 0) {
try {
if (facebook_notification_enable) {
try {
String pageID = "me/feed";
facebookClient.publish(pageID, FacebookType.class,
Parameter.with("message", facebook_hadith));
// DefaultFacebookClient fbClient;
// fbClient = new DefaultFacebookClient(pageAccessToken);
// fbClient.publish("me/feed", FacebookType.class, Parameter.with("message", "Aloha! ;)"));
c = DBConnect.connect();
PreparedStatement ps = c.prepareStatement(
"INSERT INTO prayertime.facebook_hadith_notification (notification_date) VALUE (?)");
java.sql.Timestamp mysqldate = new java.sql.Timestamp(
new java.util.Date().getTime());
ps.setTimestamp(1, mysqldate);
ps.executeUpdate();
c.close();
System.out.println("hadith posted to Facebook: \n" + facebook_hadith);
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
}
}
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
}
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
}
}
catch (SQLException e) {
System.out.println("Error on Database connection");
logger.warn("Unexpected error", e);
} catch (ParseException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
}
}, 0, 3600000);
// }, 0, 120000);
// Timer to traslate labels from arabic to english on the screen====================================================
// translate_lastTimerCall = System.nanoTime();
translate_timer = new AnimationTimer() {
@Override
public void handle(long now) {
if (now > translate_lastTimerCall + 40000_000_000l) {
try {
update_labels();
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
translate_lastTimerCall = now;
}
}
};
// Timer to update clock====================================================
// translate_lastTimerCall = System.nanoTime();
clock_update_timer = new AnimationTimer() {
@Override
public void handle(long now) {
if (now > clock_update_lastTimerCall + 1000_000_000l) {
try {
play_athan();
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
clock_update_lastTimerCall = now;
}
}
};
hour_Label.textProperty().bind(hour);
minute_Label.textProperty().bind(minute);
second_Label.textProperty().bind(second);
date_Label.textProperty().bind(date);
Timeline clock = new Timeline(new KeyFrame(Duration.seconds(0), evt -> {
LocalTime now = LocalTime.now();
hour.set(new SimpleDateFormat("h").format(new Date()));
minute.set(String.format("%02d", now.getMinute()));
second.set(String.format("%d", now.getSecond()));
date.set(new SimpleDateFormat("EEEE, d MMMM").format(Calendar_now.getTime()));
}), new KeyFrame(Duration.seconds(1)));
clock.setCycleCount(Animation.INDEFINITE);
clock.play();
// Timer to change friday prayer label====================================================
// translate_lastTimerCall = System.nanoTime();
// friday_update_timer = new AnimationTimer() {
// @Override public void handle(long now) {
// if (now > friday_update_lastTimerCall + 1500_000_000l)
// {
// try {update_friday_label();}
// catch (Exception e) {logger.warn("Unexpected error", e);}
// friday_update_lastTimerCall = now;
// }
// }
// };
// PIR sensor thread to turn on/Off TV screen to save energy ===============================================================
new Thread(() -> {
// try {
// Thread.sleep(1000);
// } catch (InterruptedException ex) {
// java.util.logging.Logger.getLogger(JavaFXApplication4.class.getName()).log(Level.SEVERE, null, ex);
// }
final GpioController gpioSensor = GpioFactory.getInstance();
sensor_lastTimerCall = System.nanoTime();
final GpioPinDigitalInput sensor = gpioSensor.provisionDigitalInputPin(RaspiPin.GPIO_02,
PinPullResistance.PULL_DOWN);
sensor.addListener(new GpioPinListenerDigital() {
@Override
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
if (event.getState().isHigh()) {
sensor_lastTimerCall = System.nanoTime();
if (!hdmiOn && !pir_disactive_startup) {
if (!prayer_In_Progress) {
ProcessBuilder processBuilder1 = new ProcessBuilder("bash", "-c",
"echo \"as\" | cec-client -d 1 -s \"standby 0\" RPI");
hdmiOn = true;
startup = false;
System.out.println("Tv turned on");
try {
Thread.sleep(2500);
processBuilder1.start();
Thread.sleep(2500);
processBuilder1.start();
} catch (IOException e) {
logger.warn("Unexpected error", e);
} catch (InterruptedException ex) {
java.util.logging.Logger.getLogger(JavaFXApplication4.class.getName())
.log(Level.SEVERE, null, ex);
}
}
if (prayer_In_Progress) {
Calendar cal = Calendar.getInstance();
int hour_Now_int = cal.get(Calendar.HOUR_OF_DAY);
int hourbefore_fajr_int = fajr_cal.get(Calendar.HOUR_OF_DAY) - 1;
hourbefore_fajr_int = hourbefore_fajr_int - 1;
// System.out.println("hour now is" + hour_Now_int);
// System.out.println("fajr hour -1 hour is" + hourbefore_fajr_int);
if (hour_Now_int >= 0 && hour_Now_int <= hourbefore_fajr_int) {
System.out.println("prayer detected in after hours");
if (System.nanoTime() > proximity_lastTimerCall
+ delay_turnOnTV_after_Prayers_nightmode) {
// System.out.println(proximity_lastTimerCall + delay_turnOnTV_after_Prayers_nightmode);
// System.out.println(System.nanoTime());
ProcessBuilder processBuilder1 = new ProcessBuilder("bash", "-c",
"echo \"as\" | cec-client -d 1 -s \"standby 0\" RPI");
hdmiOn = true;
prayer_In_Progress = false;
System.out.println("Tv turned on");
try {
Thread.sleep(2500);
processBuilder1.start();
Thread.sleep(2500);
processBuilder1.start();
} catch (IOException e) {
logger.warn("Unexpected error", e);
} catch (InterruptedException ex) {
java.util.logging.Logger.getLogger(JavaFXApplication4.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
else {
System.out.println("prayer detected during normal hours");
if (fajr_prayer_In_Progress_notification && cal.after(fajr_jamaat_cal)
&& cal.before(fajr_jamaat_update_cal)) {
fajr_prayer_In_Progress_notification = false;
Pushover p = new Pushover("WHq3q48zEFpTqU47Wxygr3VMqoodxc",
"skhELgtWRXslAUrYx9yp1s0Os89JTF");
try {
p.sendMessage("Fajr Jamaa at Daar Ibn Abass has just started");
System.out.println("Prayer in progress notification sent");
} catch (IOException e) {
e.printStackTrace();
}
send_Broadcast_msg = true;
broadcast_msg = "Fajr Jamaa at Daar Ibn Abass has just started";
}
if (zuhr_prayer_In_Progress_notification && cal.after(zuhr_jamaat_cal)
&& cal.before(zuhr_plus15_cal)) {
zuhr_prayer_In_Progress_notification = false;
Pushover p = new Pushover("WHq3q48zEFpTqU47Wxygr3VMqoodxc",
"skhELgtWRXslAUrYx9yp1s0Os89JTF");
try {
p.sendMessage("Zuhr Jamaa at Daar Ibn Abass has just started");
System.out.println("Prayer in progress notification sent");
} catch (IOException e) {
e.printStackTrace();
}
send_Broadcast_msg = true;
broadcast_msg = "Zuhr Jamaa at Daar Ibn Abass has just started";
}
if (asr_prayer_In_Progress_notification && cal.after(asr_jamaat_cal)
&& cal.before(asr_jamaat_update_cal)) {
asr_prayer_In_Progress_notification = false;
Pushover p = new Pushover("WHq3q48zEFpTqU47Wxygr3VMqoodxc",
"skhELgtWRXslAUrYx9yp1s0Os89JTF");
try {
p.sendMessage("Asr Jamaa at Daar Ibn Abass has just started");
System.out.println("Prayer in progress notification sent");
} catch (IOException e) {
e.printStackTrace();
}
send_Broadcast_msg = true;
broadcast_msg = "Asr Jamaa at Daar Ibn Abass has just started";
}
if (maghrib_prayer_In_Progress_notification && cal.after(maghrib_cal)
&& cal.before(maghrib_plus15_cal)) {
maghrib_prayer_In_Progress_notification = false;
Pushover p = new Pushover("WHq3q48zEFpTqU47Wxygr3VMqoodxc",
"skhELgtWRXslAUrYx9yp1s0Os89JTF");
try {
p.sendMessage("Maghrib Jamaa at Daar Ibn Abass has just started");
System.out.println("Prayer in progress notification sent");
} catch (IOException e) {
e.printStackTrace();
}
send_Broadcast_msg = true;
broadcast_msg = "Maghrib Jamaa at Daar Ibn Abass has just started";
}
if (isha_prayer_In_Progress_notification && cal.after(isha_jamaat_cal)
&& cal.before(isha_jamaat_update_cal)) {
isha_prayer_In_Progress_notification = false;
Pushover p = new Pushover("WHq3q48zEFpTqU47Wxygr3VMqoodxc",
"skhELgtWRXslAUrYx9yp1s0Os89JTF");
try {
p.sendMessage("Isha Jamaa at Daar Ibn Abass has just started");
System.out.println("Prayer in progress notification sent");
} catch (IOException e) {
e.printStackTrace();
}
send_Broadcast_msg = true;
broadcast_msg = "Isha Jamaa at Daar Ibn Abass has just started";
}
if (System.nanoTime() > proximity_lastTimerCall
+ delay_turnOnTV_after_Prayers) {
// System.out.println(proximity_lastTimerCall + delay_turnOnTV_after_Prayers);
// System.out.println(System.nanoTime());
ProcessBuilder processBuilder1 = new ProcessBuilder("bash", "-c",
"echo \"as\" | cec-client -d 1 -s \"standby 0\" RPI");
hdmiOn = true;
prayer_In_Progress = false;
System.out.println("Tv turned on");
try {
Thread.sleep(2500);
processBuilder1.start();
Thread.sleep(2500);
processBuilder1.start();
} catch (IOException e) {
logger.warn("Unexpected error", e);
} catch (InterruptedException ex) {
java.util.logging.Logger.getLogger(JavaFXApplication4.class.getName())
.log(Level.SEVERE, null, ex);
}
}
if (send_Broadcast_msg) {
try {
send_Broadcast_msg = false;
socket1 = new DatagramSocket(null);
socket1.setBroadcast(true);
buf1 = broadcast_msg.getBytes();
group = InetAddress.getByName("255.255.255.255");
packet1 = new DatagramPacket(buf1, buf1.length, group, 8888);
socket1.send(packet1);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
}
}
}
}
}
if (event.getState().isLow()) {
sensorLow = true;
}
}
});
System.out.println(" ... Motion Detection Starting.....");
for (;;) {
try {
if (System.nanoTime() > sensor_lastTimerCall + delay_turnOffTV_after_inactivity && sensorLow
&& hdmiOn || startup) {
startup = false;
System.out.println("All is quiet...");
ProcessBuilder processBuilder2 = new ProcessBuilder("bash", "-c",
"echo \"standby 0000\" | cec-client -d 1 -s \"standby 0\" RPI");
hdmiOn = false;
try {
Process process2 = processBuilder2.start();
} catch (IOException e) {
logger.warn("Unexpected error", e);
}
sensor_lastTimerCall = System.nanoTime();
sensorLow = false;
}
Thread.sleep(1000);
} catch (InterruptedException e) {
gpioSensor.shutdown();
Thread.currentThread().interrupt();
}
}
}).start();
// //Infrared sensor thread to turn on/Off TV screen when Prayer starts ===============================================================
new Thread(() -> {
System.out.println(" ... Prayer Detection Starting.....");
for (;;) {
try {
DatagramSocket socket = new DatagramSocket(8888, InetAddress.getByName("0.0.0.0"));
socket.setBroadcast(true);
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while (true) {
socket.receive(packet);
String received = new String(packet.getData(), 0, packet.getLength());
System.out.println("UDP Packet received: " + received);
proximity_lastTimerCall = System.nanoTime();
if (received.equals("Prayer in progress") && pir_sensor) {
ProcessBuilder processBuilder2 = new ProcessBuilder("bash", "-c",
"echo \"standby 0000\" | cec-client -d 1 -s \"standby 0\" RPI");
try {
if (hdmiOn) {
Process process2 = processBuilder2.start();
System.out.println("Prayer in Progress...Turning Off TV(s)");
Thread.sleep(1000);
hdmiOn = false;
prayer_In_Progress = true;
proximity_lastTimerCall = System.nanoTime();
}
} catch (IOException e) {
logger.warn("Unexpected error", e);
}
}
else if (received.equals("refresh background")) {
try {
System.out.println("Changing Background...");
images = new ArrayList<String>();
//change on osx
if (platform.equals("osx"))
// {directory = new File("/Users/ossama/Projects/Pi/javafx/prayertime/background/");}
{
directory = new File(
"/Users/ossama/Dropbox/Projects/Pi/javafx/prayertime/background");
}
// {directory = new File("/Users/samia/NetBeansProjects/prayertime_files/background/");}
//change on Pi
if (platform.equals("pi")) {
directory = new File("/home/pi/prayertime/Images/");
}
files = directory.listFiles();
for (File f : files) {
images.add(f.getName());
}
System.out.println(images);
countImages = images.size();
imageNumber = (int) (Math.random() * countImages);
rand_Image_Path = directory + "/" + images.get(imageNumber);
System.out.println(rand_Image_Path);
String image = new File(rand_Image_Path).toURI().toURL().toString();
Platform.runLater(new Runnable() {
@Override
public void run() {
Mainpane.setStyle("-fx-background-image: url('" + image
+ "'); -fx-background-image-repeat: repeat; -fx-background-size: 1080 1920;-fx-background-position: bottom left;");
}
});
} catch (IOException e) {
logger.warn("Unexpected error", e);
}
}
else if (received.equals("refresh hadith")) {
System.out.println("Getting Hadith...");
try {
c = DBConnect.connect();
if (dtIslamic.getMonthOfYear() == 9) {
SQL = "select hadith, translated_hadith from hadith WHERE topic = 'fasting' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
}
// if (dtIslamic.getMonthOfYear()==9){SQL ="select hadith, translated_hadith from hadith WHERE ID = 2872";}
else if (dtIslamic.getMonthOfYear() == 12) {
SQL = "select hadith, translated_hadith from hadith WHERE topic = 'Hajj (Pilgrimage)' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
} else if (dayofweek_int == 5 || dayofweek_int == 6) {
SQL = "select hadith, translated_hadith from hadith WHERE day = '5' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
} else {
SQL = "select * from hadith WHERE day = '0' and length(translated_hadith)<"
+ max_en_hadith_len + " and length(hadith)<" + max_ar_hadith_len
+ " ORDER BY RAND( ) LIMIT 1";
// SQL = "select * from hadith where length(translated_hadith)>527"; // the bigest Hadith
}
rs = c.createStatement().executeQuery(SQL);
while (rs.next()) {
hadith = rs.getString("hadith");
translated_hadith = rs.getString("translated_hadith");
}
c.close();
System.out.println("arabic hadith length" + hadith.length());
System.out.println(" english hadith length" + translated_hadith.length());
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
}
if (received.equals("prayer call")) {
ProcessBuilder processBuilder_Athan = new ProcessBuilder("bash", "-c",
"mpg123 /home/pi/prayertime/Audio/athan1.mp3");
try {
Process process = processBuilder_Athan.start();
} catch (IOException e) {
logger.warn("Unexpected error", e);
}
}
if (received.equals("ping")) {
DatagramSocket send_datagramSocket = new DatagramSocket();
InetAddress hostAddress = InetAddress.getByName("localhost");
String outString = "pong";
byte[] send_buffer = outString.getBytes();
InetAddress receiverAddress = InetAddress.getLocalHost();
DatagramPacket send_packet = new DatagramPacket(send_buffer, send_buffer.length,
hostAddress, 9999);
send_datagramSocket.send(packet);
}
if (received.equals("snapshot")) {
System.out.println("saving...");
// WritableImage snapshot_prayertime_pane = prayertime_pane.getScene().snapshot(null);
// WritableImage snapshot_full = scene.snapshot(null);
// ImageIO.write(SwingFXUtils.fromFXImage(snapshot_full, null), "png", file);
WritableImage image = new WritableImage(400, 400);
scene.snapshot(image);
File outputfile = new File("saved.png");
ImageIO.write((RenderedImage) image, "png", outputfile);
System.out.println("saved...");
}
if (received.equals("refresh facebook")) {
if (facebook_Receive && internet_able) {
getFacebook = false;
facebook_Text_Post = false;
facebook_Picture_Post = false;
facebook_post = "";
// facebook_Post_Url = "";
facebook_Fan_Count = "";
Calendar facebook_created_time_calendar = null;
Calendar facebook_photo_created_time_calendar = null;
Calendar facebook_check_post_date = Calendar.getInstance();
facebook_check_post_date.add(Calendar.DAY_OF_MONTH, -6);
long facebook_check_post_Unix_Time = facebook_check_post_date.getTimeInMillis()
/ 1000;
// out.println(facebook_check_post_Unix_Time);
String query = "SELECT message,timeline_visibility, created_time FROM stream WHERE source_id = "
+ page_ID
+ " AND message AND strlen(attachment.fb_object_type) < 1 AND type != 56 AND type = 46 AND strpos(message, \"prayer time(s)\") < 0 AND strpos(message, \"White days\") < 0 AND strpos(message, \"Hadith of the Day:\") < 0 AND created_time > "
+ facebook_check_post_Unix_Time + " LIMIT 1";
// String query = "{\"messages\":\"SELECT message,timeline_visibility, created_time FROM stream WHERE source_id = " + page_ID + " AND message AND strlen(attachment.fb_object_type) < 1 AND type != 56 AND type = 46 AND strpos(message, \'prayer time(s)\') < 0 AND strpos(message, \'White days\') < 0 AND strpos(message, \'Hadith of the Day:\') < 0 AND created_time > " + facebook_check_post_Unix_Time + " LIMIT 1\" , \"count\": \"SELECT fan_count FROM page WHERE page_id = " + page_ID + "\"}";
// out.println(query);
try {
List<JsonObject> queryResults = facebookClient.executeFqlQuery(query,
JsonObject.class);
if (!queryResults.isEmpty()) {
JsonObject facebookPost_J = queryResults.get(0);
facebook_post = facebookPost_J.getString("message");
// facebook_post = "Asalamualaikum,\n" + "We have been given a large printer/copier for administration at Daar Ibn\n Abbas. Is there any brothers available to pick it up from Lakemba? ";
String[] lines = facebook_post.split("\r\n|\r|\n");
if (null != facebook_post && !"".equals(facebook_post)) {
if (facebook_post.contains("\n\n")) {
out.println("'/n/n' detected");
facebook_post = facebook_post.replace("\n\n", "\n");
out.println(facebook_post);
}
facebook_created_time_calendar = Calendar
.getInstance(TimeZone.getTimeZone(timeZone_ID));
facebook_created_time_calendar.setTimeInMillis(
queryResults.get(0).getLong("created_time") * 1000);
// out.print("Comment posted on:"); out.println(facebook_created_time_calendar.getTime());
if (facebook_post.contains("tonight")
|| facebook_post.contains("today") && Days
.daysBetween(new DateMidnight(DateTime_now),
new DateMidnight(
facebook_created_time_calendar))
.getDays() != 0) {
out.println(
"Facebook post contains either the word 'today' or 'tonight' and has not been posted today");
facebook_post = "";
facebook_Label_visible = false;
}
else if (facebook_post.length() > 390 || lines.length > 6) {
System.out.println(
"Facebook post is too large, it will not be posted");
System.out.println("Facebook lines: " + lines.length);
System.out.println(
"Facebook string length: " + facebook_post.length());
facebook_post = "";
facebook_Label_visible = false;
}
else {
facebook_Text_Post = true;
facebook_Label_visible = true;
facebook_Label_visible_set_once = true;
}
}
} else {
out.println("Facebook post is empty");
}
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
query = "SELECT fan_count FROM page WHERE page_id = " + page_ID;
try {
List<JsonObject> queryResults = facebookClient.executeFqlQuery(query,
JsonObject.class);
facebook_Fan_Count = queryResults.get(0).getString("fan_count");
out.println("Page Likes: " + facebook_Fan_Count);
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
query = "SELECT attachment.media.photo.images.src, created_time FROM stream WHERE source_id = "
+ page_ID + " AND type = 247 AND created_time > "
+ facebook_check_post_Unix_Time + " LIMIT 1";
try {
List<JsonObject> queryResults = facebookClient.executeFqlQuery(query,
JsonObject.class);
if (!queryResults.isEmpty()) {
if (null != facebook_Post_Url && !"".equals(facebook_Post_Url)) {
old_facebook_Post_Url = new String(facebook_Post_Url);
}
// out.println(old_facebook_Post_Url);
facebook_Post_Url = queryResults.get(0).getJsonObject("attachment")
.getJsonArray("media").getJsonObject(0).getJsonObject("photo")
.getJsonArray("images").getJsonObject(1).getString("src");
// out.println(facebook_Post_Url);
facebook_photo_created_time_calendar = Calendar
.getInstance(TimeZone.getTimeZone(timeZone_ID));
facebook_photo_created_time_calendar.setTimeInMillis(
queryResults.get(0).getLong("created_time") * 1000);
out.print("Comment posted on:");
out.println(facebook_photo_created_time_calendar.getTime());
if (null != facebook_Post_Url && !"".equals(facebook_Post_Url)) {
if (null != old_facebook_Post_Url
&& !"".equals(old_facebook_Post_Url)) {
if (facebook_Post_Url.equals(old_facebook_Post_Url)) {
out.print(
"Facebook photo post has not changed from previous fetch, nothing has been set");
}
if (!facebook_Post_Url.equals(old_facebook_Post_Url)) {
facebook_Picture_Post = true;
facebook_Label_visible = true;
facebook_Label_visible_set_once = true;
}
}
else {
facebook_Picture_Post = true;
facebook_Label_visible = true;
facebook_Label_visible_set_once = true;
}
}
}
} catch (FacebookException e) {
logger.warn("Unexpected error", e);
} catch (Exception e) {
logger.warn("Unexpected error", e);
}
//compare text and picture post dates, if facebook_Picture_Post && facebook_Text_Post are true, and dates are not null
// which ever was posted last, clear facebook_post = ""; or facebook_Post_Url = "";
if (facebook_Picture_Post && facebook_Text_Post) {
if (facebook_photo_created_time_calendar
.before(facebook_created_time_calendar)) {
facebook_Post_Url = "";
}
else {
facebook_post = "";
}
}
}
}
}
}
// catch(InterruptedException e){Thread.currentThread().interrupt();}
catch (Exception e) {
logger.warn("Unexpected error", e);
Thread.currentThread().interrupt();
}
}
}).start();
}
From source file:si.arnes.etabla.utils.DateUtils.java
/** * * Checks if from-to is colliding with from1-to1 * * @param from1/*from w ww . jav a2 s . c om*/ * @param to1 * @param from * @param to * @return */ public static boolean isTimePartColliding(Date from1, Date date1, Date from, Date to) { //yoda time-only comparator: DateTimeComparator comparator = DateTimeComparator.getTimeOnlyInstance(); //from is between or to is between or from-to is "inside" [fromCurr, toCurr) return comparator.compare(from, from1) >= 0 && comparator.compare(from, date1) < 0 || comparator.compare(to, from1) > 0 && comparator.compare(to, date1) <= 0 || comparator.compare(from1, from) > 0 && comparator.compare(date1, to) < 0; }