    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    }