Add an mstore command with a todo dbcopy command. Also cache database instances in mstore.
This commit is contained in:
parent
a46caad008
commit
f6206d0392
@ -13,7 +13,9 @@ permissions:
|
||||
mcore.cmd.mcore: {description: use the mcore command, default: false}
|
||||
mcore.cmd.mcore.id: {description: see the server id, default: false}
|
||||
mcore.cmd.mcore.version: {description: diplay plugin version, default: false}
|
||||
mcore.cmd.mcore.usys: {description: manage the universe system, default: false}
|
||||
mcore.cmd.mcore.mstore: {description: use the mstore command, default: false}
|
||||
mcore.cmd.mcore.mstore.copydb: {description: copy database content, default: false}
|
||||
mcore.cmd.mcore.usys: {description: use the usys command, default: false}
|
||||
mcore.cmd.mcore.usys.multiverse: {description: manage multiverses, default: false}
|
||||
mcore.cmd.mcore.usys.multiverse.list: {description: list multiverses, default: false}
|
||||
mcore.cmd.mcore.usys.multiverse.show: {description: show multiverse, default: false}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.massivecraft.mcore;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.massivecraft.mcore.util.MUtil;
|
||||
@ -21,9 +22,15 @@ public class ConfServer extends SimpleConfig
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static String serverid = UUID.randomUUID().toString();
|
||||
public static String dburi = "gson://./mstore";
|
||||
|
||||
public static Map<String, String> alias2uri = MUtil.map(
|
||||
"default", "gson://./mstore"
|
||||
);
|
||||
|
||||
public static String dburi = "default";
|
||||
|
||||
public static List<String> aliasesOuterMCore = MUtil.list("mcore");
|
||||
public static List<String> aliasesOuterMCoreUsys = MUtil.list("usys");
|
||||
public static List<String> aliasesOuterMCoreMStore = MUtil.list("mstore");
|
||||
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import com.massivecraft.mcore.adapter.UUIDAdapter;
|
||||
import com.massivecraft.mcore.integration.protocollib.ProtocolLibFeatures;
|
||||
import com.massivecraft.mcore.integration.vault.VaultFeatures;
|
||||
import com.massivecraft.mcore.mcorecmd.CmdMCore;
|
||||
import com.massivecraft.mcore.mcorecmd.CmdMCoreMStore;
|
||||
import com.massivecraft.mcore.mcorecmd.CmdMCoreUsys;
|
||||
import com.massivecraft.mcore.mixin.ScheduledTeleportEngine;
|
||||
import com.massivecraft.mcore.mixin.SenderIdMixinDefault;
|
||||
@ -27,9 +28,7 @@ import com.massivecraft.mcore.mixin.TeleportMixinCauseEngine;
|
||||
import com.massivecraft.mcore.ps.PS;
|
||||
import com.massivecraft.mcore.ps.PSAdapter;
|
||||
import com.massivecraft.mcore.store.Coll;
|
||||
import com.massivecraft.mcore.store.Db;
|
||||
import com.massivecraft.mcore.store.ExamineThread;
|
||||
import com.massivecraft.mcore.store.MStore;
|
||||
import com.massivecraft.mcore.util.PlayerUtil;
|
||||
import com.massivecraft.mcore.util.TimeDiffUtil;
|
||||
import com.massivecraft.mcore.util.TimeUnit;
|
||||
@ -76,8 +75,8 @@ public class MCore extends MPlugin
|
||||
}
|
||||
|
||||
public static String getServerId() { return ConfServer.serverid; }
|
||||
private static Db<?> db;
|
||||
public static Db<?> getDb() { return db; }
|
||||
//private static Db<?> db;
|
||||
//public static Db<?> getDb() { return db; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS
|
||||
@ -95,6 +94,9 @@ public class MCore extends MPlugin
|
||||
private CmdMCoreUsys outerCmdMCoreUsys;
|
||||
public CmdMCoreUsys getOuterCmdMCoreUsys() { return this.outerCmdMCoreUsys; }
|
||||
|
||||
private CmdMCoreMStore outerCmdMCoreMStore;
|
||||
public CmdMCoreMStore getOuterCmdMCoreMStore() { return this.outerCmdMCoreMStore; }
|
||||
|
||||
// Runnables
|
||||
// TODO: Make this one a singleton
|
||||
private Runnable collTickTask = new Runnable()
|
||||
@ -128,7 +130,7 @@ public class MCore extends MPlugin
|
||||
ConfServer.get().load();
|
||||
|
||||
// Setup the default database
|
||||
db = MStore.getDb(ConfServer.dburi);
|
||||
//db = MStore.getDb(ConfServer.dburi);
|
||||
|
||||
// Setup PlayerUtil and it's events
|
||||
new PlayerUtil(this);
|
||||
@ -162,6 +164,9 @@ public class MCore extends MPlugin
|
||||
this.outerCmdMCoreUsys = new CmdMCoreUsys(ConfServer.aliasesOuterMCoreUsys);
|
||||
this.outerCmdMCoreUsys.register(this);
|
||||
|
||||
this.outerCmdMCoreMStore = new CmdMCoreMStore(ConfServer.aliasesOuterMCoreMStore);
|
||||
this.outerCmdMCoreMStore.register(this);
|
||||
|
||||
// Integration
|
||||
this.integrate(
|
||||
ProtocolLibFeatures.get(),
|
||||
|
@ -13,6 +13,8 @@ public enum MCorePerm
|
||||
CMD_MCORE("cmd.mcore"),
|
||||
CMD_MCORE_ID("cmd.mcore.id"),
|
||||
CMD_MCORE_VERSION("cmd.mcore.version"),
|
||||
CMD_MCORE_MSTORE("cmd.mcore.mstore"),
|
||||
CMD_MCORE_MSTORE_COPYDB("cmd.mcore.mstore.copydb"),
|
||||
CMD_MCORE_USYS("cmd.mcore.usys"),
|
||||
CMD_MCORE_USYS_MULTIVERSE("cmd.mcore.usys.multiverse"),
|
||||
CMD_MCORE_USYS_MULTIVERSE_LIST("cmd.mcore.usys.multiverse.list"),
|
||||
|
29
src/com/massivecraft/mcore/mcorecmd/CmdMCoreMStore.java
Normal file
29
src/com/massivecraft/mcore/mcorecmd/CmdMCoreMStore.java
Normal file
@ -0,0 +1,29 @@
|
||||
package com.massivecraft.mcore.mcorecmd;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.massivecraft.mcore.MCorePerm;
|
||||
import com.massivecraft.mcore.cmd.HelpCommand;
|
||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.mcore.util.MUtil;
|
||||
|
||||
public class CmdMCoreMStore extends MCoreCommand
|
||||
{
|
||||
public CmdMCoreMStoreCopydb cmdMCoreMStoreCopydb = new CmdMCoreMStoreCopydb(MUtil.list("copydb"));
|
||||
|
||||
public CmdMCoreMStore(List<String> aliases)
|
||||
{
|
||||
super(aliases);
|
||||
|
||||
this.addSubCommand(this.cmdMCoreMStoreCopydb);
|
||||
|
||||
this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE_MSTORE.node));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
this.getCommandChain().add(this);
|
||||
HelpCommand.getInstance().execute(this.sender, this.args, this.commandChain);
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.massivecraft.mcore.mcorecmd;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.massivecraft.mcore.MCorePerm;
|
||||
import com.massivecraft.mcore.cmd.req.ReqHasPerm;
|
||||
|
||||
public class CmdMCoreMStoreCopydb extends MCoreCommand
|
||||
{
|
||||
public CmdMCoreMStoreCopydb(List<String> aliases)
|
||||
{
|
||||
super(aliases);
|
||||
|
||||
this.addRequiredArg("fromuri");
|
||||
this.addRequiredArg("touri");
|
||||
|
||||
this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE_MSTORE_COPYDB.node));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
}
|
@ -11,15 +11,19 @@ import com.massivecraft.mcore.util.MUtil;
|
||||
|
||||
public class CmdMCore extends MCoreCommand
|
||||
{
|
||||
public CmdMCoreId cmdMCoreId = new CmdMCoreId(MUtil.list("id"));
|
||||
public CmdMCoreUsys cmdMCoreUsys = new CmdMCoreUsys(MUtil.list("usys"));
|
||||
public CmdMCoreMStore cmdMCoreMStore = new CmdMCoreMStore(MUtil.list("mstore"));
|
||||
public CmdMCoreId cmdMCoreId = new CmdMCoreId(MUtil.list("id"));
|
||||
|
||||
|
||||
public CmdMCore(List<String> aliases)
|
||||
{
|
||||
super(aliases);
|
||||
|
||||
this.addSubCommand(this.cmdMCoreUsys);
|
||||
this.addSubCommand(this.cmdMCoreMStore);
|
||||
this.addSubCommand(this.cmdMCoreId);
|
||||
|
||||
this.addSubCommand(new VersionCommand(MCore.get(), MCorePerm.CMD_MCORE_VERSION.node, "v", "version"));
|
||||
|
||||
this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE.node));
|
||||
|
@ -5,11 +5,14 @@ import java.net.URISyntaxException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.massivecraft.mcore.MCore;
|
||||
|
||||
import com.massivecraft.mcore.ConfServer;
|
||||
|
||||
public class MStore
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// DRIVER REGISTRY
|
||||
// -------------------------------------------- //
|
||||
|
||||
protected static Map<String, Driver<?>> drivers = new HashMap<String, Driver<?>>();
|
||||
public static boolean registerDriver(Driver<?> driver)
|
||||
{
|
||||
@ -23,18 +26,43 @@ public class MStore
|
||||
return drivers.get(id);
|
||||
}
|
||||
|
||||
public static Db<?> getDb(String uri)
|
||||
static
|
||||
{
|
||||
registerDriver(DriverMongo.get());
|
||||
registerDriver(DriverGson.get());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FROODLSCHTEIN
|
||||
// -------------------------------------------- //
|
||||
|
||||
// We cache databases here
|
||||
private static Map<String, Db<?>> uri2db = new HashMap<String, Db<?>>();
|
||||
|
||||
public static String resolveAlias(String alias)
|
||||
{
|
||||
String uri = ConfServer.alias2uri.get(alias);
|
||||
if (uri == null) return alias;
|
||||
return resolveAlias(uri);
|
||||
}
|
||||
|
||||
public static Db<?> getDb(String alias)
|
||||
{
|
||||
String uri = resolveAlias(alias);
|
||||
Db<?> ret = uri2db.get(uri);
|
||||
if (ret != null) return ret;
|
||||
|
||||
try
|
||||
{
|
||||
if (uri.equalsIgnoreCase("default")) return MCore.getDb();
|
||||
return getDb(new URI(uri));
|
||||
ret = getDb(new URI(uri));
|
||||
}
|
||||
catch (URISyntaxException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static Db<?> getDb(URI uri)
|
||||
@ -45,9 +73,5 @@ public class MStore
|
||||
return driver.getDb(uri.toString());
|
||||
}
|
||||
|
||||
static
|
||||
{
|
||||
registerDriver(DriverMongo.get());
|
||||
registerDriver(DriverGson.get());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user