Creazione notifiche

di il
4 risposte

Creazione notifiche

Ciao a tutti! Sono nuova, quindi comincio con il presentarmi: piacere Monica!
Premetto che sono alle prime armi con Java.

Per la mia problematica parto col dire cosa uso:
- pgAdmin III (Database)
- Eclipse (programmazione)
- Chat (OpenFire)
- gestionale via web
Ed ecco il mio problema :
Ho creato un programma che si collega a:
- un database (utilizzo pgAdmin III) di un gestionale che funziona via web;
- una chat (OpenFire)
In poche parole, il mio programma deve mandare alla chat un messaggio dove avvisa che ci sono delle notifiche nel gestionale che non sono state lette, ovvero sono arrivati messaggi nuovi. In pratica deve funzionare come il social network Facebook, dove si ricevono le notifiche ogni volta che un qualcuno ci manda un messaggio e, una volta letto, non si riceve più la notifica di quel messaggio poiché lo abbiamo letto.
Attualmente il mio programma manda alla chat un messaggio dove vengono fatte vedere tutte le notifiche lette e non lette di un dato giorno (e se voglio anche l'ora) che decido io nella Run Configuration di Eclipse (in Arguments), quindi il mio programma attualmente non funziona nel modo corretto poiché le notifiche dei messaggi già letti non devo più riceverle nella chat mentre invece le ricevo ancora...
Se può servire, il codice da me scritto è:
package net.(azienda).(gestionale).xmpp;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import net.(azienda).(gestionale).(gestionale).Utility;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import java.util.Date;

public class XmppInfinity {
/*
 * <root>
 * <urlDb>jdbc:postgresql://localhost/test?user=fred&password==true</urlDb>
 * <xmpp username="" password="" server="" port="" option1="" option2=""/>
 * 
 * <query sql="" target=""/> 
 * 
 * </root>
 * 
 * Parsing parameter failed, Missing required options: mode, s, port, u, p, targetJID, message
 * usage: sms - simple message sender, version 0.1
 * -message <message>       message to send
 * -mode <mode>             u - simple message to user, c - message to chatroom
 * -p <password>            password to login at chatserver
 * -port <port>             port of chatserver
 * -s <server>              hostname of chatserver
 * -targetJID <targetJID>   JID (Jabber ID) to talk to (user or chatroom)
 * -u <username>            user name to login at chatserver
 *
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 */
	public static void main(String[] args) {
		final String URLDB ="urlDb";
		final String QUERY ="query";
		final String QUERYSQL ="sql";
		final String LASTRUN ="%%lastrun%%";
		final String QUERYTARGET ="target";
		final String QUERYMESSAGE ="message";
		
		final String SERVER="server";
		final String PORT="port";
		final String USERNAME="username";
		final String USERPASSWORD="password";
		final String OPTION1="option1";
		final String OPTION2="option2";
		
		final String XMPP="xmpp";
		
		
		String server="";
		String port="";
		String username="";
		String userPassword="";
		String option1="";
		String option2="";
		String lastrun="";
		
		
		String filename = args[0];
		File fileConf = new File(filename);
		if(!fileConf.exists()) {
			System.out.println("Il file dei parametri non esiste");
			System.exit(1);
		}
		Document fileConfDoc =null;
		try {
			fileConfDoc = Utility.file2Document(fileConf);		
		} catch (Exception e) {
			System.out.println(e.getMessage());
			return;
		}
		lastrun=args[1];
		server=((Element) fileConfDoc.getElementsByTagName(XMPP).item(0)).getAttribute(SERVER);
		port=((Element) fileConfDoc.getElementsByTagName(XMPP).item(0)).getAttribute(PORT);
		username=((Element) fileConfDoc.getElementsByTagName(XMPP).item(0)).getAttribute(USERNAME);
		userPassword=((Element) fileConfDoc.getElementsByTagName(XMPP).item(0)).getAttribute(USERPASSWORD);
		option1=((Element) fileConfDoc.getElementsByTagName(XMPP).item(0)).getAttribute(OPTION1);
		option2=((Element) fileConfDoc.getElementsByTagName(XMPP).item(0)).getAttribute(OPTION2);

		Connection connection = null;
		String url=fileConfDoc.getElementsByTagName(URLDB).item(0).getTextContent();
		
		try {
			connection = DriverManager.getConnection(url);
		} catch (SQLException e) {
			System.out.println("ConnectionPoolAdapter.getConnection getMessage: " + e.getMessage() + " getSQLState: " + e.getSQLState() + " getErrorCode: " + e.getErrorCode());
		}
		
		NodeList query = fileConfDoc.getElementsByTagName(QUERY);
		for (int i = 0; i < query.getLength(); i++) {
			Element riga=(Element) query.item(i);
			String sql=riga.getAttribute(QUERYSQL);
			sql=sql.replaceAll(LASTRUN,lastrun);			
			String targetId=riga.getAttribute(QUERYTARGET);
			System.out.println("query: "+sql+"\ntarget: "+targetId);
			Statement st=null;
			ResultSet rs=null;
			String message="";
			try {
				st = connection.createStatement();
				rs= st.executeQuery(sql);
				while (rs.next()) {
					message+=rs.getString(QUERYMESSAGE);	
				}
				if(message.trim().length()>1) {
					String[] props= {option1,option2,"-s",server,"-port",port,"-u",username,"-p",userPassword,"-targetJID",targetId+"@"+server, "-message","'"+message+"'"};
					String parametri="";
					for (int j = 0; j < props.length; j++) {
						parametri+=props[j];
					}
					System.out.println("parametri: "+parametri);
					com.starwit.xmpp.MainClass.main(props);
					
				}else {
					System.out.println("Non ho trasmesso nulla");
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		}
		
	}
}[/i]
Come potete vedere ho creato e utilizzato il lastrun ma, come già detto, il programma attualmente non va correttamente poiché ogni volta che faccio partire il programma nella chat ricevo tutte le notifiche della giornata, ovvero dei messaggi letti e non letti, mentre nella chat devo vedere solo le notifiche dei messaggi appena ricevuti ovvero non letti.
Qualcuno di voi sa aiutarmi a riguardo? Io non so più dove battere la testa!
Grazie!

4 Risposte

  • Re: Creazione notifiche

    Questa è la sezione per Javascript non Java
    quella di Java è questa: https://www.iprogrammatori.it/forum-programmazione/java/

    Comunque mi piace come programma.. purtroppo non so aiutarti ma ti consiglio di non utilizzare la libreria java.io.File è lentissima, prova a utilizzare la libreria buffered
  • Re: Creazione notifiche

    Caspita che stupida!
    Se c'è qualche Admin online, può spostare il mio thread nella sezione Java? Grazie!

    Openprogrammers grazie
  • Re: Creazione notifiche

    Ciao ho spostato il 3d nella sezione corretta.
    Grazie openprogrammers per la segnalazione!

    X Momy88: ho messo il codice tra i tag code, la prossima volta ricordati di farlo anche tu altrimenti il post resta poco leggibile.

    Un saluto a entrambi e buona Pasqua
  • Re: Creazione notifiche

    Grazie Toki
Devi accedere o registrarti per scrivere nel forum
4 risposte