View Javadoc

1   package org.inigma.utopia.paper.events;
2   
3   import java.util.regex.Matcher;
4   import java.util.regex.Pattern;
5   
6   import org.inigma.utopia.Coordinate;
7   import org.inigma.utopia.Kingdom;
8   import org.inigma.utopia.Province;
9   import org.inigma.utopia.UtopiaDate;
10  import org.inigma.utopia.utils.NumberUtil;
11  
12  public abstract class AbstractEvent implements Comparable<AbstractEvent> {
13      private static final Pattern PATTERN_NAME_COORD = Pattern.compile("(.+)\\s+(\\(\\d+:\\d+\\))");
14      private static final Pattern ANONYMOUS_COORD = Pattern.compile("An Unknown Province from (\\d+:\\d+)");
15  
16      public static int getNumber(String num) {
17          Number number = NumberUtil.getNumber(num);
18          if (number == null) {
19              return 0;
20          }
21          return number.intValue();
22      }
23  
24      protected static Kingdom getKingdom(String info) {
25          Matcher matcher = PATTERN_NAME_COORD.matcher(info);
26          if (matcher.find()) {
27              String name = matcher.group(1);
28              Coordinate coord = new Coordinate(matcher.group(2));
29              Kingdom kingdom = new Kingdom(coord);
30              kingdom.setName(name);
31              return kingdom;
32          }
33          return null;
34      }
35  
36      protected static String translate(String info) {
37          Matcher matcher = ANONYMOUS_COORD.matcher(info);
38          if (matcher.find()) {
39              return matcher.replaceAll("--Anonymous-- ($1)");
40          }
41          return info;
42      }
43  
44      protected static Province getProvince(String info) {
45          Matcher matcher = PATTERN_NAME_COORD.matcher(info);
46          if (matcher.find()) {
47              String name = matcher.group(1);
48              Coordinate coord = new Coordinate(matcher.group(2));
49              return new Province(name, coord);
50          }
51  
52  //        matcher = ANONYMOUS_COORD.matcher(info);
53  //        if (matcher.find()) {
54  //            Coordinate coord = new Coordinate("(" + matcher.group(1) + ")");
55  //            return new Province("--Anonymous--", coord);
56  //        }
57  
58          return null;
59      }
60  
61      private UtopiaDate date;
62  
63      public AbstractEvent() {
64          this.date = new UtopiaDate();
65      }
66  
67      public abstract AbstractEvent getEvent(String eventText);
68  
69      public void setUtopiaDate(String date) {
70          this.date = new UtopiaDate(date);
71      }
72  
73      public UtopiaDate getDate() {
74          return this.date;
75      }
76  
77      public int compareTo(AbstractEvent event) {
78          return date.compareTo(event.date);
79      }
80  
81      @Override
82      public String toString() {
83          StringBuilder sb = new StringBuilder();
84          sb.append(getDate());
85          sb.append(" ");
86          if (getDate().getDate() < 10) {
87              sb.append(" ");
88          }
89          if (getDate().getYear() < 10) {
90              sb.append(" ");
91          }
92          sb.append(" ");
93          return sb.toString();
94      }
95  }