Dosta ljudi mi je trazilo sors, pa da ne biste cekali da sredim neke stvarcice, evo celog koda ovde (4 klase)
Code:
package recnik;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public abstract class RecnikANew {
static Connection conn;
public RecnikANew() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
conn = DriverManager.getConnection("jdbc:hsqldb:db/db_vesna", "sa", "");
}
public abstract String prevedi(String rec) throws SQLException;
protected abstract int getId(String rec) throws SQLException;
public static void shutdown() throws SQLException {
Statement st = conn.createStatement();
st.execute("SHUTDOWN");
conn.close();
}
}
Code:
package recnik;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class RecnikEnSrNew extends RecnikANew {
public RecnikEnSrNew() throws Exception {
super();
}
public String prevedi(String rec) throws SQLException {
try {
rec = rec.toLowerCase().trim();
PreparedStatement prep = conn.prepareCall("SELECT word FROM rel_table INNER JOIN sr_table ON rel_table.id2 = sr_table.id WHERE rel_table.id1 = ? ORDER BY word");
prep.clearParameters();
prep.setInt(1, getId(rec));
ResultSet rezultat = prep.executeQuery();
StringBuilder s = new StringBuilder("");
while(rezultat.next()) {
s.append(rezultat.getString("word") + ", ");
}
s.deleteCharAt(s.lastIndexOf(","));
s.deleteCharAt(s.lastIndexOf(" "));
s.append(".");
return s.toString();
} catch (SQLException e) { return "Nema prevoda te reči!"; } // Da ne baci No Data izuzetak kad ne nadje prevod!!!
}
protected int getId(String rec) throws SQLException {
PreparedStatement prep = conn.prepareCall("SELECT id FROM en_table WHERE word = ?");
prep.clearParameters();
prep.setString(1, rec);
ResultSet rezultat = prep.executeQuery();
rezultat.next();
return rezultat.getInt("id");
}
}
Code:
package recnik;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class RecnikSrEnNew extends RecnikANew {
public RecnikSrEnNew() throws Exception {
super();
}
public String prevedi(String rec) throws SQLException {
try {
rec = rec.toLowerCase().trim();
PreparedStatement prep = conn.prepareCall("SELECT word FROM rel_table INNER JOIN en_table ON rel_table.id1 = en_table.id WHERE rel_table.id2 = ? ORDER BY word");
prep.clearParameters();
prep.setInt(1, getId(rec));
ResultSet rezultat = prep.executeQuery();
StringBuilder s = new StringBuilder("");
while(rezultat.next()) {
s.append(rezultat.getString("word") + ", ");
}
s.deleteCharAt(s.lastIndexOf(","));
s.deleteCharAt(s.lastIndexOf(" "));
s.append(".");
return s.toString();
} catch (SQLException e) { return "Nema prevoda te reči!"; } // Da ne baci No Data izuzetak kad ne nadje prevod!!!
}
protected int getId(String rec) throws SQLException {
PreparedStatement prep = conn.prepareCall("SELECT id FROM sr_table WHERE word = ?");
prep.clearParameters();
prep.setString(1, rec);
ResultSet rezultat = prep.executeQuery();
rezultat.next();
return rezultat.getInt("id");
}
}
Code:
package jabber;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import org.jivesoftware.smack.*;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.*;
import recnik.RecnikEnSrNew;
import recnik.RecnikSrEnNew;
public class Bot {
private RecnikEnSrNew recnikEnSr;
private RecnikSrEnNew recnikSrEn;
private XMPPConnection con;
private Roster roster;
private PacketFilter filter;
Map<String, Boolean> smerovi;
public Bot(String user, String pass, String server) {
try {
recnikEnSr = new RecnikEnSrNew();
recnikSrEn = new RecnikSrEnNew();
smerovi = new HashMap<String, Boolean>();
con = new SSLXMPPConnection(server);
con.login(user, pass);
roster = con.getRoster();
roster.setSubscriptionMode(Roster.SUBSCRIPTION_ACCEPT_ALL);
filter = new PacketTypeFilter(Message.class);
PacketListener osluskivac = new PacketListener() {
public void processPacket(Packet packet) {
Message m = (Message)packet;
String from = m.getFrom().substring(0, m.getFrom().indexOf('/'));
String por = m.getBody();
if(por.charAt(0) == '#')
obradiKomandu(from, por.substring(1));
else
odgovori(from, por);
}
};
con.addPacketListener(osluskivac, filter);
} catch (Exception e) { e.printStackTrace(); }
}
private void obradiKomandu(String posiljalac, String komanda) {
try {
if(!smerovi.containsKey(posiljalac))
smerovi.put(posiljalac, true); // default smer en > sr
if(komanda.equals("smer")) {
smerovi.put(posiljalac, !smerovi.get(posiljalac)); // Obrce smer!
con.createChat(posiljalac).sendMessage("Podešen je smer: " + (smerovi.get(posiljalac) ? "en-sr!" : "sr-en!"));
}
// Ovde idu else if-ovi...
else
con.createChat(posiljalac).sendMessage("Ta komanda ne postoji!");
} catch (Exception e) { e.printStackTrace(); }
}
private void odgovori(String posiljalac, String poruka) {
try {
if(!smerovi.containsKey(posiljalac))
smerovi.put(posiljalac, true); // default smer en > sr
con.createChat(posiljalac).sendMessage(smerovi.get(posiljalac) ? recnikEnSr.prevedi(poruka) : recnikSrEn.prevedi(poruka));
} catch (Exception e) { e.printStackTrace(); }
}
public static void main(String[] args) {
if(args.length != 3) {
System.out.println("Usage: java -jar BotRecnik.jar user pass server");
System.exit(0);
}
new Bot(args[0], args[1], args[2]);
while(true) {
Scanner scan = new Scanner(System.in);
scan.next();
}
}
}
Bazu imate u izvrsnoj verziji...
V