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    }