View Javadoc
1   package net.sourceforge.rpgee.messaging.network;
2   
3   import net.sourceforge.rpgee.Categorized;
4   import net.sourceforge.rpgee.Named;
5   import net.sourceforge.rpgee.utility.BaseIdentified;
6   
7   /**
8    * This class allows us to pass in ip, name, and various other data and get a Cookie that has all of that and a unique number as
9    * well.
10   * 
11   * @author Mykel
12   * 
13   * @param <G>
14   */
15  public class CookieFactory<G> extends BaseIdentified implements Categorized<String>, Named {
16      private IdentifierFactory idFactory;
17      private String            name = null;
18  
19      public CookieFactory(IdentifierFactory _fact) {
20          if (_fact == null)
21              throw new RuntimeException("Identity factory is null!");
22          idFactory = _fact;
23      }
24      public final Cookie<G> getCookie(String _ip, String _name, G _addl) {
25          return new CookieImpl(idFactory.getIdentifier(), _ip, _name, _addl);
26      }
27  
28      public String getCategory() {
29          return this.getClass().getCanonicalName();
30      }
31  
32      public String getDescription() {
33          G type = null;
34          return this.getClass().getCanonicalName() + "<" + type.getClass().getCanonicalName() + ">";
35      }
36  
37      public String getName() {
38          if (name != null)
39              return name;
40          return this.getCategory() + "." + this.getId();
41      }
42  
43      public void setName(String name) {
44          this.name = name;
45      }
46  
47      private class CookieImpl implements Cookie<G> {
48          private G      additionalData;
49          private String ip;
50          private Long   id;
51          private String name;
52  
53          public CookieImpl(Long _idx, String _ip, String _name, G _addl) {
54              ip = _ip;
55              name = _name;
56              id = _idx;
57              additionalData = _addl;
58          }
59  
60          public Long getId() {
61              return id;
62          }
63  
64          public String getIdAsString() {
65              return id + "";
66          }
67  
68          public String getIp() {
69              return ip;
70          }
71  
72          public String getName() {
73              return name;
74          }
75  
76          public G getAdditionalData() {
77              return additionalData;
78          }
79  
80      }
81  
82  }