implement illegal state for items
This commit is contained in:
@@ -11,6 +11,8 @@ public abstract class AbstractItem implements Item {
|
|||||||
private AbstractMarket market;
|
private AbstractMarket market;
|
||||||
|
|
||||||
protected abstract void updateName(String name);
|
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){
|
protected final void setMarket(AbstractMarket market){
|
||||||
assert this.market == null;
|
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
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return getName();
|
return getName();
|
||||||
|
|||||||
@@ -8,6 +8,11 @@ public interface Item extends Comparable<Item> {
|
|||||||
String getName();
|
String getName();
|
||||||
void setName(String name);
|
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();
|
Group getGroup();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package ru.trader.store.berkeley;
|
package ru.trader.store.berkeley;
|
||||||
|
|
||||||
import ru.trader.core.AbstractItem;
|
import ru.trader.core.AbstractItem;
|
||||||
|
import ru.trader.core.FACTION;
|
||||||
|
import ru.trader.core.GOVERNMENT;
|
||||||
import ru.trader.core.Group;
|
import ru.trader.core.Group;
|
||||||
import ru.trader.store.berkeley.entities.BDBItem;
|
import ru.trader.store.berkeley.entities.BDBItem;
|
||||||
|
|
||||||
@@ -33,6 +35,28 @@ public class ItemProxy extends AbstractItem {
|
|||||||
return item.getName();
|
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
|
@Override
|
||||||
public Group getGroup() {
|
public Group getGroup() {
|
||||||
if (group == null){
|
if (group == null){
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
package ru.trader.store.berkeley.entities;
|
package ru.trader.store.berkeley.entities;
|
||||||
|
|
||||||
import com.sleepycat.persist.model.*;
|
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 {
|
public class BDBItem {
|
||||||
@PrimaryKey(sequence="I_ID")
|
@PrimaryKey(sequence="I_ID")
|
||||||
private long id;
|
private long id;
|
||||||
@@ -14,6 +19,11 @@ public class BDBItem {
|
|||||||
onRelatedEntityDelete = DeleteAction.CASCADE)
|
onRelatedEntityDelete = DeleteAction.CASCADE)
|
||||||
private String groupId;
|
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() {
|
private BDBItem() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,6 +44,24 @@ public class BDBItem {
|
|||||||
this.name = name;
|
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() {
|
public String getGroupId() {
|
||||||
return groupId;
|
return groupId;
|
||||||
}
|
}
|
||||||
@@ -48,6 +76,8 @@ public class BDBItem {
|
|||||||
if (id != bdbItem.id) return false;
|
if (id != bdbItem.id) return false;
|
||||||
if (!groupId.equals(bdbItem.groupId)) return false;
|
if (!groupId.equals(bdbItem.groupId)) return false;
|
||||||
if (!name.equals(bdbItem.name)) 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,17 @@
|
|||||||
package ru.trader.store.simple;
|
package ru.trader.store.simple;
|
||||||
|
|
||||||
import ru.trader.core.AbstractItem;
|
import ru.trader.core.AbstractItem;
|
||||||
|
import ru.trader.core.FACTION;
|
||||||
|
import ru.trader.core.GOVERNMENT;
|
||||||
import ru.trader.core.Group;
|
import ru.trader.core.Group;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
|
|
||||||
public class SimpleItem extends AbstractItem {
|
public class SimpleItem extends AbstractItem {
|
||||||
private String name;
|
private String name;
|
||||||
private Group group;
|
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) {
|
public SimpleItem(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@@ -26,6 +32,28 @@ public class SimpleItem extends AbstractItem {
|
|||||||
this.name = name;
|
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
|
@Override
|
||||||
public Group getGroup() {
|
public Group getGroup() {
|
||||||
return group;
|
return group;
|
||||||
|
|||||||
Reference in New Issue
Block a user