|
@@ -81,7 +81,7 @@ public final class Server extends WritableFrameContainer implements Serializable
|
81
|
81
|
/** Open channels that currently exist on the server. */
|
82
|
82
|
private final Map<String, Channel> channels = new Hashtable<String, Channel>();
|
83
|
83
|
/** Open query windows on the server. */
|
84
|
|
- private final Map<String, Query> queries = new Hashtable<String, Query>();
|
|
84
|
+ private final List<Query> queries = new ArrayList<Query>();
|
85
|
85
|
|
86
|
86
|
/** The IRC Parser instance handling this server. */
|
87
|
87
|
private transient IRCParser parser;
|
|
@@ -402,21 +402,33 @@ public final class Server extends WritableFrameContainer implements Serializable
|
402
|
402
|
/**
|
403
|
403
|
* Determines whether the server knows of the specified query.
|
404
|
404
|
*
|
405
|
|
- * @param query The query to be checked
|
|
405
|
+ * @param host The host of the query to look for
|
406
|
406
|
* @return True iff the query is known, false otherwise
|
407
|
407
|
*/
|
408
|
|
- public boolean hasQuery(final String query) {
|
409
|
|
- return queries.containsKey(parser.toLowerCase(query));
|
|
408
|
+ public boolean hasQuery(final String host) {
|
|
409
|
+ for (Query query : queries) {
|
|
410
|
+ if (parser.equalsIgnoreCase(query.getHost(), host)) {
|
|
411
|
+ return true;
|
|
412
|
+ }
|
|
413
|
+ }
|
|
414
|
+
|
|
415
|
+ return false;
|
410
|
416
|
}
|
411
|
417
|
|
412
|
418
|
/**
|
413
|
419
|
* Retrieves the specified query belonging to this server.
|
414
|
420
|
*
|
415
|
|
- * @param query The query to be retrieved
|
|
421
|
+ * @param host The host of the query to look for
|
416
|
422
|
* @return The appropriate query object
|
417
|
423
|
*/
|
418
|
|
- public Query getQuery(final String query) {
|
419
|
|
- return queries.get(parser.toLowerCase(query));
|
|
424
|
+ public Query getQuery(final String host) {
|
|
425
|
+ for (Query query : queries) {
|
|
426
|
+ if (parser.equalsIgnoreCase(query.getHost(), host)) {
|
|
427
|
+ return query;
|
|
428
|
+ }
|
|
429
|
+ }
|
|
430
|
+
|
|
431
|
+ throw new IllegalArgumentException("No such query: " + host);
|
420
|
432
|
}
|
421
|
433
|
|
422
|
434
|
/**
|
|
@@ -424,14 +436,8 @@ public final class Server extends WritableFrameContainer implements Serializable
|
424
|
436
|
*
|
425
|
437
|
* @return list of queries belonging to this server
|
426
|
438
|
*/
|
427
|
|
- public List<String> getQueries() {
|
428
|
|
- final ArrayList<String> res = new ArrayList<String>();
|
429
|
|
-
|
430
|
|
- for (String query : queries.keySet()) {
|
431
|
|
- res.add(query);
|
432
|
|
- }
|
433
|
|
-
|
434
|
|
- return res;
|
|
439
|
+ public List<Query> getQueries() {
|
|
440
|
+ return new ArrayList<Query>(queries);
|
435
|
441
|
}
|
436
|
442
|
|
437
|
443
|
/**
|
|
@@ -500,22 +506,22 @@ public final class Server extends WritableFrameContainer implements Serializable
|
500
|
506
|
* @param host host of the remote client being queried
|
501
|
507
|
*/
|
502
|
508
|
public void addQuery(final String host) {
|
503
|
|
- if (!queries.containsKey(parser.toLowerCase(ClientInfo.parseHost(host)))) {
|
|
509
|
+ if (!hasQuery(host)) {
|
504
|
510
|
final Query newQuery = new Query(this, host);
|
505
|
511
|
|
506
|
512
|
tabCompleter.addEntry(ClientInfo.parseHost(host));
|
507
|
|
- queries.put(parser.toLowerCase(ClientInfo.parseHost(host)), newQuery);
|
|
513
|
+ queries.add(newQuery);
|
508
|
514
|
}
|
509
|
515
|
}
|
510
|
516
|
|
511
|
517
|
/**
|
512
|
518
|
* Deletes a query from this server.
|
513
|
519
|
*
|
514
|
|
- * @param host host of the remote client being queried
|
|
520
|
+ * @param query The query that should be removed.
|
515
|
521
|
*/
|
516
|
|
- public void delQuery(final String host) {
|
517
|
|
- tabCompleter.removeEntry(ClientInfo.parseHost(host));
|
518
|
|
- queries.remove(parser.toLowerCase(ClientInfo.parseHost(host)));
|
|
522
|
+ public void delQuery(final Query query) {
|
|
523
|
+ tabCompleter.removeEntry(query.getNickname());
|
|
524
|
+ queries.remove(query);
|
519
|
525
|
}
|
520
|
526
|
|
521
|
527
|
/** {@inheritDoc} */
|
|
@@ -530,7 +536,7 @@ public final class Server extends WritableFrameContainer implements Serializable
|
530
|
536
|
if (channel.ownsFrame(target)) { return true; }
|
531
|
537
|
}
|
532
|
538
|
// Check if it's a query frame
|
533
|
|
- for (Query query : queries.values()) {
|
|
539
|
+ for (Query query : queries) {
|
534
|
540
|
if (query.ownsFrame(target)) { return true; }
|
535
|
541
|
}
|
536
|
542
|
return false;
|
|
@@ -558,7 +564,7 @@ public final class Server extends WritableFrameContainer implements Serializable
|
558
|
564
|
}
|
559
|
565
|
|
560
|
566
|
res.addAll(channels.values());
|
561
|
|
- res.addAll(queries.values());
|
|
567
|
+ res.addAll(queries);
|
562
|
568
|
|
563
|
569
|
return res;
|
564
|
570
|
}
|
|
@@ -609,7 +615,7 @@ public final class Server extends WritableFrameContainer implements Serializable
|
609
|
615
|
|
610
|
616
|
eventHandler.registerCallbacks();
|
611
|
617
|
|
612
|
|
- for (Query query : queries.values()) {
|
|
618
|
+ for (Query query : queries) {
|
613
|
619
|
query.reregister();
|
614
|
620
|
}
|
615
|
621
|
}
|
|
@@ -864,7 +870,7 @@ public final class Server extends WritableFrameContainer implements Serializable
|
864
|
870
|
* Closes all open query windows associated with this server.
|
865
|
871
|
*/
|
866
|
872
|
private void closeQueries() {
|
867
|
|
- for (Query query : new ArrayList<Query>(queries.values())) {
|
|
873
|
+ for (Query query : new ArrayList<Query>(queries)) {
|
868
|
874
|
query.close(false);
|
869
|
875
|
}
|
870
|
876
|
|
|
@@ -898,7 +904,7 @@ public final class Server extends WritableFrameContainer implements Serializable
|
898
|
904
|
channel.getFrame().addLine(messageType, args);
|
899
|
905
|
}
|
900
|
906
|
|
901
|
|
- for (Query query : queries.values()) {
|
|
907
|
+ for (Query query : queries) {
|
902
|
908
|
query.getFrame().addLine(messageType, args);
|
903
|
909
|
}
|
904
|
910
|
|