java conventions and lombok
This commit is contained in:
parent
6fbc4b9a7a
commit
38aad961cc
@ -75,7 +75,7 @@ public abstract class MPlugin extends JavaPlugin implements Listener
|
|||||||
// Collection shutdowns for new system.
|
// Collection shutdowns for new system.
|
||||||
for (Coll<?, ?> coll : Coll.instances)
|
for (Coll<?, ?> coll : Coll.instances)
|
||||||
{
|
{
|
||||||
if (coll.mplugin() != this) continue;
|
if (coll.getMplugin() != this) continue;
|
||||||
coll.examineThread().interrupt();
|
coll.examineThread().interrupt();
|
||||||
coll.syncAll(); // TODO: Save outwards only? We may want to avoid loads at this stage...
|
coll.syncAll(); // TODO: Save outwards only? We may want to avoid loads at this stage...
|
||||||
Coll.instances.remove(coll);
|
Coll.instances.remove(coll);
|
||||||
|
@ -14,10 +14,8 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import com.massivecraft.mcore4.store.accessor.Accessor;
|
|
||||||
import com.massivecraft.mcore4.util.Txt;
|
import com.massivecraft.mcore4.util.Txt;
|
||||||
import com.massivecraft.mcore4.xlib.gson.annotations.SerializedName;
|
import com.massivecraft.mcore4.xlib.gson.annotations.SerializedName;
|
||||||
|
|
||||||
@ -46,7 +44,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: worldName
|
// Field: worldName
|
||||||
@SerializedName("w")
|
@SerializedName("w")
|
||||||
@Getter @Setter protected String worldName;
|
@Getter @Setter protected String worldName = null;
|
||||||
|
|
||||||
// FakeField: world
|
// FakeField: world
|
||||||
public World getWorld()
|
public World getWorld()
|
||||||
@ -54,17 +52,16 @@ public class PS implements Cloneable
|
|||||||
if (this.worldName == null) return null;
|
if (this.worldName == null) return null;
|
||||||
return Bukkit.getWorld(this.worldName);
|
return Bukkit.getWorld(this.worldName);
|
||||||
}
|
}
|
||||||
public PS setWorld(World val)
|
public void setWorld(World val)
|
||||||
{
|
{
|
||||||
this.worldName = val.getName();
|
this.worldName = val.getName();
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
// Field: blockX
|
// Field: blockX
|
||||||
@SerializedName("bx")
|
@SerializedName("bx")
|
||||||
@Getter @Setter protected Integer blockX;
|
@Getter @Setter protected Integer blockX = null;
|
||||||
public Integer calcBlockX()
|
public Integer calcBlockX()
|
||||||
{
|
{
|
||||||
return calcBlock(this.locationX, this.blockX, this.chunkX);
|
return calcBlock(this.locationX, this.blockX, this.chunkX);
|
||||||
@ -72,7 +69,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: blockY
|
// Field: blockY
|
||||||
@SerializedName("by")
|
@SerializedName("by")
|
||||||
@Getter @Setter protected Integer blockY;
|
@Getter @Setter protected Integer blockY = null;
|
||||||
public Integer calcBlockY()
|
public Integer calcBlockY()
|
||||||
{
|
{
|
||||||
return calcBlock(this.locationY, this.blockY, null);
|
return calcBlock(this.locationY, this.blockY, null);
|
||||||
@ -80,7 +77,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: blockZ
|
// Field: blockZ
|
||||||
@SerializedName("bz")
|
@SerializedName("bz")
|
||||||
@Getter @Setter protected Integer blockZ;
|
@Getter @Setter protected Integer blockZ = null;
|
||||||
public Integer calcBlockZ()
|
public Integer calcBlockZ()
|
||||||
{
|
{
|
||||||
return calcBlock(this.locationZ, this.blockZ, this.chunkZ);
|
return calcBlock(this.locationZ, this.blockZ, this.chunkZ);
|
||||||
@ -98,7 +95,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: locationX
|
// Field: locationX
|
||||||
@SerializedName("lx")
|
@SerializedName("lx")
|
||||||
@Getter @Setter protected Double locationX;
|
@Getter @Setter protected Double locationX = null;
|
||||||
public Double calcLocationX()
|
public Double calcLocationX()
|
||||||
{
|
{
|
||||||
return calcLocation(this.locationX, this.blockX, this.chunkX);
|
return calcLocation(this.locationX, this.blockX, this.chunkX);
|
||||||
@ -106,7 +103,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: locationY
|
// Field: locationY
|
||||||
@SerializedName("ly")
|
@SerializedName("ly")
|
||||||
@Getter @Setter protected Double locationY;
|
@Getter @Setter protected Double locationY = null;
|
||||||
public Double calcLocationY()
|
public Double calcLocationY()
|
||||||
{
|
{
|
||||||
return calcLocation(this.locationY, this.blockY, null);
|
return calcLocation(this.locationY, this.blockY, null);
|
||||||
@ -114,7 +111,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: locationZ
|
// Field: locationZ
|
||||||
@SerializedName("lz")
|
@SerializedName("lz")
|
||||||
@Getter @Setter protected Double locationZ;
|
@Getter @Setter protected Double locationZ = null;
|
||||||
public Double calclocationZ()
|
public Double calclocationZ()
|
||||||
{
|
{
|
||||||
return calcLocation(this.locationZ, this.blockZ, this.chunkZ);
|
return calcLocation(this.locationZ, this.blockZ, this.chunkZ);
|
||||||
@ -132,7 +129,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: chunkX
|
// Field: chunkX
|
||||||
@SerializedName("cx")
|
@SerializedName("cx")
|
||||||
@Getter @Setter protected Integer chunkX;
|
@Getter @Setter protected Integer chunkX = null;
|
||||||
public Integer calcChunkX()
|
public Integer calcChunkX()
|
||||||
{
|
{
|
||||||
return calcChunk(this.locationX, this.blockX, this.chunkX);
|
return calcChunk(this.locationX, this.blockX, this.chunkX);
|
||||||
@ -140,7 +137,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: chunkZ
|
// Field: chunkZ
|
||||||
@SerializedName("xz")
|
@SerializedName("xz")
|
||||||
@Getter @Setter protected Integer chunkZ;
|
@Getter @Setter protected Integer chunkZ = null;
|
||||||
public Integer calcChunkZ()
|
public Integer calcChunkZ()
|
||||||
{
|
{
|
||||||
return calcChunk(this.locationZ, this.blockZ, this.chunkZ);
|
return calcChunk(this.locationZ, this.blockZ, this.chunkZ);
|
||||||
@ -158,8 +155,8 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: pitch
|
// Field: pitch
|
||||||
@SerializedName("p")
|
@SerializedName("p")
|
||||||
@Getter protected Float pitch;
|
@Getter protected Float pitch = null;
|
||||||
public PS setPitch(Float val)
|
public void setPitch(Float val)
|
||||||
{
|
{
|
||||||
if (val == null)
|
if (val == null)
|
||||||
{
|
{
|
||||||
@ -169,18 +166,17 @@ public class PS implements Cloneable
|
|||||||
{
|
{
|
||||||
this.pitch = (val + 360F) % 360F;
|
this.pitch = (val + 360F) % 360F;
|
||||||
}
|
}
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Field: yaw
|
// Field: yaw
|
||||||
@SerializedName("y")
|
@SerializedName("y")
|
||||||
@Getter @Setter protected Float yaw;
|
@Getter @Setter protected Float yaw = null;
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
// Field: velocityX
|
// Field: velocityX
|
||||||
@SerializedName("vx")
|
@SerializedName("vx")
|
||||||
@Getter @Setter protected Double velocityX;
|
@Getter @Setter protected Double velocityX = null;
|
||||||
public Double calcVelocityX()
|
public Double calcVelocityX()
|
||||||
{
|
{
|
||||||
return calcVelocity(this.locationX, this.blockX, this.chunkX, this.velocityX);
|
return calcVelocity(this.locationX, this.blockX, this.chunkX, this.velocityX);
|
||||||
@ -188,7 +184,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: velocityY
|
// Field: velocityY
|
||||||
@SerializedName("vy")
|
@SerializedName("vy")
|
||||||
@Getter @Setter protected Double velocityY;
|
@Getter @Setter protected Double velocityY = null;
|
||||||
public Double calcVelocityY()
|
public Double calcVelocityY()
|
||||||
{
|
{
|
||||||
return calcVelocity(this.locationY, this.blockY, 0, this.velocityY);
|
return calcVelocity(this.locationY, this.blockY, 0, this.velocityY);
|
||||||
@ -196,7 +192,7 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
// Field: velocityZ
|
// Field: velocityZ
|
||||||
@SerializedName("vz")
|
@SerializedName("vz")
|
||||||
@Getter @Setter protected Double velocityZ;
|
@Getter @Setter protected Double velocityZ = null;
|
||||||
public Double calcVelocityZ()
|
public Double calcVelocityZ()
|
||||||
{
|
{
|
||||||
return calcVelocity(this.locationZ, this.blockZ, this.chunkZ, this.velocityZ);
|
return calcVelocity(this.locationZ, this.blockZ, this.chunkZ, this.velocityZ);
|
||||||
@ -212,7 +208,7 @@ public class PS implements Cloneable
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// CONVERTERS
|
// GET / CALC
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
|
||||||
public synchronized Location getLocation()
|
public synchronized Location getLocation()
|
||||||
@ -248,7 +244,7 @@ public class PS implements Cloneable
|
|||||||
{
|
{
|
||||||
return this.innerBlock(this.calcBlockX(), this.calcBlockY(), this.calcBlockZ());
|
return this.innerBlock(this.calcBlockX(), this.calcBlockY(), this.calcBlockZ());
|
||||||
}
|
}
|
||||||
public synchronized Block innerBlock(Integer x, Integer y, Integer z)
|
protected synchronized Block innerBlock(Integer x, Integer y, Integer z)
|
||||||
{
|
{
|
||||||
World world = this.getWorld();
|
World world = this.getWorld();
|
||||||
if (world == null) return null;
|
if (world == null) return null;
|
||||||
@ -268,7 +264,7 @@ public class PS implements Cloneable
|
|||||||
{
|
{
|
||||||
return this.innerChunk(this.calcChunkX(), this.calcChunkZ());
|
return this.innerChunk(this.calcChunkX(), this.calcChunkZ());
|
||||||
}
|
}
|
||||||
public synchronized Chunk innerChunk(Integer x, Integer z)
|
protected synchronized Chunk innerChunk(Integer x, Integer z)
|
||||||
{
|
{
|
||||||
World world = this.getWorld();
|
World world = this.getWorld();
|
||||||
if (world == null) return null;
|
if (world == null) return null;
|
||||||
@ -287,7 +283,7 @@ public class PS implements Cloneable
|
|||||||
{
|
{
|
||||||
return this.innerVelocity(this.calcVelocityX(), this.calcVelocityY(), this.calcVelocityZ());
|
return this.innerVelocity(this.calcVelocityX(), this.calcVelocityY(), this.calcVelocityZ());
|
||||||
}
|
}
|
||||||
public synchronized Vector innerVelocity(Double x, Double y, Double z)
|
protected synchronized Vector innerVelocity(Double x, Double y, Double z)
|
||||||
{
|
{
|
||||||
if (x == null) return null;
|
if (x == null) return null;
|
||||||
if (y == null) return null;
|
if (y == null) return null;
|
||||||
@ -296,10 +292,10 @@ public class PS implements Cloneable
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// READERS
|
// SET
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
|
||||||
public synchronized PS readDefault()
|
public synchronized void setDefault()
|
||||||
{
|
{
|
||||||
this.worldName = null;
|
this.worldName = null;
|
||||||
|
|
||||||
@ -320,30 +316,63 @@ public class PS implements Cloneable
|
|||||||
this.velocityX = null;
|
this.velocityX = null;
|
||||||
this.velocityY = null;
|
this.velocityY = null;
|
||||||
this.velocityZ = null;
|
this.velocityZ = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void setPSTransparent(PS ps)
|
||||||
|
{
|
||||||
|
if (ps.worldName != null) this.worldName = ps.worldName;
|
||||||
|
|
||||||
return this;
|
if (ps.blockX != null) this.blockX = ps.blockX;
|
||||||
|
if (ps.blockY != null) this.blockY = ps.blockY;
|
||||||
|
if (ps.blockZ != null) this.blockZ = ps.blockZ;
|
||||||
|
|
||||||
|
if (ps.locationX != null) this.locationX = ps.locationX;
|
||||||
|
if (ps.locationY != null) this.locationY = ps.locationY;
|
||||||
|
if (ps.locationZ != null) this.locationZ = ps.locationZ;
|
||||||
|
|
||||||
|
if (ps.chunkX != null) this.chunkX = ps.chunkX;
|
||||||
|
if (ps.chunkZ != null) this.chunkZ = ps.chunkZ;
|
||||||
|
|
||||||
|
if (ps.pitch != null) this.pitch = ps.pitch;
|
||||||
|
if (ps.yaw != null) this.yaw = ps.yaw;
|
||||||
|
|
||||||
|
if (ps.velocityX != null) this.velocityX = ps.velocityX;
|
||||||
|
if (ps.velocityY != null) this.velocityY = ps.velocityY;
|
||||||
|
if (ps.velocityZ != null) this.velocityZ = ps.velocityZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PS readTransparent(PS ps)
|
public synchronized void setPS(PS ps)
|
||||||
{
|
{
|
||||||
Accessor.get(PS.class).copy(ps, this, true);
|
this.worldName = ps.worldName;
|
||||||
return this;
|
|
||||||
}
|
this.blockX = ps.blockX;
|
||||||
|
this.blockY = ps.blockY;
|
||||||
public synchronized PS read(PS ps)
|
this.blockZ = ps.blockZ;
|
||||||
{
|
|
||||||
Accessor.get(PS.class).copy(ps, this);
|
this.locationX = ps.locationX;
|
||||||
return this;
|
this.locationY = ps.locationY;
|
||||||
|
this.locationZ = ps.locationZ;
|
||||||
|
|
||||||
|
this.chunkX = ps.chunkX;
|
||||||
|
this.chunkZ = ps.chunkZ;
|
||||||
|
|
||||||
|
this.pitch = ps.pitch;
|
||||||
|
this.yaw = ps.yaw;
|
||||||
|
|
||||||
|
this.velocityX = ps.velocityX;
|
||||||
|
this.velocityY = ps.velocityY;
|
||||||
|
this.velocityZ = ps.velocityZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
public synchronized PS read(Location location)
|
public synchronized void setLocation(Location location)
|
||||||
{
|
{
|
||||||
return this.readDefault().readTransparent(location);
|
this.setDefault();
|
||||||
|
this.setLocationTransparent(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PS readTransparent(Location location)
|
public synchronized void setLocationTransparent(Location location)
|
||||||
{
|
{
|
||||||
this.worldName = location.getWorld().getName();
|
this.worldName = location.getWorld().getName();
|
||||||
this.locationX = location.getX();
|
this.locationX = location.getX();
|
||||||
@ -351,79 +380,77 @@ public class PS implements Cloneable
|
|||||||
this.locationZ = location.getZ();
|
this.locationZ = location.getZ();
|
||||||
this.setPitch(location.getPitch());
|
this.setPitch(location.getPitch());
|
||||||
this.yaw = location.getYaw();
|
this.yaw = location.getYaw();
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
public synchronized PS read(Vector vector)
|
public synchronized void setVelocity(Vector vector)
|
||||||
{
|
{
|
||||||
return this.readDefault().readTransparent(vector);
|
this.setDefault();
|
||||||
|
this.setVelocityTransparent(vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PS readTransparent(Vector vector)
|
public synchronized void setVelocityTransparent(Vector vector)
|
||||||
{
|
{
|
||||||
this.velocityX = vector.getX();
|
this.velocityX = vector.getX();
|
||||||
this.velocityY = vector.getY();
|
this.velocityY = vector.getY();
|
||||||
this.velocityZ = vector.getZ();
|
this.velocityZ = vector.getZ();
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
public synchronized PS read(Player player)
|
public synchronized void setEntity(Entity entity)
|
||||||
{
|
{
|
||||||
return this.readDefault().readTransparent(player);
|
this.setDefault();
|
||||||
|
this.setEntityTransparent(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PS readTransparent(Player player)
|
public synchronized void setEntityTransparent(Entity entity)
|
||||||
{
|
{
|
||||||
this.readTransparent(player.getLocation());
|
this.setLocationTransparent(entity.getLocation());
|
||||||
this.readTransparent(player.getVelocity());
|
this.setVelocityTransparent(entity.getVelocity());
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
public synchronized PS read(Block block)
|
public synchronized void setBlock(Block block)
|
||||||
{
|
{
|
||||||
return this.readDefault().readTransparent(block);
|
this.setDefault();
|
||||||
|
this.setBlockTransparent(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PS readTransparent(Block block)
|
public synchronized void setBlockTransparent(Block block)
|
||||||
{
|
{
|
||||||
this.worldName = block.getWorld().getName();
|
this.worldName = block.getWorld().getName();
|
||||||
this.blockX = block.getX();
|
this.blockX = block.getX();
|
||||||
this.blockY = block.getY();
|
this.blockY = block.getY();
|
||||||
this.blockZ = block.getZ();
|
this.blockZ = block.getZ();
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
|
||||||
public synchronized PS read(Chunk chunk)
|
public synchronized void setChunk(Chunk chunk)
|
||||||
{
|
{
|
||||||
return this.readDefault().readTransparent(chunk);
|
this.setDefault();
|
||||||
|
this.setChunkTransparent(chunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PS readTransparent(Chunk chunk)
|
public synchronized void setChunkTransparent(Chunk chunk)
|
||||||
{
|
{
|
||||||
this.worldName = chunk.getWorld().getName();
|
this.worldName = chunk.getWorld().getName();
|
||||||
this.chunkX = chunk.getX();
|
this.chunkX = chunk.getX();
|
||||||
this.chunkZ = chunk.getZ();
|
this.chunkZ = chunk.getZ();
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
// TODO: This should be removed later on when my converting phase is complete.
|
|
||||||
public synchronized PS read(String str)
|
public synchronized void setOldString(String str)
|
||||||
{
|
{
|
||||||
return this.readDefault().readTransparent(str);
|
this.setDefault();
|
||||||
|
this.setOldStringTransparent(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PS readTransparent(String str)
|
public synchronized void setOldStringTransparent(String str)
|
||||||
{
|
{
|
||||||
String[] parts = str.split("\\|");
|
String[] parts = str.split("\\|");
|
||||||
|
|
||||||
@ -443,8 +470,6 @@ public class PS implements Cloneable
|
|||||||
this.pitch = Float.parseFloat(parts[4]);
|
this.pitch = Float.parseFloat(parts[4]);
|
||||||
this.yaw = Float.parseFloat(parts[5]);
|
this.yaw = Float.parseFloat(parts[5]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -468,32 +493,37 @@ public class PS implements Cloneable
|
|||||||
|
|
||||||
public PS(PS ps)
|
public PS(PS ps)
|
||||||
{
|
{
|
||||||
this.read(ps);
|
this.setPS(ps);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PS(Location location)
|
public PS(Location location)
|
||||||
{
|
{
|
||||||
this.read(location);
|
this.setLocationTransparent(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PS(Vector vector)
|
public PS(Vector velocity)
|
||||||
{
|
{
|
||||||
this.read(vector);
|
this.setVelocityTransparent(velocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PS(Player player)
|
public PS(Entity entity)
|
||||||
{
|
{
|
||||||
this.read(player);
|
this.setEntityTransparent(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PS(Block block)
|
public PS(Block block)
|
||||||
{
|
{
|
||||||
this.read(block);
|
this.setBlockTransparent(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PS(Chunk chunk)
|
public PS(Chunk chunk)
|
||||||
{
|
{
|
||||||
this.read(chunk);
|
this.setChunkTransparent(chunk);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PS(String oldString)
|
||||||
|
{
|
||||||
|
this.setOldStringTransparent(oldString);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
@ -22,7 +22,7 @@ public class PSAdapter implements JsonDeserializer<PS>
|
|||||||
{
|
{
|
||||||
if (json.isJsonPrimitive())
|
if (json.isJsonPrimitive())
|
||||||
{
|
{
|
||||||
return new PS().read(json.getAsString());
|
return new PS(json.getAsString());
|
||||||
}
|
}
|
||||||
return new Gson().fromJson(json, typeOfT);
|
return new Gson().fromJson(json, typeOfT);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,9 @@ import java.util.*;
|
|||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.SimpleCommandMap;
|
import org.bukkit.command.SimpleCommandMap;
|
||||||
@ -29,9 +32,7 @@ public abstract class MCommand
|
|||||||
|
|
||||||
// FIELD: subCommands
|
// FIELD: subCommands
|
||||||
// The sub-commands to this command
|
// The sub-commands to this command
|
||||||
protected List<MCommand> subCommands;
|
@Getter @Setter protected List<MCommand> subCommands;
|
||||||
public List<MCommand> getSubCommands() { return this.subCommands; }
|
|
||||||
public void setSubCommands(List<MCommand> val) { this.subCommands = val; }
|
|
||||||
public void addSubCommand(MCommand subCommand)
|
public void addSubCommand(MCommand subCommand)
|
||||||
{
|
{
|
||||||
subCommand.commandChain.addAll(this.commandChain);
|
subCommand.commandChain.addAll(this.commandChain);
|
||||||
@ -41,24 +42,18 @@ public abstract class MCommand
|
|||||||
|
|
||||||
// FIELD: aliases
|
// FIELD: aliases
|
||||||
// The different names this commands will react to
|
// The different names this commands will react to
|
||||||
protected List<String> aliases;
|
@Getter @Setter protected List<String> aliases;
|
||||||
public List<String> getAliases() { return this.aliases; }
|
|
||||||
public void setAliases(List<String> val) { this.aliases = val; }
|
|
||||||
public void addAliases(String... aliases) { this.aliases.addAll(Arrays.asList(aliases)); }
|
public void addAliases(String... aliases) { this.aliases.addAll(Arrays.asList(aliases)); }
|
||||||
public void addAliases(List<String> aliases) { this.aliases.addAll(aliases); }
|
public void addAliases(List<String> aliases) { this.aliases.addAll(aliases); }
|
||||||
|
|
||||||
// FIELD: requiredArgs
|
// FIELD: requiredArgs
|
||||||
// These args must always be sent
|
// These args must always be sent
|
||||||
protected List<String> requiredArgs;
|
@Getter @Setter protected List<String> requiredArgs;
|
||||||
public List<String> getRequiredArgs() { return this.requiredArgs; }
|
|
||||||
public void setRequiredArgs(List<String> val) { this.requiredArgs = val; }
|
|
||||||
public void addRequiredArg(String arg) { this.requiredArgs.add(arg); }
|
public void addRequiredArg(String arg) { this.requiredArgs.add(arg); }
|
||||||
|
|
||||||
// FIELD: optionalArgs
|
// FIELD: optionalArgs
|
||||||
// These args are optional
|
// These args are optional
|
||||||
protected Map<String, String> optionalArgs;
|
@Getter @Setter protected Map<String, String> optionalArgs;
|
||||||
public Map<String, String> getOptionalArgs() { return this.optionalArgs; }
|
|
||||||
public void setOptionalArgs(Map<String, String> val) { this.optionalArgs = val; }
|
|
||||||
public void addOptionalArg(String arg, String def) { this.optionalArgs.put(arg, def); }
|
public void addOptionalArg(String arg, String def) { this.optionalArgs.put(arg, def); }
|
||||||
|
|
||||||
// FIELD: errorOnToManyArgs
|
// FIELD: errorOnToManyArgs
|
||||||
@ -69,16 +64,13 @@ public abstract class MCommand
|
|||||||
|
|
||||||
// FIELD: requirements
|
// FIELD: requirements
|
||||||
// All these requirements must be met for the command to be executable;
|
// All these requirements must be met for the command to be executable;
|
||||||
protected List<IReq> requirements;
|
@Getter @Setter protected List<IReq> requirements;
|
||||||
public List<IReq> getRequirements() { return this.requirements; }
|
|
||||||
public void setRequirements(List<IReq> val) { this.requirements = val; }
|
|
||||||
public void addRequirements(IReq... requirements) { this.requirements.addAll(Arrays.asList(requirements)); }
|
public void addRequirements(IReq... requirements) { this.requirements.addAll(Arrays.asList(requirements)); }
|
||||||
|
|
||||||
// FIELD: desc
|
// FIELD: desc
|
||||||
// This field may be left blank and will in such case be loaded from the permissions node instead.
|
// This field may be left blank and will in such case be loaded from the permissions node instead.
|
||||||
// Thus make sure the permissions node description is an action description like "eat hamburgers" or "do admin stuff".
|
// Thus make sure the permissions node description is an action description like "eat hamburgers" or "do admin stuff".
|
||||||
protected String desc = null;
|
@Setter protected String desc = null;
|
||||||
public void setDesc(String val) { this.desc = val; }
|
|
||||||
public String getDesc()
|
public String getDesc()
|
||||||
{
|
{
|
||||||
if (this.desc != null) return this.desc;
|
if (this.desc != null) return this.desc;
|
||||||
@ -98,7 +90,7 @@ public abstract class MCommand
|
|||||||
|
|
||||||
// FIELD: descPermission
|
// FIELD: descPermission
|
||||||
// This permission node IS NOT TESTED AT ALL. It is rather used in the method above.
|
// This permission node IS NOT TESTED AT ALL. It is rather used in the method above.
|
||||||
protected String descPermission;
|
@Setter protected String descPermission;
|
||||||
public String getDescPermission()
|
public String getDescPermission()
|
||||||
{
|
{
|
||||||
if (this.descPermission != null) return this.descPermission;
|
if (this.descPermission != null) return this.descPermission;
|
||||||
@ -110,7 +102,6 @@ public abstract class MCommand
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
public void setDescPermission(String val) { this.descPermission = val; }
|
|
||||||
|
|
||||||
// FIELD: help
|
// FIELD: help
|
||||||
// This is a multi-line help text for the command.
|
// This is a multi-line help text for the command.
|
||||||
@ -120,9 +111,7 @@ public abstract class MCommand
|
|||||||
public List<String> getHelp() { return this.help; }
|
public List<String> getHelp() { return this.help; }
|
||||||
|
|
||||||
// FIELD: visibilityMode
|
// FIELD: visibilityMode
|
||||||
protected VisibilityMode visibilityMode;
|
@Getter @Setter protected VisibilityMode visibilityMode;
|
||||||
public VisibilityMode getVisibilityMode() { return this.visibilityMode; }
|
|
||||||
public void setVisibilityMode(VisibilityMode val) { this.visibilityMode = val; }
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// EXECUTION INFO
|
// EXECUTION INFO
|
||||||
@ -130,15 +119,11 @@ public abstract class MCommand
|
|||||||
|
|
||||||
// FIELD: args
|
// FIELD: args
|
||||||
// Will contain the arguments, or and empty list if there are none.
|
// Will contain the arguments, or and empty list if there are none.
|
||||||
protected List<String> args;
|
@Getter @Setter protected List<String> args;
|
||||||
public List<String> getArgs() { return this.args; }
|
|
||||||
public void setArgs(List<String> val) { this.args = val; }
|
|
||||||
|
|
||||||
// FIELD: commandChain
|
// FIELD: commandChain
|
||||||
// The command chain used to execute this command
|
// The command chain used to execute this command
|
||||||
protected List<MCommand> commandChain = new ArrayList<MCommand>();
|
@Getter @Setter protected List<MCommand> commandChain = new ArrayList<MCommand>();
|
||||||
public List<MCommand> getCommandChain() { return this.commandChain; }
|
|
||||||
public void setCommandChain(List<MCommand> val) { this.commandChain = val; }
|
|
||||||
|
|
||||||
// FIELDS: sender, me, senderIsConsole
|
// FIELDS: sender, me, senderIsConsole
|
||||||
public CommandSender sender;
|
public CommandSender sender;
|
||||||
|
@ -30,7 +30,7 @@ public class ARAspect extends ARAbstractSelect<Aspect>
|
|||||||
@Override
|
@Override
|
||||||
public Collection<String> altNames(MCommand mcommand)
|
public Collection<String> altNames(MCommand mcommand)
|
||||||
{
|
{
|
||||||
return AspectColl.i.ids();
|
return AspectColl.i.getIds();
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -30,7 +30,7 @@ public class ARMultiverse extends ARAbstractSelect<Multiverse>
|
|||||||
@Override
|
@Override
|
||||||
public Collection<String> altNames(MCommand mcommand)
|
public Collection<String> altNames(MCommand mcommand)
|
||||||
{
|
{
|
||||||
return MultiverseColl.i.ids();
|
return MultiverseColl.i.getIds();
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -4,24 +4,16 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
public class ArgResult<T>
|
public class ArgResult<T>
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// FIELD: RESULT
|
// FIELD: RESULT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected T result = null;
|
@Getter @Setter protected T result = null;
|
||||||
|
|
||||||
public T getResult()
|
|
||||||
{
|
|
||||||
return this.result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setResult(T val)
|
|
||||||
{
|
|
||||||
this.result = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasResult()
|
public boolean hasResult()
|
||||||
{
|
{
|
||||||
return this.getResult() != null;
|
return this.getResult() != null;
|
||||||
@ -31,12 +23,7 @@ public class ArgResult<T>
|
|||||||
// FIELD: ERRORS
|
// FIELD: ERRORS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected List<String> errors = new ArrayList<String>();
|
@Getter protected List<String> errors = new ArrayList<String>();
|
||||||
|
|
||||||
public List<String> getErrors()
|
|
||||||
{
|
|
||||||
return this.errors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setErrors(List<String> val)
|
public void setErrors(List<String> val)
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,7 @@ public class AHAspect extends AHBase<Aspect>
|
|||||||
this.error.add("<b>No aspect called \"<p>"+str+"<b>\".");
|
this.error.add("<b>No aspect called \"<p>"+str+"<b>\".");
|
||||||
if (Permission.USYS_ASPECT_LIST.has(sender, false))
|
if (Permission.USYS_ASPECT_LIST.has(sender, false))
|
||||||
{
|
{
|
||||||
this.error.add("<i>Use "+Txt.implodeCommaAndDot(AspectColl.i.ids(), "<h>%s", "<i>, ", " <i>or ", "<i>."));
|
this.error.add("<i>Use "+Txt.implodeCommaAndDot(AspectColl.i.getIds(), "<h>%s", "<i>, ", " <i>or ", "<i>."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ public class AHMultiverse extends AHBase<Multiverse>
|
|||||||
this.error.add("<b>No multiverse called \"<p>"+str+"<b>\".");
|
this.error.add("<b>No multiverse called \"<p>"+str+"<b>\".");
|
||||||
if (Permission.USYS_MULTIVERSE_LIST.has(sender, false))
|
if (Permission.USYS_MULTIVERSE_LIST.has(sender, false))
|
||||||
{
|
{
|
||||||
this.error.add("<i>Use "+Txt.implodeCommaAndDot(MultiverseColl.i.ids(), "<h>%s", "<i>, ", " <i>or ", "<i>."));
|
this.error.add("<i>Use "+Txt.implodeCommaAndDot(MultiverseColl.i.getIds(), "<h>%s", "<i>, ", " <i>or ", "<i>."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package com.massivecraft.mcore4.cmd.req;
|
package com.massivecraft.mcore4.cmd.req;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import com.massivecraft.mcore4.cmd.MCommand;
|
import com.massivecraft.mcore4.cmd.MCommand;
|
||||||
@ -7,9 +10,7 @@ import com.massivecraft.mcore4.util.Perm;
|
|||||||
|
|
||||||
public class ReqHasPerm implements IReq
|
public class ReqHasPerm implements IReq
|
||||||
{
|
{
|
||||||
private String perm;
|
@Getter @Setter private String perm;
|
||||||
public String getPerm() { return this.perm; }
|
|
||||||
public void setPerm(String val) { this.perm = val; }
|
|
||||||
|
|
||||||
public ReqHasPerm(String perm)
|
public ReqHasPerm(String perm)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.massivecraft.mcore4.event;
|
package com.massivecraft.mcore4.event;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -20,14 +22,11 @@ public class MCoreAfterPlayerRespawnEvent extends Event implements Runnable
|
|||||||
// FIELD
|
// FIELD
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected Location deathLocation;
|
@Getter protected final Location deathLocation;
|
||||||
public Location getDeathLocation() { return this.deathLocation; }
|
|
||||||
|
|
||||||
protected PlayerRespawnEvent bukkitEvent;
|
@Getter protected final PlayerRespawnEvent bukkitEvent;
|
||||||
public PlayerRespawnEvent getBukkitEvent() { return this.bukkitEvent; }
|
|
||||||
|
|
||||||
public Location getRespawnLocation() { return this.bukkitEvent.getRespawnLocation(); }
|
public Location getRespawnLocation() { return this.bukkitEvent.getRespawnLocation(); }
|
||||||
|
|
||||||
public Player getPlayer() { return this.bukkitEvent.getPlayer(); }
|
public Player getPlayer() { return this.bukkitEvent.getPlayer(); }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.massivecraft.mcore4.event;
|
package com.massivecraft.mcore4.event;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -21,8 +23,7 @@ public class MCoreAfterPlayerTeleportEvent extends Event implements Runnable
|
|||||||
// FIELD
|
// FIELD
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected PlayerTeleportEvent bukkitEvent;
|
@Getter protected final PlayerTeleportEvent bukkitEvent;
|
||||||
public PlayerTeleportEvent getBukkitEvent() { return this.bukkitEvent; }
|
|
||||||
|
|
||||||
public Location getFrom() { return this.bukkitEvent.getFrom(); }
|
public Location getFrom() { return this.bukkitEvent.getFrom(); }
|
||||||
public Location getTo() { return this.bukkitEvent.getTo(); }
|
public Location getTo() { return this.bukkitEvent.getTo(); }
|
||||||
|
@ -3,6 +3,8 @@ package com.massivecraft.mcore4.event;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
@ -31,20 +33,16 @@ public class MCorePlayerLeaveEvent extends Event implements Runnable
|
|||||||
// FIELD
|
// FIELD
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected Player player;
|
@Getter protected final Player player;
|
||||||
public Player getPlayer() { return this.player; }
|
|
||||||
|
|
||||||
protected boolean preDisconnect;
|
@Getter protected final boolean preDisconnect;
|
||||||
public boolean isPreDisconnect() { return this.preDisconnect; }
|
|
||||||
public boolean isPostDisconnect() { return !this.isPreDisconnect(); }
|
public boolean isPostDisconnect() { return !this.isPreDisconnect(); }
|
||||||
|
|
||||||
protected String caller;
|
@Getter protected final String caller;
|
||||||
public String getCaller() { return this.caller; }
|
|
||||||
public boolean isQuit() { return "quit".equals(caller); }
|
public boolean isQuit() { return "quit".equals(caller); }
|
||||||
public boolean isKick() { return "kick".equals(caller); }
|
public boolean isKick() { return "kick".equals(caller); }
|
||||||
|
|
||||||
protected String message;
|
@Getter protected final String message;
|
||||||
public String getMessage() { return this.message; }
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.massivecraft.mcore4.integration;
|
package com.massivecraft.mcore4.integration;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -20,8 +22,7 @@ public class Integration implements Listener
|
|||||||
protected MPlugin ourPlugin;
|
protected MPlugin ourPlugin;
|
||||||
protected IntegrationFeatures features;
|
protected IntegrationFeatures features;
|
||||||
|
|
||||||
protected boolean active = false;
|
@Getter protected boolean active = false;
|
||||||
public boolean active() { return this.active; }
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
|
@ -31,52 +31,52 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected final String name;
|
protected final String name;
|
||||||
@Override public String name() { return this.name; }
|
@Override public String getName() { return this.name; }
|
||||||
|
|
||||||
protected final String basename;
|
protected final String basename;
|
||||||
@Override public String basename() { return this.basename; }
|
@Override public String getBasename() { return this.basename; }
|
||||||
|
|
||||||
protected final String universe;
|
protected final String universe;
|
||||||
@Override public String universe() { return this.universe; }
|
@Override public String getUniverse() { return this.universe; }
|
||||||
|
|
||||||
protected final Class<E> entityClass;
|
protected final Class<E> entityClass;
|
||||||
@Override public Class<E> entityClass() { return this.entityClass; }
|
@Override public Class<E> getEntityClass() { return this.entityClass; }
|
||||||
|
|
||||||
protected final Class<L> idClass;
|
protected final Class<L> idClass;
|
||||||
@Override public Class<L> idClass() { return this.idClass; }
|
@Override public Class<L> getIdClass() { return this.idClass; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// SUPPORTING SYSTEM
|
// SUPPORTING SYSTEM
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected MPlugin mplugin;
|
protected MPlugin mplugin;
|
||||||
@Override public MPlugin mplugin() { return this.mplugin; }
|
@Override public MPlugin getMplugin() { return this.mplugin; }
|
||||||
|
|
||||||
protected Db<?> db;
|
protected Db<?> db;
|
||||||
@Override public Db<?> db() { return this.db; }
|
@Override public Db<?> getDb() { return this.db; }
|
||||||
@Override public Driver<?> driver() { return this.db.driver(); }
|
@Override public Driver<?> getDriver() { return this.db.getDriver(); }
|
||||||
|
|
||||||
protected IdStrategy<L, ?> idStrategy;
|
protected IdStrategy<L, ?> idStrategy;
|
||||||
@Override public IdStrategy<L, ?> idStrategy() { return this.idStrategy; }
|
@Override public IdStrategy<L, ?> getIdStrategy() { return this.idStrategy; }
|
||||||
|
|
||||||
protected StoreAdapter storeAdapter;
|
protected StoreAdapter storeAdapter;
|
||||||
@Override public StoreAdapter storeAdapter() { return this.storeAdapter; }
|
@Override public StoreAdapter getStoreAdapter() { return this.storeAdapter; }
|
||||||
|
|
||||||
protected Object collDriverObject;
|
protected Object collDriverObject;
|
||||||
@Override public Object collDriverObject() { return this.collDriverObject; }
|
@Override public Object getCollDriverObject() { return this.collDriverObject; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// STORAGE
|
// STORAGE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected Set<L> ids = Collections.newSetFromMap(new ConcurrentHashMap<L, Boolean>());
|
protected Set<L> ids = Collections.newSetFromMap(new ConcurrentHashMap<L, Boolean>());
|
||||||
@Override public Collection<L> ids() { return Collections.unmodifiableCollection(this.ids); }
|
@Override public Collection<L> getIds() { return Collections.unmodifiableCollection(this.ids); }
|
||||||
@Override public Collection<L> idsRemote() { return this.db().driver().ids(this); }
|
@Override public Collection<L> getIdsRemote() { return this.getDb().getDriver().getIds(this); }
|
||||||
@Override public boolean containsEntity(E entity) { return this.entities.contains(entity); };
|
@Override public boolean containsEntity(E entity) { return this.entities.contains(entity); };
|
||||||
@Override
|
@Override
|
||||||
public boolean containsId(Object oid)
|
public boolean containsId(Object oid)
|
||||||
{
|
{
|
||||||
L id = this.idFix(oid);
|
L id = this.fixId(oid);
|
||||||
if (id == null) return false;
|
if (id == null) return false;
|
||||||
return this.ids.contains(id);
|
return this.ids.contains(id);
|
||||||
}
|
}
|
||||||
@ -90,11 +90,11 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
@Override public Collection<E> getAll(Predictate<E> where, Comparator<E> orderby, Integer limit, Integer offset) { return MStoreUtil.uglySQL(this.getAll(), where, orderby, limit, offset); }
|
@Override public Collection<E> getAll(Predictate<E> where, Comparator<E> orderby, Integer limit, Integer offset) { return MStoreUtil.uglySQL(this.getAll(), where, orderby, limit, offset); }
|
||||||
|
|
||||||
protected Map<L, E> id2entity = new ConcurrentHashMap<L, E>();
|
protected Map<L, E> id2entity = new ConcurrentHashMap<L, E>();
|
||||||
@Override public Map<L, E> id2entity() { return Collections.unmodifiableMap(this.id2entity); }
|
@Override public Map<L, E> getId2entity() { return Collections.unmodifiableMap(this.id2entity); }
|
||||||
@Override
|
@Override
|
||||||
public E get(Object oid)
|
public E get(Object oid)
|
||||||
{
|
{
|
||||||
return this.get(oid, this.creative());
|
return this.get(oid, this.isCreative());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public E get(Object oid, boolean creative)
|
public E get(Object oid, boolean creative)
|
||||||
@ -103,7 +103,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
}
|
}
|
||||||
protected E get(Object oid, boolean creative, boolean noteChange)
|
protected E get(Object oid, boolean creative, boolean noteChange)
|
||||||
{
|
{
|
||||||
L id = this.idFix(oid);
|
L id = this.fixId(oid);
|
||||||
if (id == null) return null;
|
if (id == null) return null;
|
||||||
E ret = this.id2entity.get(id);
|
E ret = this.id2entity.get(id);
|
||||||
if (ret != null) return ret;
|
if (ret != null) return ret;
|
||||||
@ -113,11 +113,11 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
|
|
||||||
// Get the id for this entity.
|
// Get the id for this entity.
|
||||||
protected Map<E, L> entity2id = new ConcurrentHashMap<E, L>();
|
protected Map<E, L> entity2id = new ConcurrentHashMap<E, L>();
|
||||||
@Override public Map<E, L> entity2id() { return Collections.unmodifiableMap(this.entity2id); }
|
@Override public Map<E, L> getEntity2id() { return Collections.unmodifiableMap(this.entity2id); }
|
||||||
@Override public L id(E entity) { return this.entity2id.get(entity); }
|
@Override public L getId(E entity) { return this.entity2id.get(entity); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public L idFix(Object oid)
|
public L fixId(Object oid)
|
||||||
{
|
{
|
||||||
if (oid == null) return null;
|
if (oid == null) return null;
|
||||||
if (oid.getClass() == this.idClass) return this.idClass.cast(oid);
|
if (oid.getClass() == this.idClass) return this.idClass.cast(oid);
|
||||||
@ -130,8 +130,8 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected boolean creative;
|
protected boolean creative;
|
||||||
@Override public boolean creative() { return this.creative; }
|
@Override public boolean isCreative() { return this.creative; }
|
||||||
@Override public void creative(boolean val) { this.creative = val; }
|
@Override public void setCreative(boolean val) { this.creative = val; }
|
||||||
|
|
||||||
// Should that instance be saved or not?
|
// Should that instance be saved or not?
|
||||||
// If it is default it should not be saved.
|
// If it is default it should not be saved.
|
||||||
@ -152,7 +152,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Accessor.get(this.entityClass()).copy(ofrom, oto);
|
Accessor.get(this.getEntityClass()).copy(ofrom, oto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,17 +213,17 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
{
|
{
|
||||||
// Check entity
|
// Check entity
|
||||||
if (entity == null) return null;
|
if (entity == null) return null;
|
||||||
L id = this.id(entity);
|
L id = this.getId(entity);
|
||||||
if (id != null) return id;
|
if (id != null) return id;
|
||||||
|
|
||||||
// Check/Fix id
|
// Check/Fix id
|
||||||
if (oid == null)
|
if (oid == null)
|
||||||
{
|
{
|
||||||
id = this.idStrategy().generate(this);
|
id = this.getIdStrategy().generate(this);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
id = this.idFix(oid);
|
id = this.fixId(oid);
|
||||||
if (id == null) return null;
|
if (id == null) return null;
|
||||||
if (this.ids.contains(id)) return null;
|
if (this.ids.contains(id)) return null;
|
||||||
}
|
}
|
||||||
@ -266,7 +266,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
id = this.idFix(o);
|
id = this.fixId(o);
|
||||||
}
|
}
|
||||||
if (id == null)
|
if (id == null)
|
||||||
{
|
{
|
||||||
@ -339,7 +339,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
this.clearIdentifiedChanges(id);
|
this.clearIdentifiedChanges(id);
|
||||||
this.clearSynclog(id);
|
this.clearSynclog(id);
|
||||||
|
|
||||||
this.db().driver().delete(this, id);
|
this.getDb().getDriver().delete(this, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -351,17 +351,17 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
E entity = this.id2entity.get(id);
|
E entity = this.id2entity.get(id);
|
||||||
if (entity == null) return;
|
if (entity == null) return;
|
||||||
|
|
||||||
Object raw = this.storeAdapter().read(this, entity);
|
Object raw = this.getStoreAdapter().read(this, entity);
|
||||||
this.lastRaw.put(id, raw);
|
this.lastRaw.put(id, raw);
|
||||||
|
|
||||||
if (this.isDefault(entity))
|
if (this.isDefault(entity))
|
||||||
{
|
{
|
||||||
this.db.driver().delete(this, id);
|
this.db.getDriver().delete(this, id);
|
||||||
this.lastDefault.add(id);
|
this.lastDefault.add(id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Long mtime = this.db.driver().save(this, id, raw);
|
Long mtime = this.db.getDriver().save(this, id, raw);
|
||||||
if (mtime == null) return; // This fail should not happen often. We could handle it better though.
|
if (mtime == null) return; // This fail should not happen often. We could handle it better though.
|
||||||
this.lastMtime.put(id, mtime);
|
this.lastMtime.put(id, mtime);
|
||||||
}
|
}
|
||||||
@ -372,7 +372,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
{
|
{
|
||||||
this.clearIdentifiedChanges(id);
|
this.clearIdentifiedChanges(id);
|
||||||
|
|
||||||
Entry<?, Long> entry = this.db().driver().load(this, id);
|
Entry<?, Long> entry = this.getDb().getDriver().load(this, id);
|
||||||
if (entry == null) return;
|
if (entry == null) return;
|
||||||
|
|
||||||
Object raw = entry.getKey();
|
Object raw = entry.getKey();
|
||||||
@ -383,10 +383,10 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
|
|
||||||
E entity = this.get(id, true, false);
|
E entity = this.get(id, true, false);
|
||||||
|
|
||||||
this.storeAdapter().write(this, raw, entity);
|
this.getStoreAdapter().write(this, raw, entity);
|
||||||
|
|
||||||
// Store adapter again since result of a database read may be "different" from entity read.
|
// Store adapter again since result of a database read may be "different" from entity read.
|
||||||
this.lastRaw.put(id, this.storeAdapter().read(this, entity));
|
this.lastRaw.put(id, this.getStoreAdapter().read(this, entity));
|
||||||
this.lastMtime.put(id, mtime);
|
this.lastMtime.put(id, mtime);
|
||||||
this.lastDefault.remove(id);
|
this.lastDefault.remove(id);
|
||||||
}
|
}
|
||||||
@ -415,7 +415,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
E localEntity = this.id2entity.get(id);
|
E localEntity = this.id2entity.get(id);
|
||||||
if ( ! remoteMtimeSupplied)
|
if ( ! remoteMtimeSupplied)
|
||||||
{
|
{
|
||||||
remoteMtime = this.driver().mtime(this, id);
|
remoteMtime = this.getDriver().getMtime(this, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean existsLocal = (localEntity != null);
|
boolean existsLocal = (localEntity != null);
|
||||||
@ -500,7 +500,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
{
|
{
|
||||||
// Find all ids
|
// Find all ids
|
||||||
Set<L> allids = new HashSet<L>(this.ids);
|
Set<L> allids = new HashSet<L>(this.ids);
|
||||||
allids.addAll(this.driver().ids(this));
|
allids.addAll(this.getDriver().getIds(this));
|
||||||
for (L id : allids)
|
for (L id : allids)
|
||||||
{
|
{
|
||||||
this.syncId(id);
|
this.syncId(id);
|
||||||
@ -511,7 +511,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
public void findSuspects()
|
public void findSuspects()
|
||||||
{
|
{
|
||||||
// Get remote id and mtime snapshot
|
// Get remote id and mtime snapshot
|
||||||
Map<L, Long> id2RemoteMtime = this.db().driver().id2mtime(this);
|
Map<L, Long> id2RemoteMtime = this.getDb().getDriver().getId2mtime(this);
|
||||||
|
|
||||||
// Compile a list of all ids (both remote and local)
|
// Compile a list of all ids (both remote and local)
|
||||||
Set<L> allids = new HashSet<L>();
|
Set<L> allids = new HashSet<L>();
|
||||||
@ -524,7 +524,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
Long remoteMtime = id2RemoteMtime.get(id);
|
Long remoteMtime = id2RemoteMtime.get(id);
|
||||||
ModificationState state = this.examineId(id, remoteMtime);
|
ModificationState state = this.examineId(id, remoteMtime);
|
||||||
//mplugin.log("findSuspects: It seems", id, "has state", state);
|
//mplugin.log("findSuspects: It seems", id, "has state", state);
|
||||||
if (state.modified())
|
if (state.isModified())
|
||||||
{
|
{
|
||||||
//System.out.println("It seems "+id+" has state "+state);
|
//System.out.println("It seems "+id+" has state "+state);
|
||||||
this.changedIds.add(id);
|
this.changedIds.add(id);
|
||||||
@ -537,7 +537,7 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected Runnable tickTask;
|
protected Runnable tickTask;
|
||||||
@Override public Runnable tickTask() { return this.tickTask; }
|
@Override public Runnable getTickTask() { return this.tickTask; }
|
||||||
@Override
|
@Override
|
||||||
public void onTick()
|
public void onTick()
|
||||||
{
|
{
|
||||||
@ -572,15 +572,15 @@ public class Coll<E, L> implements CollInterface<E, L>
|
|||||||
|
|
||||||
this.mplugin = mplugin;
|
this.mplugin = mplugin;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.storeAdapter = this.db.driver().getStoreAdapter();
|
this.storeAdapter = this.db.getDriver().getStoreAdapter();
|
||||||
this.idStrategy = this.db.driver().getIdStrategy(idStrategyName);
|
this.idStrategy = this.db.getDriver().getIdStrategy(idStrategyName);
|
||||||
if (this.idStrategy == null)
|
if (this.idStrategy == null)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("UNKNOWN: The id stragegy \""+idStrategyName+"\" is unknown to the driver \""+db.driver().name()+"\".");
|
throw new IllegalArgumentException("UNKNOWN: The id stragegy \""+idStrategyName+"\" is unknown to the driver \""+db.getDriver().getName()+"\".");
|
||||||
}
|
}
|
||||||
else if (this.idStrategy.getLocalClass() != idClass)
|
else if (this.idStrategy.getLocalClass() != idClass)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("MISSMATCH: The id stragegy \""+idStrategyName+"\" for the driver \""+db.driver().name()+"\" uses \""+this.idStrategy.getLocalClass().getSimpleName()+"\" but the collection "+this.name+"/"+this.getClass().getSimpleName()+" uses \""+idClass.getSimpleName()+"\".");
|
throw new IllegalArgumentException("MISSMATCH: The id stragegy \""+idStrategyName+"\" for the driver \""+db.getDriver().getName()+"\" uses \""+this.idStrategy.getLocalClass().getSimpleName()+"\" but the collection "+this.name+"/"+this.getClass().getSimpleName()+" uses \""+idClass.getSimpleName()+"\".");
|
||||||
}
|
}
|
||||||
this.collDriverObject = db.getCollDriverObject(this);
|
this.collDriverObject = db.getCollDriverObject(this);
|
||||||
|
|
||||||
|
@ -14,28 +14,28 @@ public interface CollInterface<E, L>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// WHAT DO WE HANDLE?
|
// WHAT DO WE HANDLE?
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
public String name();
|
public String getName();
|
||||||
public String basename();
|
public String getBasename();
|
||||||
public String universe();
|
public String getUniverse();
|
||||||
public Class<E> entityClass();
|
public Class<E> getEntityClass();
|
||||||
public Class<L> idClass();
|
public Class<L> getIdClass();
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// SUPPORTING SYSTEM
|
// SUPPORTING SYSTEM
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
public MPlugin mplugin();
|
public MPlugin getMplugin();
|
||||||
|
|
||||||
public Db<?> db();
|
public Db<?> getDb();
|
||||||
public Driver<?> driver();
|
public Driver<?> getDriver();
|
||||||
public StoreAdapter storeAdapter();
|
public StoreAdapter getStoreAdapter();
|
||||||
public IdStrategy<L, ?> idStrategy();
|
public IdStrategy<L, ?> getIdStrategy();
|
||||||
public Object collDriverObject();
|
public Object getCollDriverObject();
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// STORAGE
|
// STORAGE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
public Collection<L> ids();
|
public Collection<L> getIds();
|
||||||
public Collection<L> idsRemote();
|
public Collection<L> getIdsRemote();
|
||||||
public boolean containsId(Object oid);
|
public boolean containsId(Object oid);
|
||||||
public boolean containsEntity(E entity);
|
public boolean containsEntity(E entity);
|
||||||
|
|
||||||
@ -45,19 +45,19 @@ public interface CollInterface<E, L>
|
|||||||
public Collection<E> getAll(Predictate<E> where, Comparator<E> orderby, Integer limit);
|
public Collection<E> getAll(Predictate<E> where, Comparator<E> orderby, Integer limit);
|
||||||
public Collection<E> getAll(Predictate<E> where, Comparator<E> orderby, Integer limit, Integer offset);
|
public Collection<E> getAll(Predictate<E> where, Comparator<E> orderby, Integer limit, Integer offset);
|
||||||
|
|
||||||
public Map<L, E> id2entity();
|
public Map<L, E> getId2entity();
|
||||||
public E get(Object oid);
|
public E get(Object oid);
|
||||||
public E get(Object oid, boolean creative);
|
public E get(Object oid, boolean creative);
|
||||||
|
|
||||||
public Map<E, L> entity2id();
|
public Map<E, L> getEntity2id();
|
||||||
public L id(E entity);
|
public L getId(E entity);
|
||||||
public L idFix(Object oid);
|
public L fixId(Object oid);
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// BAHAVIOR
|
// BAHAVIOR
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
public boolean creative();
|
public boolean isCreative();
|
||||||
public void creative(boolean val);
|
public void setCreative(boolean val);
|
||||||
|
|
||||||
// A default entity will not be saved.
|
// A default entity will not be saved.
|
||||||
// This is often used together with creative collections to save disc space.
|
// This is often used together with creative collections to save disc space.
|
||||||
@ -133,7 +133,7 @@ public interface CollInterface<E, L>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// The tickTask simply runs the onTick method.
|
// The tickTask simply runs the onTick method.
|
||||||
public Runnable tickTask();
|
public Runnable getTickTask();
|
||||||
public void onTick();
|
public void onTick();
|
||||||
|
|
||||||
public Thread examineThread();
|
public Thread examineThread();
|
||||||
|
@ -13,8 +13,8 @@ public abstract class Colls<C extends Coll<E, L>, E, L>
|
|||||||
{
|
{
|
||||||
protected Map<String, C> name2coll = new HashMap<String, C>();
|
protected Map<String, C> name2coll = new HashMap<String, C>();
|
||||||
|
|
||||||
public abstract Aspect aspect();
|
public abstract Aspect getAspect();
|
||||||
public abstract String basename();
|
public abstract String getBasename();
|
||||||
public abstract C createColl(String name);
|
public abstract C createColl(String name);
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@ -29,7 +29,7 @@ public abstract class Colls<C extends Coll<E, L>, E, L>
|
|||||||
public List<C> getColls()
|
public List<C> getColls()
|
||||||
{
|
{
|
||||||
List<C> ret = new ArrayList<C>();
|
List<C> ret = new ArrayList<C>();
|
||||||
Aspect a = this.aspect();
|
Aspect a = this.getAspect();
|
||||||
Multiverse m = a.multiverse();
|
Multiverse m = a.multiverse();
|
||||||
for (String universe : m.getUniverses())
|
for (String universe : m.getUniverses())
|
||||||
{
|
{
|
||||||
@ -44,14 +44,14 @@ public abstract class Colls<C extends Coll<E, L>, E, L>
|
|||||||
|
|
||||||
public String collnameForUniverse(String universe)
|
public String collnameForUniverse(String universe)
|
||||||
{
|
{
|
||||||
return this.basename() + "@" + universe;
|
return this.getBasename() + "@" + universe;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String universeFromWorldName(String worldName)
|
public String universeFromWorldName(String worldName)
|
||||||
{
|
{
|
||||||
if (worldName == null) throw new IllegalArgumentException("worldName may not be null.");
|
if (worldName == null) throw new IllegalArgumentException("worldName may not be null.");
|
||||||
|
|
||||||
return this.aspect().multiverse().getUniverseForWorldName(worldName);
|
return this.getAspect().multiverse().getUniverseForWorldName(worldName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -4,13 +4,13 @@ import java.util.Set;
|
|||||||
|
|
||||||
public interface Db<R>
|
public interface Db<R>
|
||||||
{
|
{
|
||||||
public String name();
|
public String getName();
|
||||||
|
|
||||||
public boolean drop();
|
public boolean drop();
|
||||||
|
|
||||||
public Set<String> collnames();
|
public Set<String> getCollnames();
|
||||||
|
|
||||||
public Driver<R> driver();
|
public Driver<R> getDriver();
|
||||||
|
|
||||||
public Object getCollDriverObject(Coll<?, ?> coll);
|
public Object getCollDriverObject(Coll<?, ?> coll);
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ import java.util.Set;
|
|||||||
public abstract class DbAbstract<R> implements Db<R>
|
public abstract class DbAbstract<R> implements Db<R>
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public Set<String> collnames()
|
public Set<String> getCollnames()
|
||||||
{
|
{
|
||||||
return this.driver().collnames(this);
|
return this.getDriver().getCollnames(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ public class DbGson extends DbAbstract<JsonElement>
|
|||||||
public File dir;
|
public File dir;
|
||||||
|
|
||||||
protected DriverGson driver;
|
protected DriverGson driver;
|
||||||
@Override public DriverGson driver() { return driver; }
|
@Override public DriverGson getDriver() { return driver; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCTORS
|
// CONSTRUCTORS
|
||||||
@ -31,7 +31,7 @@ public class DbGson extends DbAbstract<JsonElement>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String name()
|
public String getName()
|
||||||
{
|
{
|
||||||
return dir.getAbsolutePath();
|
return dir.getAbsolutePath();
|
||||||
}
|
}
|
||||||
@ -52,6 +52,6 @@ public class DbGson extends DbAbstract<JsonElement>
|
|||||||
@Override
|
@Override
|
||||||
public Object getCollDriverObject(Coll<?, ?> coll)
|
public Object getCollDriverObject(Coll<?, ?> coll)
|
||||||
{
|
{
|
||||||
return new File(dir, coll.name());
|
return new File(dir, coll.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ public class DbMongo extends DbAbstract<BasicDBObject>
|
|||||||
public DB db;
|
public DB db;
|
||||||
|
|
||||||
protected DriverMongo driver;
|
protected DriverMongo driver;
|
||||||
@Override public DriverMongo driver() { return driver; }
|
@Override public DriverMongo getDriver() { return driver; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCTORS
|
// CONSTRUCTORS
|
||||||
@ -29,7 +29,7 @@ public class DbMongo extends DbAbstract<BasicDBObject>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String name()
|
public String getName()
|
||||||
{
|
{
|
||||||
return db.getName();
|
return db.getName();
|
||||||
}
|
}
|
||||||
@ -51,6 +51,6 @@ public class DbMongo extends DbAbstract<BasicDBObject>
|
|||||||
@Override
|
@Override
|
||||||
public Object getCollDriverObject(Coll<?, ?> coll)
|
public Object getCollDriverObject(Coll<?, ?> coll)
|
||||||
{
|
{
|
||||||
return db.getCollection(coll.name());
|
return db.getCollection(coll.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import com.massivecraft.mcore4.store.storeadapter.StoreAdapter;
|
|||||||
public interface Driver<R>
|
public interface Driver<R>
|
||||||
{
|
{
|
||||||
// Returns the name of the driver.
|
// Returns the name of the driver.
|
||||||
public String name();
|
public String getName();
|
||||||
|
|
||||||
// This is the rawdata format this driver works with.
|
// This is the rawdata format this driver works with.
|
||||||
// Could for example be JsonElement or DBObject
|
// Could for example be JsonElement or DBObject
|
||||||
@ -25,22 +25,22 @@ public interface Driver<R>
|
|||||||
public StoreAdapter getStoreAdapter();
|
public StoreAdapter getStoreAdapter();
|
||||||
|
|
||||||
// Get a database instance from the driver
|
// Get a database instance from the driver
|
||||||
public Db<R> db(String uri);
|
public Db<R> getDb(String uri);
|
||||||
|
|
||||||
// What collections are in the database?
|
// What collections are in the database?
|
||||||
public Set<String> collnames(Db<?> db);
|
public Set<String> getCollnames(Db<?> db);
|
||||||
|
|
||||||
// Is id X in the collection?
|
// Is id X in the collection?
|
||||||
public <L> boolean containsId(Coll<?, L> coll, L id);
|
public <L> boolean containsId(Coll<?, L> coll, L id);
|
||||||
|
|
||||||
// When was X last altered?
|
// When was X last altered?
|
||||||
public <L> Long mtime(Coll<?, L> coll, L id);
|
public <L> Long getMtime(Coll<?, L> coll, L id);
|
||||||
|
|
||||||
// What ids are in the collection?
|
// What ids are in the collection?
|
||||||
public <L> Collection<L> ids(Coll<?, L> coll);
|
public <L> Collection<L> getIds(Coll<?, L> coll);
|
||||||
|
|
||||||
// Return a map of all ids with their corresponding mtimes
|
// Return a map of all ids with their corresponding mtimes
|
||||||
public <L> Map<L, Long> id2mtime(Coll<?, L> coll);
|
public <L> Map<L, Long> getId2mtime(Coll<?, L> coll);
|
||||||
|
|
||||||
// Load the raw data for X. The second part of the entry is the remote mtime at the load.
|
// Load the raw data for X. The second part of the entry is the remote mtime at the load.
|
||||||
public <L> Entry<R, Long> load(Coll<?, L> coll, L id);
|
public <L> Entry<R, Long> load(Coll<?, L> coll, L id);
|
||||||
|
@ -13,7 +13,7 @@ public abstract class DriverAbstract<R> implements Driver<R>
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected String name;
|
protected String name;
|
||||||
@Override public String name() { return this.name; }
|
@Override public String getName() { return this.name; }
|
||||||
|
|
||||||
protected Map<String, IdStrategy<?, ?>> idStrategies = new HashMap<String, IdStrategy<?, ?>>();
|
protected Map<String, IdStrategy<?, ?>> idStrategies = new HashMap<String, IdStrategy<?, ?>>();
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +37,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Db<JsonElement> db(String uri)
|
public Db<JsonElement> getDb(String uri)
|
||||||
{
|
{
|
||||||
// "gson://" is 7 chars
|
// "gson://" is 7 chars
|
||||||
File folder = new File(uri.substring(7));
|
File folder = new File(uri.substring(7));
|
||||||
@ -46,7 +46,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> collnames(Db<?> db)
|
public Set<String> getCollnames(Db<?> db)
|
||||||
{
|
{
|
||||||
Set<String> ret = new LinkedHashSet<String>();
|
Set<String> ret = new LinkedHashSet<String>();
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <L> Long mtime(Coll<?, L> coll, L id)
|
public <L> Long getMtime(Coll<?, L> coll, L id)
|
||||||
{
|
{
|
||||||
File file = fileFromId(coll, id);
|
File file = fileFromId(coll, id);
|
||||||
if ( ! file.isFile()) return null;
|
if ( ! file.isFile()) return null;
|
||||||
@ -74,7 +74,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <L> Collection<L> ids(Coll<?, L> coll)
|
public <L> Collection<L> getIds(Coll<?, L> coll)
|
||||||
{
|
{
|
||||||
List<L> ret = new ArrayList<L>();
|
List<L> ret = new ArrayList<L>();
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
{
|
{
|
||||||
// Then convert them to what they should be
|
// Then convert them to what they should be
|
||||||
String remoteId = idFromFile(file);
|
String remoteId = idFromFile(file);
|
||||||
L localId = coll.idStrategy().remoteToLocal(remoteId);
|
L localId = coll.getIdStrategy().remoteToLocal(remoteId);
|
||||||
ret.add(localId);
|
ret.add(localId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <L> Map<L, Long> id2mtime(Coll<?, L> coll)
|
public <L> Map<L, Long> getId2mtime(Coll<?, L> coll)
|
||||||
{
|
{
|
||||||
Map<L, Long> ret = new HashMap<L, Long>();
|
Map<L, Long> ret = new HashMap<L, Long>();
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
{
|
{
|
||||||
// Then convert them to what they should be
|
// Then convert them to what they should be
|
||||||
String remoteId = idFromFile(file);
|
String remoteId = idFromFile(file);
|
||||||
L localId = coll.idStrategy().remoteToLocal(remoteId);
|
L localId = coll.getIdStrategy().remoteToLocal(remoteId);
|
||||||
ret.put(localId, file.lastModified());
|
ret.put(localId, file.lastModified());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
public <L> Long save(Coll<?, L> coll, L id, Object rawData)
|
public <L> Long save(Coll<?, L> coll, L id, Object rawData)
|
||||||
{
|
{
|
||||||
File file = fileFromId(coll, id);
|
File file = fileFromId(coll, id);
|
||||||
String content = coll.mplugin().gson.toJson((JsonElement)rawData);
|
String content = coll.getMplugin().gson.toJson((JsonElement)rawData);
|
||||||
if (DiscUtil.writeCatch(file, content) == false) return null;
|
if (DiscUtil.writeCatch(file, content) == false) return null;
|
||||||
return file.lastModified();
|
return file.lastModified();
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
|
|
||||||
protected static File getCollDir(Coll<?, ?> coll)
|
protected static File getCollDir(Coll<?, ?> coll)
|
||||||
{
|
{
|
||||||
return (File) coll.collDriverObject();
|
return (File) coll.getCollDriverObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static String idFromFile(File file)
|
protected static String idFromFile(File file)
|
||||||
@ -159,7 +159,7 @@ public class DriverGson extends DriverAbstract<JsonElement>
|
|||||||
protected static <L> File fileFromId(Coll<?, L> coll, L id)
|
protected static <L> File fileFromId(Coll<?, L> coll, L id)
|
||||||
{
|
{
|
||||||
File collDir = getCollDir(coll);
|
File collDir = getCollDir(coll);
|
||||||
String idString = (String)coll.idStrategy().localToRemote(id);
|
String idString = (String)coll.getIdStrategy().localToRemote(id);
|
||||||
File idFile = new File(collDir, idString+DOTJSON);
|
File idFile = new File(collDir, idString+DOTJSON);
|
||||||
return idFile;
|
return idFile;
|
||||||
}
|
}
|
||||||
|
@ -47,14 +47,14 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Db<BasicDBObject> db(String uri)
|
public Db<BasicDBObject> getDb(String uri)
|
||||||
{
|
{
|
||||||
DB db = this.getDbInner(uri);
|
DB db = this.getDbInner(uri);
|
||||||
return new DbMongo(this, db);
|
return new DbMongo(this, db);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> collnames(Db<?> db)
|
public Set<String> getCollnames(Db<?> db)
|
||||||
{
|
{
|
||||||
return ((DbMongo)db).db.getCollectionNames();
|
return ((DbMongo)db).db.getCollectionNames();
|
||||||
}
|
}
|
||||||
@ -63,22 +63,22 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
public <L> boolean containsId(Coll<?, L> coll, L id)
|
public <L> boolean containsId(Coll<?, L> coll, L id)
|
||||||
{
|
{
|
||||||
DBCollection dbcoll = fixColl(coll);
|
DBCollection dbcoll = fixColl(coll);
|
||||||
DBCursor cursor = dbcoll.find(new BasicDBObject(ID_FIELD, coll.idStrategy().localToRemote(id)));
|
DBCursor cursor = dbcoll.find(new BasicDBObject(ID_FIELD, coll.getIdStrategy().localToRemote(id)));
|
||||||
return cursor.count() != 0;
|
return cursor.count() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <L> Long mtime(Coll<?, L> coll, L id)
|
public <L> Long getMtime(Coll<?, L> coll, L id)
|
||||||
{
|
{
|
||||||
DBCollection dbcoll = fixColl(coll);
|
DBCollection dbcoll = fixColl(coll);
|
||||||
BasicDBObject found = (BasicDBObject)dbcoll.findOne(new BasicDBObject(ID_FIELD, coll.idStrategy().localToRemote(id)), dboKeysMtime);
|
BasicDBObject found = (BasicDBObject)dbcoll.findOne(new BasicDBObject(ID_FIELD, coll.getIdStrategy().localToRemote(id)), dboKeysMtime);
|
||||||
if (found == null) return null;
|
if (found == null) return null;
|
||||||
if ( ! found.containsField(MTIME_FIELD)) return null; // This should not happen! But better to ignore than crash?
|
if ( ! found.containsField(MTIME_FIELD)) return null; // This should not happen! But better to ignore than crash?
|
||||||
return found.getLong(MTIME_FIELD);
|
return found.getLong(MTIME_FIELD);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <L> Collection<L> ids(Coll<?, L> coll)
|
public <L> Collection<L> getIds(Coll<?, L> coll)
|
||||||
{
|
{
|
||||||
List<L> ret = null;
|
List<L> ret = null;
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
while(cursor.hasNext())
|
while(cursor.hasNext())
|
||||||
{
|
{
|
||||||
Object remoteId = cursor.next().get(ID_FIELD);
|
Object remoteId = cursor.next().get(ID_FIELD);
|
||||||
L localId = coll.idStrategy().remoteToLocal(remoteId);
|
L localId = coll.getIdStrategy().remoteToLocal(remoteId);
|
||||||
ret.add(localId);
|
ret.add(localId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <L> Map<L, Long> id2mtime(Coll<?, L> coll)
|
public <L> Map<L, Long> getId2mtime(Coll<?, L> coll)
|
||||||
{
|
{
|
||||||
Map<L, Long> ret = null;
|
Map<L, Long> ret = null;
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
{
|
{
|
||||||
BasicDBObject raw = (BasicDBObject)cursor.next();
|
BasicDBObject raw = (BasicDBObject)cursor.next();
|
||||||
Object remoteId = raw.get(ID_FIELD);
|
Object remoteId = raw.get(ID_FIELD);
|
||||||
L localId = coll.idStrategy().remoteToLocal(remoteId);
|
L localId = coll.getIdStrategy().remoteToLocal(remoteId);
|
||||||
if ( ! raw.containsField(MTIME_FIELD)) continue; // This should not happen! But better to ignore than crash?
|
if ( ! raw.containsField(MTIME_FIELD)) continue; // This should not happen! But better to ignore than crash?
|
||||||
Long mtime = raw.getLong(MTIME_FIELD);
|
Long mtime = raw.getLong(MTIME_FIELD);
|
||||||
ret.put(localId, mtime);
|
ret.put(localId, mtime);
|
||||||
@ -136,7 +136,7 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
public <L> Entry<BasicDBObject, Long> load(Coll<?, L> coll, L id)
|
public <L> Entry<BasicDBObject, Long> load(Coll<?, L> coll, L id)
|
||||||
{
|
{
|
||||||
DBCollection dbcoll = fixColl(coll);
|
DBCollection dbcoll = fixColl(coll);
|
||||||
BasicDBObject raw = (BasicDBObject)dbcoll.findOne(new BasicDBObject(ID_FIELD, coll.idStrategy().localToRemote(id)));
|
BasicDBObject raw = (BasicDBObject)dbcoll.findOne(new BasicDBObject(ID_FIELD, coll.getIdStrategy().localToRemote(id)));
|
||||||
if (raw == null) return null;
|
if (raw == null) return null;
|
||||||
Long mtime = (Long) raw.removeField(MTIME_FIELD);
|
Long mtime = (Long) raw.removeField(MTIME_FIELD);
|
||||||
return new SimpleEntry<BasicDBObject, Long>(raw, mtime);
|
return new SimpleEntry<BasicDBObject, Long>(raw, mtime);
|
||||||
@ -153,7 +153,7 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
Long mtime = System.currentTimeMillis();
|
Long mtime = System.currentTimeMillis();
|
||||||
data.put(MTIME_FIELD, mtime);
|
data.put(MTIME_FIELD, mtime);
|
||||||
|
|
||||||
Object remoteId = coll.idStrategy().localToRemote(id);
|
Object remoteId = coll.getIdStrategy().localToRemote(id);
|
||||||
dbcoll.update(new BasicDBObject(ID_FIELD, remoteId), data, true, false);
|
dbcoll.update(new BasicDBObject(ID_FIELD, remoteId), data, true, false);
|
||||||
|
|
||||||
return mtime;
|
return mtime;
|
||||||
@ -162,7 +162,7 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
@Override
|
@Override
|
||||||
public <L> void delete(Coll<?, L> coll, L id)
|
public <L> void delete(Coll<?, L> coll, L id)
|
||||||
{
|
{
|
||||||
fixColl(coll).remove(new BasicDBObject(ID_FIELD, coll.idStrategy().localToRemote(id)));
|
fixColl(coll).remove(new BasicDBObject(ID_FIELD, coll.getIdStrategy().localToRemote(id)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
@ -171,7 +171,7 @@ public class DriverMongo extends DriverAbstract<BasicDBObject>
|
|||||||
|
|
||||||
protected static DBCollection fixColl(Coll<?, ?> coll)
|
protected static DBCollection fixColl(Coll<?, ?> coll)
|
||||||
{
|
{
|
||||||
return (DBCollection) coll.collDriverObject();
|
return (DBCollection) coll.getCollDriverObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DB getDbInner(String uri)
|
protected DB getDbInner(String uri)
|
||||||
|
@ -28,7 +28,7 @@ public abstract class Entity<E extends Entity<E, L>, L>
|
|||||||
Coll<E, L> coll = this.getColl();
|
Coll<E, L> coll = this.getColl();
|
||||||
if (coll == null) return null;
|
if (coll == null) return null;
|
||||||
|
|
||||||
return coll.universe();
|
return coll.getUniverse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public L attach(Coll<E, L> coll)
|
public L attach(Coll<E, L> coll)
|
||||||
@ -61,7 +61,7 @@ public abstract class Entity<E extends Entity<E, L>, L>
|
|||||||
{
|
{
|
||||||
Coll<E, L> coll = this.getColl();
|
Coll<E, L> coll = this.getColl();
|
||||||
if (coll == null) return null;
|
if (coll == null) return null;
|
||||||
return coll.id(this.getThis());
|
return coll.getId(this.getThis());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changed()
|
public void changed()
|
||||||
@ -100,7 +100,7 @@ public abstract class Entity<E extends Entity<E, L>, L>
|
|||||||
{
|
{
|
||||||
Gson gson = MCore.gson;
|
Gson gson = MCore.gson;
|
||||||
Coll<E, L> coll = this.getColl();
|
Coll<E, L> coll = this.getColl();
|
||||||
if (coll != null) gson = coll.mplugin().gson;
|
if (coll != null) gson = coll.getMplugin().gson;
|
||||||
|
|
||||||
return this.getClazz().getSimpleName()+gson.toJson(this, this.getClazz());
|
return this.getClazz().getSimpleName()+gson.toJson(this, this.getClazz());
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ public class ExamineThread<E, L> extends Thread
|
|||||||
public ExamineThread(Coll<E, L> coll)
|
public ExamineThread(Coll<E, L> coll)
|
||||||
{
|
{
|
||||||
this.coll = coll;
|
this.coll = coll;
|
||||||
this.setName("ExamineThread for "+coll.name());
|
this.setName("ExamineThread for "+coll.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Implement logging and/or auto adjusting system for how long the sleep should be?
|
// TODO: Implement logging and/or auto adjusting system for how long the sleep should be?
|
||||||
|
@ -13,8 +13,8 @@ public class MStore
|
|||||||
protected static Map<String, Driver<?>> drivers = new HashMap<String, Driver<?>>();
|
protected static Map<String, Driver<?>> drivers = new HashMap<String, Driver<?>>();
|
||||||
public static boolean registerDriver(Driver<?> driver)
|
public static boolean registerDriver(Driver<?> driver)
|
||||||
{
|
{
|
||||||
if (drivers.containsKey(driver.name())) return false;
|
if (drivers.containsKey(driver.getName())) return false;
|
||||||
drivers.put(driver.name(), driver);
|
drivers.put(driver.getName(), driver);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public static Driver<?> getDriver(String id)
|
public static Driver<?> getDriver(String id)
|
||||||
@ -42,7 +42,7 @@ public class MStore
|
|||||||
String scheme = uri.getScheme();
|
String scheme = uri.getScheme();
|
||||||
Driver<?> driver = getDriver(scheme);
|
Driver<?> driver = getDriver(scheme);
|
||||||
if (driver == null) return null;
|
if (driver == null) return null;
|
||||||
return driver.db(uri.toString());
|
return driver.getDb(uri.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -13,11 +13,11 @@ public enum ModificationState
|
|||||||
;
|
;
|
||||||
|
|
||||||
private final boolean modified;
|
private final boolean modified;
|
||||||
public boolean modified() { return this.modified; }
|
public boolean isModified() { return this.modified; }
|
||||||
|
|
||||||
private final boolean local;
|
private final boolean local;
|
||||||
public boolean local() { return this.local; }
|
public boolean isLocal() { return this.local; }
|
||||||
public boolean remote() { return this.local == false; }
|
public boolean isRemote() { return this.local == false; }
|
||||||
|
|
||||||
private ModificationState(boolean modified, boolean local)
|
private ModificationState(boolean modified, boolean local)
|
||||||
{
|
{
|
||||||
|
@ -67,7 +67,7 @@ public class PlayerColl<E extends PlayerEntity<E>> extends Coll<E, String>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String idFix(Object oid)
|
public String fixId(Object oid)
|
||||||
{
|
{
|
||||||
if (oid == null) return null;
|
if (oid == null) return null;
|
||||||
String ret = MUtil.extract(String.class, "playerName", oid);
|
String ret = MUtil.extract(String.class, "playerName", oid);
|
||||||
@ -105,8 +105,8 @@ public class PlayerColl<E extends PlayerEntity<E>> extends Coll<E, String>
|
|||||||
protected Collection<Collection<String>> forgeAltColls()
|
protected Collection<Collection<String>> forgeAltColls()
|
||||||
{
|
{
|
||||||
Collection<Collection<String>> ret = new ArrayList<Collection<String>>();
|
Collection<Collection<String>> ret = new ArrayList<Collection<String>>();
|
||||||
ret.add(this.ids());
|
ret.add(this.getIds());
|
||||||
if (this.creative()) ret.add(PlayerUtil.getAllVisitorNames());
|
if (this.isCreative()) ret.add(PlayerUtil.getAllVisitorNames());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import java.util.Collection;
|
|||||||
public abstract class EntityAccessorAbstract implements EntityAccessor
|
public abstract class EntityAccessorAbstract implements EntityAccessor
|
||||||
{
|
{
|
||||||
protected final Class<?> clazz;
|
protected final Class<?> clazz;
|
||||||
public Class<?> clazz() { return this.clazz; }
|
public Class<?> getClazz() { return this.clazz; }
|
||||||
|
|
||||||
public EntityAccessorAbstract(Class<?> clazz)
|
public EntityAccessorAbstract(Class<?> clazz)
|
||||||
{
|
{
|
||||||
|
@ -7,8 +7,8 @@ import java.util.Map;
|
|||||||
public class EntityAccessorPerProperty extends EntityAccessorAbstract
|
public class EntityAccessorPerProperty extends EntityAccessorAbstract
|
||||||
{
|
{
|
||||||
protected Map<String, PropertyAccessor> propertyAccessors;
|
protected Map<String, PropertyAccessor> propertyAccessors;
|
||||||
public Map<String, PropertyAccessor> propertyAccessors() { return this.propertyAccessors; }
|
public Map<String, PropertyAccessor> getPropertyAccessors() { return this.propertyAccessors; }
|
||||||
public PropertyAccessor propertyAccessor(String name)
|
public PropertyAccessor getPropertyAccessor(String name)
|
||||||
{
|
{
|
||||||
PropertyAccessor ret = this.propertyAccessors.get(name);
|
PropertyAccessor ret = this.propertyAccessors.get(name);
|
||||||
if (ret == null)
|
if (ret == null)
|
||||||
@ -17,7 +17,7 @@ public class EntityAccessorPerProperty extends EntityAccessorAbstract
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
public void propertyAccessor(String name, PropertyAccessor val)
|
public void setPropertyAccessor(String name, PropertyAccessor val)
|
||||||
{
|
{
|
||||||
this.propertyAccessors.put(name, val);
|
this.propertyAccessors.put(name, val);
|
||||||
}
|
}
|
||||||
@ -66,14 +66,14 @@ public class EntityAccessorPerProperty extends EntityAccessorAbstract
|
|||||||
@Override
|
@Override
|
||||||
public void set(Object entity, String property, Object val)
|
public void set(Object entity, String property, Object val)
|
||||||
{
|
{
|
||||||
PropertyAccessor pa = this.propertyAccessor(property);
|
PropertyAccessor pa = this.getPropertyAccessor(property);
|
||||||
pa.set(entity, val);
|
pa.set(entity, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object get(Object entity, String property)
|
public Object get(Object entity, String property)
|
||||||
{
|
{
|
||||||
PropertyAccessor pa = this.propertyAccessor(property);
|
PropertyAccessor pa = this.getPropertyAccessor(property);
|
||||||
return pa.get(entity);
|
return pa.get(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ public abstract class IdStrategyAbstract<L, R> implements IdStrategy<L, R>
|
|||||||
@Override
|
@Override
|
||||||
public L generate(CollInterface<?, L> coll)
|
public L generate(CollInterface<?, L> coll)
|
||||||
{
|
{
|
||||||
Collection<L> alreadyInUse = coll.ids();
|
Collection<L> alreadyInUse = coll.getIds();
|
||||||
L ret = null;
|
L ret = null;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -61,8 +61,8 @@ public class IdStrategyAiGson extends IdStrategyAbstract<String, String>
|
|||||||
|
|
||||||
protected File getAiFile(CollInterface<?, String> coll)
|
protected File getAiFile(CollInterface<?, String> coll)
|
||||||
{
|
{
|
||||||
DbGson cdb = (DbGson)coll.db();
|
DbGson cdb = (DbGson)coll.getDb();
|
||||||
return new File(cdb.dir, coll.name() + "_ai.txt");
|
return new File(cdb.dir, coll.getName() + "_ai.txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean ensureFileExists(File file)
|
protected boolean ensureFileExists(File file)
|
||||||
|
@ -39,8 +39,8 @@ public class IdStrategyAiMongo extends IdStrategyAbstract<String, String>
|
|||||||
@Override
|
@Override
|
||||||
public String generateAttempt(CollInterface<?, String> coll)
|
public String generateAttempt(CollInterface<?, String> coll)
|
||||||
{
|
{
|
||||||
String sequenseName = coll.name();
|
String sequenseName = coll.getName();
|
||||||
DBCollection sequenseCollection = ((DbMongo)coll.db()).db.getCollection(SEC);
|
DBCollection sequenseCollection = ((DbMongo)coll.getDb()).db.getCollection(SEC);
|
||||||
|
|
||||||
// this object represents your "query", its analogous to a WHERE clause in SQL
|
// this object represents your "query", its analogous to a WHERE clause in SQL
|
||||||
DBObject query = new BasicDBObject();
|
DBObject query = new BasicDBObject();
|
||||||
|
@ -13,13 +13,13 @@ public class StoreAdapterGson extends StoreAdapterAbstract
|
|||||||
@Override
|
@Override
|
||||||
public Object read(Coll<?, ?> coll, Object entity)
|
public Object read(Coll<?, ?> coll, Object entity)
|
||||||
{
|
{
|
||||||
return coll.mplugin().gson.toJsonTree(entity, coll.entityClass());
|
return coll.getMplugin().gson.toJsonTree(entity, coll.getEntityClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(Coll<?, ?> coll, Object raw, Object entity)
|
public void write(Coll<?, ?> coll, Object raw, Object entity)
|
||||||
{
|
{
|
||||||
Object temp = coll.mplugin().gson.fromJson((JsonElement)raw, coll.entityClass());
|
Object temp = coll.getMplugin().gson.fromJson((JsonElement)raw, coll.getEntityClass());
|
||||||
coll.copy(temp, entity);
|
coll.copy(temp, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,9 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
import com.massivecraft.mcore4.MCore;
|
import com.massivecraft.mcore4.MCore;
|
||||||
import com.massivecraft.mcore4.store.Entity;
|
import com.massivecraft.mcore4.store.Entity;
|
||||||
import com.massivecraft.mcore4.xlib.gson.annotations.SerializedName;
|
import com.massivecraft.mcore4.xlib.gson.annotations.SerializedName;
|
||||||
@ -29,23 +32,19 @@ public class Aspect extends Entity<Aspect, String>
|
|||||||
// TRANSIENT FIELDS
|
// TRANSIENT FIELDS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected transient boolean registered = false;
|
@Getter protected transient boolean registered = false;
|
||||||
public boolean registered() { return this.registered; }
|
|
||||||
public void register() { this.registered = true; }
|
public void register() { this.registered = true; }
|
||||||
|
|
||||||
protected transient Collection<String> desc = new ArrayList<String>();
|
@Getter protected transient Collection<String> desc = new ArrayList<String>();
|
||||||
public Collection<String> desc() { return this.desc; }
|
public void setDesc(Collection<String> val) { this.desc = val; }
|
||||||
public void desc(Collection<String> val) { this.desc = val; }
|
public void setDesc(String... val) { this.desc = Arrays.asList(val); }
|
||||||
public void desc(String... val) { this.desc = Arrays.asList(val); }
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// STORED FIELDS
|
// STORED FIELDS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@SerializedName("mid")
|
@SerializedName("mid")
|
||||||
protected String multiverseId;
|
@Getter @Setter protected String multiverseId;
|
||||||
public String multiverseId() { return this.multiverseId; }
|
|
||||||
public void multiverseId(String val) { this.multiverseId = val; }
|
|
||||||
public Multiverse multiverse()
|
public Multiverse multiverse()
|
||||||
{
|
{
|
||||||
Multiverse ret = MultiverseColl.i.get(this.multiverseId);
|
Multiverse ret = MultiverseColl.i.get(this.multiverseId);
|
||||||
|
@ -28,7 +28,7 @@ public class AspectColl extends Coll<Aspect, String>
|
|||||||
List<Aspect> ret = new ArrayList<Aspect>();
|
List<Aspect> ret = new ArrayList<Aspect>();
|
||||||
for (Aspect aspect : this.getAll())
|
for (Aspect aspect : this.getAll())
|
||||||
{
|
{
|
||||||
if(aspect.registered() == false) continue;
|
if(aspect.isRegistered() == false) continue;
|
||||||
ret.add(aspect);
|
ret.add(aspect);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -39,7 +39,7 @@ public class AspectColl extends Coll<Aspect, String>
|
|||||||
List<Aspect> ret = new ArrayList<Aspect>();
|
List<Aspect> ret = new ArrayList<Aspect>();
|
||||||
for (Aspect aspect : this.getAll())
|
for (Aspect aspect : this.getAll())
|
||||||
{
|
{
|
||||||
if(aspect.registered() == false) continue;
|
if(aspect.isRegistered() == false) continue;
|
||||||
if((aspect.multiverse() != multiverse) == normal) continue;
|
if((aspect.multiverse() != multiverse) == normal) continue;
|
||||||
ret.add(aspect);
|
ret.add(aspect);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public class CmdUsysAspectShow extends UsysCommand
|
|||||||
msg(Txt.titleize("Aspect: "+aspect.getId()));
|
msg(Txt.titleize("Aspect: "+aspect.getId()));
|
||||||
msg("<k>using multiverse: <v>%s",aspect.multiverse().getId());
|
msg("<k>using multiverse: <v>%s",aspect.multiverse().getId());
|
||||||
|
|
||||||
for (String descLine : aspect.desc())
|
for (String descLine : aspect.getDesc())
|
||||||
{
|
{
|
||||||
msg(descLine);
|
msg(descLine);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ public class CmdUsysMultiverseNew extends UsysCommand
|
|||||||
{
|
{
|
||||||
String id = this.arg(0);
|
String id = this.arg(0);
|
||||||
|
|
||||||
if (MultiverseColl.i.ids().contains(id))
|
if (MultiverseColl.i.getIds().contains(id))
|
||||||
{
|
{
|
||||||
msg("<b>The multiverse <h>%s<b> alread exists.", id);
|
msg("<b>The multiverse <h>%s<b> alread exists.", id);
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user