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