Du bist nicht angemeldet.

1

Sonntag, 10. Juli 2011, 21:19

Readme-Funktion

Hi,

ich zeige euch, wie ihr Readmes setzen und löschen könnt.

Zunächst ein neues Feld bei Accounts mit:
ALTER TABLE accounts ADD `readme` text

Wert: NULL

Client.java:

Java-Quelltext

1
private String readme;


Java-Quelltext

1
2
3
public String getReadme() {
return readme;
}


Java-Quelltext

1
2
3
public void setReadme(String text) {
this.readme = text;
}


Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public void updateReadme() {

PoolConnection pcon = ConnectionPool.getConnection();
PreparedStatement ps = null;

try {
Connection con = pcon.connect();
ps = con.prepareStatement("UPDATE `accounts` SET `readme` = ? WHERE `name` = ?");
ps.setString(1, readme);
ps.setString(2, name);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {

}
}

pcon.close();
}
}


saveStats() überarbeiten:

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private void saveStats() {
PoolConnection pcon = ConnectionPool.getConnection();
PreparedStatement ps = null;

try {
Connection con = pcon.connect();
ps = con.prepareStatement("UPDATE `accounts` SET `kisses` = ?, `knuddels` = ?, `onlineTime` = ?, `ipAddress` = ?, `readme` = ? WHERE `name` = ?");
ps.setInt(1, kisses);
ps.setInt(2, knuddels);
ps.setInt(3, getOnlineTime());
ps.setString(4, ipAddress);
ps.setString(5, readme);
ps.setString(6, name);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
}
}

pcon.close();
}
}


loadStats(), einfügen:

Java-Quelltext

1
readme = rs.getString("readme");


CommandParser.java:

New Command:

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
else if (cmd.equals("readme")) {
if (arg.equals("!")) {
client.setReadme(null);
client.updateReadme();

client.sendButlerMessage(channel.getName(), "Dein Readme-Text wurde _gelöscht_.");
return;
} else if(arg.length() > 50) {
arg = arg.substring(0, 50); // alternativ noch angeben, dass Text gekürzt wurde
}

arg = Server.get().parseSmileys(arg);
client.sendButlerMessage(channel.getName(), "Deine Freunde können nun folgenden Text sehen: "" + arg + "\"");
client.setReadme(arg);
client.updateReadme();
}


whois-Bereich:

Java-Quelltext

1
2
3
if (target.getReadme() != null) {
whois.append(String.format("°BB°_Readme_°r°: "%s"##", target.getReadme())); // Darstellung könnt ihr ändern
}


Thx to Flav wegen MySQL-Eintrag. :)

Ich hoffe, dass ich nichts vergessen habe...

MfG

2

Montag, 11. Juli 2011, 00:52

Die Methode updateReadme scheint überflüssig zu sein, dafür gibt es doch saveStats.
Tschüß.

3

Montag, 11. Juli 2011, 00:58

Stimmt, ist mir gar nicht aufgefallen. :P

Wenn der Text der Readme gesetzt wurde vom User, einfach die Methode saveStats() aufrufen.

MfG

4

Montag, 11. Juli 2011, 01:03

Die musst du gar nicht mal aufrufen, die wird aufgerufen wenn der User sich ausloggt.
Tschüß.

5

Montag, 11. Juli 2011, 02:28

Macht aber manchmal Probleme. Wenn jemand übers X rausgeht wird Oft nicht Gespeicher.

6

Montag, 11. Juli 2011, 09:21

Dann ist derjenige vielleicht noch in einem anderen Channel online, oder du hast da was an der Methode verändert wodurch es manchmal zu Problemen kommt.
Tschüß.

7

Montag, 11. Juli 2011, 12:36

Wie muss ich das mit loadStats() machen

ich habe schon das versucht

Java-Quelltext

1
2
private void loadStats()
readme = rs.getString("readme");


Aber das klappt nicht ganz

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Kosi« (11. Juli 2011, 12:49)


8

Dienstag, 12. Juli 2011, 16:07

Hallo,
Gibt aus eine Möglichkeit, _,"°XX°, zu unterbinden?
Allso das diese im Readme nicht wirksam werden?

9

Dienstag, 12. Juli 2011, 16:45

arg = KCodeParser.escape(arg);
Tschüß.