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
53
54
55
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 }