001 package net.minecraft.server.management;
002
003 import java.text.ParseException;
004 import java.text.SimpleDateFormat;
005 import java.util.Date;
006 import java.util.logging.Level;
007 import java.util.logging.Logger;
008 import java.util.regex.Pattern;
009
010 public class BanEntry
011 {
012 public static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
013
014 /** Creates Ban Entry in the logger. */
015 public static Logger loggerBanEntry = Logger.getLogger("Minecraft");
016 private final String username;
017 private Date banStartDate = new Date();
018 private String bannedBy = "(Unknown)";
019 private Date banEndDate = null;
020 private String reason = "Banned by an operator.";
021
022 public BanEntry(String par1Str)
023 {
024 this.username = par1Str;
025 }
026
027 public String getBannedUsername()
028 {
029 return this.username;
030 }
031
032 public Date getBanStartDate()
033 {
034 return this.banStartDate;
035 }
036
037 /**
038 * null == start ban now
039 */
040 public void setBanStartDate(Date par1Date)
041 {
042 this.banStartDate = par1Date != null ? par1Date : new Date();
043 }
044
045 public String getBannedBy()
046 {
047 return this.bannedBy;
048 }
049
050 public void setBannedBy(String par1Str)
051 {
052 this.bannedBy = par1Str;
053 }
054
055 public Date getBanEndDate()
056 {
057 return this.banEndDate;
058 }
059
060 public void setBanEndDate(Date par1Date)
061 {
062 this.banEndDate = par1Date;
063 }
064
065 public boolean hasBanExpired()
066 {
067 return this.banEndDate == null ? false : this.banEndDate.before(new Date());
068 }
069
070 public String getBanReason()
071 {
072 return this.reason;
073 }
074
075 public void setBanReason(String par1Str)
076 {
077 this.reason = par1Str;
078 }
079
080 public String buildBanString()
081 {
082 StringBuilder var1 = new StringBuilder();
083 var1.append(this.getBannedUsername());
084 var1.append("|");
085 var1.append(dateFormat.format(this.getBanStartDate()));
086 var1.append("|");
087 var1.append(this.getBannedBy());
088 var1.append("|");
089 var1.append(this.getBanEndDate() == null ? "Forever" : dateFormat.format(this.getBanEndDate()));
090 var1.append("|");
091 var1.append(this.getBanReason());
092 return var1.toString();
093 }
094
095 public static BanEntry parse(String par0Str)
096 {
097 if (par0Str.trim().length() < 2)
098 {
099 return null;
100 }
101 else
102 {
103 String[] var1 = par0Str.trim().split(Pattern.quote("|"), 5);
104 BanEntry var2 = new BanEntry(var1[0].trim());
105 byte var3 = 0;
106 int var10000 = var1.length;
107 int var7 = var3 + 1;
108
109 if (var10000 <= var7)
110 {
111 return var2;
112 }
113 else
114 {
115 try
116 {
117 var2.setBanStartDate(dateFormat.parse(var1[var7].trim()));
118 }
119 catch (ParseException var6)
120 {
121 loggerBanEntry.log(Level.WARNING, "Could not read creation date format for ban entry \'" + var2.getBannedUsername() + "\' (was: \'" + var1[var7] + "\')", var6);
122 }
123
124 var10000 = var1.length;
125 ++var7;
126
127 if (var10000 <= var7)
128 {
129 return var2;
130 }
131 else
132 {
133 var2.setBannedBy(var1[var7].trim());
134 var10000 = var1.length;
135 ++var7;
136
137 if (var10000 <= var7)
138 {
139 return var2;
140 }
141 else
142 {
143 try
144 {
145 String var4 = var1[var7].trim();
146
147 if (!var4.equalsIgnoreCase("Forever") && var4.length() > 0)
148 {
149 var2.setBanEndDate(dateFormat.parse(var4));
150 }
151 }
152 catch (ParseException var5)
153 {
154 loggerBanEntry.log(Level.WARNING, "Could not read expiry date format for ban entry \'" + var2.getBannedUsername() + "\' (was: \'" + var1[var7] + "\')", var5);
155 }
156
157 var10000 = var1.length;
158 ++var7;
159
160 if (var10000 <= var7)
161 {
162 return var2;
163 }
164 else
165 {
166 var2.setBanReason(var1[var7].trim());
167 return var2;
168 }
169 }
170 }
171 }
172 }
173 }
174 }