Keyword: add KeywordInterface to be used instead of KeywordInstance<?>

This commit is contained in:
Hanmac
2017-10-22 06:31:30 +00:00
parent ce2f75d43d
commit acd30aaf08
5 changed files with 42 additions and 12 deletions

1
.gitattributes vendored
View File

@@ -606,6 +606,7 @@ forge-game/src/main/java/forge/game/event/package-info.java -text
forge-game/src/main/java/forge/game/keyword/Keyword.java -text forge-game/src/main/java/forge/game/keyword/Keyword.java -text
forge-game/src/main/java/forge/game/keyword/KeywordCollection.java -text forge-game/src/main/java/forge/game/keyword/KeywordCollection.java -text
forge-game/src/main/java/forge/game/keyword/KeywordInstance.java -text forge-game/src/main/java/forge/game/keyword/KeywordInstance.java -text
forge-game/src/main/java/forge/game/keyword/KeywordInterface.java -text svneol=unset#text/plain
forge-game/src/main/java/forge/game/keyword/KeywordWithAmount.java -text forge-game/src/main/java/forge/game/keyword/KeywordWithAmount.java -text
forge-game/src/main/java/forge/game/keyword/KeywordWithAmountAndType.java -text svneol=unset#text/plain forge-game/src/main/java/forge/game/keyword/KeywordWithAmountAndType.java -text svneol=unset#text/plain
forge-game/src/main/java/forge/game/keyword/KeywordWithCost.java -text forge-game/src/main/java/forge/game/keyword/KeywordWithCost.java -text

View File

@@ -154,7 +154,7 @@ public enum Keyword {
displayName = EnumUtil.getEnumDisplayName(this); displayName = EnumUtil.getEnumDisplayName(this);
} }
public static KeywordInstance<?> getInstance(String k) { public static KeywordInterface getInstance(String k) {
Keyword keyword = Keyword.UNDEFINED; Keyword keyword = Keyword.UNDEFINED;
String details = k; String details = k;
String enumName = k.replace(' ', '_').toUpperCase(); String enumName = k.replace(' ', '_').toUpperCase();

View File

@@ -12,7 +12,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
private static final long serialVersionUID = -2882986558147844702L; private static final long serialVersionUID = -2882986558147844702L;
private transient KeywordCollectionView view; private transient KeywordCollectionView view;
private final Multimap<Keyword, KeywordInstance<?>> map = MultimapBuilder.enumKeys(Keyword.class) private final Multimap<Keyword, KeywordInterface> map = MultimapBuilder.enumKeys(Keyword.class)
.arrayListValues().build(); .arrayListValues().build();
public boolean contains(Keyword keyword) { public boolean contains(Keyword keyword) {
@@ -29,16 +29,16 @@ public class KeywordCollection implements Iterable<String>, Serializable {
public int getAmount(Keyword keyword) { public int getAmount(Keyword keyword) {
int amount = 0; int amount = 0;
for (KeywordInstance<?> inst : map.get(keyword)) { for (KeywordInterface inst : map.get(keyword)) {
amount += inst.getAmount(); amount += inst.getAmount();
} }
return amount; return amount;
} }
public boolean add(String k) { public boolean add(String k) {
KeywordInstance<?> inst = Keyword.getInstance(k); KeywordInterface inst = Keyword.getInstance(k);
Keyword keyword = inst.getKeyword(); Keyword keyword = inst.getKeyword();
Collection<KeywordInstance<?>> list = map.get(keyword); Collection<KeywordInterface> list = map.get(keyword);
if (list.isEmpty() || !keyword.isMultipleRedundant) { if (list.isEmpty() || !keyword.isMultipleRedundant) {
list.add(inst); list.add(inst);
return true; return true;
@@ -53,11 +53,11 @@ public class KeywordCollection implements Iterable<String>, Serializable {
} }
public boolean remove(String keyword) { public boolean remove(String keyword) {
Iterator<KeywordInstance<?>> it = map.values().iterator(); Iterator<KeywordInterface> it = map.values().iterator();
boolean result = false; boolean result = false;
while (it.hasNext()) { while (it.hasNext()) {
KeywordInstance<?> k = it.next(); KeywordInterface k = it.next();
if (keyword.equals(k.getOriginal())) { if (keyword.equals(k.getOriginal())) {
it.remove(); it.remove();
result = true; result = true;
@@ -78,7 +78,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
} }
public boolean contains(String keyword) { public boolean contains(String keyword) {
for (KeywordInstance<?> inst : map.values()) { for (KeywordInterface inst : map.values()) {
if (keyword.equals(inst.getOriginal())) { if (keyword.equals(inst.getOriginal())) {
return true; return true;
} }
@@ -88,7 +88,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
public int getAmount(String k) { public int getAmount(String k) {
int amount = 0; int amount = 0;
for (KeywordInstance<?> inst : map.values()) { for (KeywordInterface inst : map.values()) {
if (k.equals(inst.getOriginal())) { if (k.equals(inst.getOriginal())) {
amount++; amount++;
} }
@@ -99,7 +99,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
@Override @Override
public Iterator<String> iterator() { public Iterator<String> iterator() {
return new Iterator<String>() { return new Iterator<String>() {
private final Iterator<KeywordInstance<?>> iterator = map.values().iterator(); private final Iterator<KeywordInterface> iterator = map.values().iterator();
@Override @Override
@@ -109,7 +109,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
@Override @Override
public String next() { public String next() {
KeywordInstance<?> entry = iterator.next(); KeywordInterface entry = iterator.next();
return entry.getOriginal(); return entry.getOriginal();
} }

View File

@@ -5,16 +5,28 @@ import java.util.regex.Matcher;
import forge.util.Lang; import forge.util.Lang;
public abstract class KeywordInstance<T extends KeywordInstance<?>> { public abstract class KeywordInstance<T extends KeywordInstance<?>> implements KeywordInterface {
private Keyword keyword; private Keyword keyword;
private String original; private String original;
/* (non-Javadoc)
* @see forge.game.keyword.KeywordInterface#getOriginal()
*/
@Override
public String getOriginal() { public String getOriginal() {
return original; return original;
} }
/* (non-Javadoc)
* @see forge.game.keyword.KeywordInterface#getKeyword()
*/
@Override
public Keyword getKeyword() { public Keyword getKeyword() {
return keyword; return keyword;
} }
/* (non-Javadoc)
* @see forge.game.keyword.KeywordInterface#getReminderText()
*/
@Override
public String getReminderText() { public String getReminderText() {
String result = formatReminderText(keyword.reminderText); String result = formatReminderText(keyword.reminderText);
Matcher m = Pattern.compile("\\{(\\w):(.+?)\\}").matcher(result); Matcher m = Pattern.compile("\\{(\\w):(.+?)\\}").matcher(result);
@@ -26,6 +38,10 @@ public abstract class KeywordInstance<T extends KeywordInstance<?>> {
m.appendTail(sb); m.appendTail(sb);
return sb.toString(); return sb.toString();
} }
/* (non-Javadoc)
* @see forge.game.keyword.KeywordInterface#getAmount()
*/
@Override
public int getAmount() { public int getAmount() {
return 1; return 1;
} }

View File

@@ -0,0 +1,13 @@
package forge.game.keyword;
public interface KeywordInterface {
String getOriginal();
Keyword getKeyword();
String getReminderText();
int getAmount();
}