implement illegal state for items
This commit is contained in:
@@ -11,6 +11,8 @@ public abstract class AbstractItem implements Item {
|
||||
private AbstractMarket market;
|
||||
|
||||
protected abstract void updateName(String name);
|
||||
protected abstract void updateIllegalState(FACTION faction, boolean illegal);
|
||||
protected abstract void updateIllegalState(GOVERNMENT government, boolean illegal);
|
||||
|
||||
protected final void setMarket(AbstractMarket market){
|
||||
assert this.market == null;
|
||||
@@ -28,6 +30,28 @@ public abstract class AbstractItem implements Item {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setIllegal(FACTION faction, boolean illegal){
|
||||
if (market != null){
|
||||
LOG.debug("Change illegal state of item {} for faction {} to {}", this, faction, illegal);
|
||||
updateIllegalState(faction, illegal);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
updateIllegalState(faction, illegal);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setIllegal(GOVERNMENT government, boolean illegal){
|
||||
if (market != null){
|
||||
LOG.debug("Change illegal state of item {} for government {} to {}", this, government, illegal);
|
||||
updateIllegalState(government, illegal);
|
||||
market.setChange(true);
|
||||
} else {
|
||||
updateIllegalState(government, illegal);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return getName();
|
||||
|
||||
@@ -8,6 +8,11 @@ public interface Item extends Comparable<Item> {
|
||||
String getName();
|
||||
void setName(String name);
|
||||
|
||||
boolean isIllegal(FACTION faction);
|
||||
void setIllegal(FACTION faction, boolean illegal);
|
||||
boolean isIllegal(GOVERNMENT government);
|
||||
void setIllegal(GOVERNMENT government, boolean illegal);
|
||||
|
||||
Group getGroup();
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package ru.trader.store.berkeley;
|
||||
|
||||
import ru.trader.core.AbstractItem;
|
||||
import ru.trader.core.FACTION;
|
||||
import ru.trader.core.GOVERNMENT;
|
||||
import ru.trader.core.Group;
|
||||
import ru.trader.store.berkeley.entities.BDBItem;
|
||||
|
||||
@@ -33,6 +35,28 @@ public class ItemProxy extends AbstractItem {
|
||||
return item.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateIllegalState(FACTION faction, boolean illegal) {
|
||||
item.setIllegal(faction, illegal);
|
||||
store.getItemAccessor().update(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIllegal(FACTION faction) {
|
||||
return item.isIllegal(faction);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateIllegalState(GOVERNMENT government, boolean illegal) {
|
||||
item.setIllegal(government, illegal);
|
||||
store.getItemAccessor().update(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIllegal(GOVERNMENT government) {
|
||||
return item.isIllegal(government);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Group getGroup() {
|
||||
if (group == null){
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
package ru.trader.store.berkeley.entities;
|
||||
|
||||
import com.sleepycat.persist.model.*;
|
||||
import ru.trader.core.FACTION;
|
||||
import ru.trader.core.GOVERNMENT;
|
||||
|
||||
@Entity(version = 1)
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
|
||||
@Entity(version = 2)
|
||||
public class BDBItem {
|
||||
@PrimaryKey(sequence="I_ID")
|
||||
private long id;
|
||||
@@ -14,6 +19,11 @@ public class BDBItem {
|
||||
onRelatedEntityDelete = DeleteAction.CASCADE)
|
||||
private String groupId;
|
||||
|
||||
@SecondaryKey(relate=Relationship.MANY_TO_MANY)
|
||||
Collection<FACTION> fIllegals = new HashSet<>();
|
||||
@SecondaryKey(relate=Relationship.MANY_TO_MANY)
|
||||
Collection<GOVERNMENT> gIllegals = new HashSet<>();
|
||||
|
||||
private BDBItem() {
|
||||
}
|
||||
|
||||
@@ -34,6 +44,24 @@ public class BDBItem {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setIllegal(FACTION faction, boolean illegal) {
|
||||
if (illegal) fIllegals.add(faction);
|
||||
else fIllegals.remove(faction);
|
||||
}
|
||||
|
||||
public boolean isIllegal(FACTION faction) {
|
||||
return fIllegals.contains(faction);
|
||||
}
|
||||
|
||||
public void setIllegal(GOVERNMENT government, boolean illegal) {
|
||||
if (illegal) gIllegals.add(government);
|
||||
else gIllegals.remove(government);
|
||||
}
|
||||
|
||||
public boolean isIllegal(GOVERNMENT government) {
|
||||
return gIllegals.contains(government);
|
||||
}
|
||||
|
||||
public String getGroupId() {
|
||||
return groupId;
|
||||
}
|
||||
@@ -48,6 +76,8 @@ public class BDBItem {
|
||||
if (id != bdbItem.id) return false;
|
||||
if (!groupId.equals(bdbItem.groupId)) return false;
|
||||
if (!name.equals(bdbItem.name)) return false;
|
||||
if (!fIllegals.equals(bdbItem.fIllegals)) return false;
|
||||
if (!gIllegals.equals(bdbItem.gIllegals)) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
package ru.trader.store.simple;
|
||||
|
||||
import ru.trader.core.AbstractItem;
|
||||
import ru.trader.core.FACTION;
|
||||
import ru.trader.core.GOVERNMENT;
|
||||
import ru.trader.core.Group;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
public class SimpleItem extends AbstractItem {
|
||||
private String name;
|
||||
private Group group;
|
||||
private final EnumSet<GOVERNMENT> gIllegals = EnumSet.noneOf(GOVERNMENT.class);
|
||||
private final EnumSet<FACTION> fIllegals = EnumSet.noneOf(FACTION.class);
|
||||
|
||||
public SimpleItem(String name) {
|
||||
this.name = name;
|
||||
@@ -26,6 +32,28 @@ public class SimpleItem extends AbstractItem {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateIllegalState(FACTION faction, boolean illegal) {
|
||||
if (illegal) fIllegals.add(faction);
|
||||
else fIllegals.remove(faction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIllegal(FACTION faction) {
|
||||
return fIllegals.contains(faction);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateIllegalState(GOVERNMENT government, boolean illegal) {
|
||||
if (illegal) gIllegals.add(government);
|
||||
else gIllegals.remove(government);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIllegal(GOVERNMENT government) {
|
||||
return gIllegals.contains(government);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Group getGroup() {
|
||||
return group;
|
||||
|
||||
Reference in New Issue
Block a user