package rescuecore2.standard.entities;
import rescuecore2.worldmodel.Entity;
import rescuecore2.worldmodel.EntityID;
import rescuecore2.worldmodel.Property;
import rescuecore2.worldmodel.properties.IntProperty;
/**
The World object.
*/
public class World extends StandardEntity {
private IntProperty startTime;
private IntProperty longitude;
private IntProperty latitude;
private IntProperty windForce;
private IntProperty windDirection;
/**
Construct a World object with entirely undefined property values.
@param id The ID of this entity.
*/
public World(EntityID id) {
super(id);
startTime = new IntProperty(StandardPropertyURN.START_TIME);
longitude = new IntProperty(StandardPropertyURN.LONGITUDE);
latitude = new IntProperty(StandardPropertyURN.LATITUDE);
windForce = new IntProperty(StandardPropertyURN.WIND_FORCE);
windDirection = new IntProperty(StandardPropertyURN.WIND_DIRECTION);
registerProperties(startTime, longitude, latitude, windForce, windDirection);
}
/**
World copy constructor.
@param other The World to copy.
*/
public World(World other) {
super(other);
startTime = new IntProperty(other.startTime);
longitude = new IntProperty(other.longitude);
latitude = new IntProperty(other.latitude);
windForce = new IntProperty(other.windForce);
windDirection = new IntProperty(other.windDirection);
registerProperties(startTime, longitude, latitude, windForce, windDirection);
}
@Override
protected Entity copyImpl() {
return new World(getID());
}
@Override
public StandardEntityURN getStandardURN() {
return StandardEntityURN.WORLD;
}
@Override
public Property getProperty(String urn) {
StandardPropertyURN type;
try {
type = StandardPropertyURN.fromString(urn);
}
catch (IllegalArgumentException e) {
return super.getProperty(urn);
}
switch (type) {
case START_TIME:
return startTime;
case LONGITUDE:
return longitude;
case LATITUDE:
return latitude;
case WIND_FORCE:
return windForce;
case WIND_DIRECTION:
return windDirection;
default:
return super.getProperty(urn);
}
}
/**
Get the startTime property.
@return The startTime property.
*/
public IntProperty getStartTimeProperty() {
return startTime;
}
/**
Get the value of the startTime property.
@return The value of the startTime property.
*/
public int getStartTime() {
return startTime.getValue();
}
/**
Set the startTime property.
@param startTime The new startTime.
*/
public void setStartTime(int startTime) {
this.startTime.setValue(startTime);
}
/**
Find out if the startTime property has been defined.
@return True if the startTime property has been defined, false otherwise.
*/
public boolean isStartTimeDefined() {
return startTime.isDefined();
}
/**
Undefine the startTime property.
*/
public void undefineStartTime() {
startTime.undefine();
}
/**
Get the latitude property.
@return The latitude property.
*/
public IntProperty getLatitudeProperty() {
return latitude;
}
/**
Get the value of the latitude property.
@return The value of the latitude property.
*/
public int getLatitude() {
return latitude.getValue();
}
/**
Set the latitude property.
@param latitude The new latitude.
*/
public void setLatitude(int latitude) {
this.latitude.setValue(latitude);
}
/**
Find out if the latitude property has been defined.
@return True if the latitude property has been defined, false otherwise.
*/
public boolean isLatitudeDefined() {
return latitude.isDefined();
}
/**
Undefine the latitude property.
*/
public void undefineLatitude() {
latitude.undefine();
}
/**
Get the longitude property.
@return The longitude property.
*/
public IntProperty getLongitudeProperty() {
return longitude;
}
/**
Get the value of the longitude property.
@return The value of the longitude property.
*/
public int getLongitude() {
return longitude.getValue();
}
/**
Set the longitude property.
@param longitude The new longitude.
*/
public void setLongitude(int longitude) {
this.longitude.setValue(longitude);
}
/**
Find out if the longitude property has been defined.
@return True if the longitude property has been defined, false otherwise.
*/
public boolean isLongitudeDefined() {
return longitude.isDefined();
}
/**
Undefine the longitude property.
*/
public void undefineLongitude() {
longitude.undefine();
}
/**
Get the windForce property.
@return The windForce property.
*/
public IntProperty getWindForceProperty() {
return windForce;
}
/**
Get the value of the windForce property.
@return The value of the windForce property.
*/
public int getWindForce() {
return windForce.getValue();
}
/**
Set the windForce property.
@param windForce The new windForce.
*/
public void setWindForce(int windForce) {
this.windForce.setValue(windForce);
}
/**
Find out if the windForce property has been defined.
@return True if the windForce property has been defined, false otherwise.
*/
public boolean isWindForceDefined() {
return windForce.isDefined();
}
/**
Undefine the windForce property.
*/
public void undefineWindForce() {
windForce.undefine();
}
/**
Get the windDirection property.
@return The windDirection property.
*/
public IntProperty getWindDirectionProperty() {
return windDirection;
}
/**
Get the value of the windDirection property.
@return The value of the windDirection property.
*/
public int getWindDirection() {
return windDirection.getValue();
}
/**
Set the windDirection property.
@param windDirection The new windDirection.
*/
public void setWindDirection(int windDirection) {
this.windDirection.setValue(windDirection);
}
/**
Find out if the windDirection property has been defined.
@return True if the windDirection property has been defined, false otherwise.
*/
public boolean isWindDirectionDefined() {
return windDirection.isDefined();
}
/**
Undefine the windDirection property.
*/
public void undefineWindDirection() {
windDirection.undefine();
}
}