From 81aeecc90723658187668baa49bd168b7b333afb Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 24 Oct 2012 04:10:22 +0100 Subject: Allow "show object", "show part", "dump object" and "delete object" to accept a local ID as well as a UUID. This means that the sub-commands are now id rather than uuid, e.g. show object id --- .../World/Objects/Commands/ObjectCommandsModule.cs | 103 ++++++++++++--------- 1 file changed, 61 insertions(+), 42 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Objects') diff --git a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs index f0a35ad..b2c9bce 100644 --- a/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/Commands/ObjectCommandsModule.cs @@ -99,9 +99,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands HandleDeleteObject); m_console.Commands.AddCommand( - "Objects", false, "delete object uuid", - "delete object uuid ", - "Delete a scene object by uuid", + "Objects", false, "delete object id", + "delete object id ", + "Delete a scene object by uuid or localID", HandleDeleteObject); m_console.Commands.AddCommand( @@ -131,12 +131,12 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands m_console.Commands.AddCommand( "Objects", false, - "show object uuid", - "show object uuid [--full] ", - "Show details of a scene object with the given UUID", + "show object id", + "show object id [--full] ", + "Show details of a scene object with the given UUID or localID", "The --full option will print out information on all the parts of the object.\n" + "For yet more detailed part information, use the \"show part\" commands.", - HandleShowObjectByUuid); + HandleShowObjectById); m_console.Commands.AddCommand( "Objects", @@ -163,9 +163,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands m_console.Commands.AddCommand( "Objects", false, - "show part uuid", - "show part uuid ", - "Show details of a scene object parts with the given UUID", HandleShowPartByUuid); + "show part id", + "show part id ", + "Show details of a scene object part with the given UUID or localID", HandleShowPartById); m_console.Commands.AddCommand( "Objects", @@ -173,7 +173,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands "show part name", "show part name [--regex] ", "Show details of scene object parts with the given name.", - "If --regex is specified then the name is treatead as a regular expression", + "If --regex is specified then the name is treated as a regular expression", HandleShowPartByName); m_console.Commands.AddCommand( @@ -188,12 +188,13 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands m_console.Commands.AddCommand( "Objects", false, - "dump object uuid", - "dump object uuid ", + "dump object id", + "dump object id ", "Dump the formatted serialization of the given object to the file .xml", "e.g. dump object uuid c1ed6809-cc24-4061-a4c2-93082a2d1f1d will dump serialization to c1ed6809-cc24-4061-a4c2-93082a2d1f1d.xml\n" - + "To locate the UUID in the first place, you need to use the other show object commands", - HandleDumpObjectByUuid); + + "To locate the UUID or localID in the first place, you need to use the other show object commands.\n" + + "If a local ID is given then the filename used is still that for the UUID", + HandleDumpObjectById); } public void RemoveRegion(Scene scene) @@ -248,7 +249,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands m_console.OutputFormat(sb.ToString()); } - private void HandleShowObjectByUuid(string module, string[] cmdparams) + private void HandleShowObjectById(string module, string[] cmdparams) { if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) return; @@ -264,14 +265,17 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands return; } - UUID objectUuid; - if (!UUID.TryParse(mainParams[3], out objectUuid)) - { - m_console.OutputFormat("{0} is not a valid uuid", mainParams[3]); + UUID uuid; + uint localId; + if (!ConsoleUtil.TryParseConsoleId(m_console, mainParams[3], out uuid, out localId)) return; - } - SceneObjectGroup so = m_scene.GetSceneObjectGroup(objectUuid); + SceneObjectGroup so; + + if (localId != ConsoleUtil.LocalIdNotFound) + so = m_scene.GetSceneObjectGroup(localId); + else + so = m_scene.GetSceneObjectGroup(uuid); if (so == null) { @@ -348,7 +352,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands OutputSogsToConsole(searchPredicate, showFull); } - private void HandleShowPartByUuid(string module, string[] cmdparams) + private void HandleShowPartById(string module, string[] cmdparams) { if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) return; @@ -361,18 +365,20 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands if (mainParams.Count < 4) { - m_console.OutputFormat("Usage: show part uuid [--full] "); + m_console.OutputFormat("Usage: show part id [--full] "); return; } UUID objectUuid; - if (!UUID.TryParse(mainParams[3], out objectUuid)) - { - m_console.OutputFormat("{0} is not a valid uuid", mainParams[3]); + uint localId; + if (!ConsoleUtil.TryParseConsoleId(m_console, mainParams[3], out objectUuid, out localId)) return; - } - SceneObjectPart sop = m_scene.GetSceneObjectPart(objectUuid); + SceneObjectPart sop; + if (localId == ConsoleUtil.LocalIdNotFound) + sop = m_scene.GetSceneObjectPart(objectUuid); + else + sop = m_scene.GetSceneObjectPart(localId); if (sop == null) { @@ -460,22 +466,27 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands OutputSopsToConsole(searchPredicate, true); } - private void HandleDumpObjectByUuid(string module, string[] cmdparams) + private void HandleDumpObjectById(string module, string[] cmdparams) { if (!(m_console.ConsoleScene == null || m_console.ConsoleScene == m_scene)) return; if (cmdparams.Length < 4) { - m_console.OutputFormat("Usage: dump object uuid "); + m_console.OutputFormat("Usage: dump object id "); return; } UUID objectUuid; - if (!ConsoleUtil.TryParseConsoleUuid(m_console, cmdparams[3], out objectUuid)) + uint localId; + if (!ConsoleUtil.TryParseConsoleId(m_console, cmdparams[3], out objectUuid, out localId)) return; - SceneObjectGroup so = m_scene.GetSceneObjectGroup(objectUuid); + SceneObjectGroup so; + if (localId == ConsoleUtil.LocalIdNotFound) + so = m_scene.GetSceneObjectGroup(objectUuid); + else + so = m_scene.GetSceneObjectGroup(localId); if (so == null) { @@ -483,6 +494,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands return; } + // In case we found it via local ID. + objectUuid = so.UUID; + string fileName = string.Format("{0}.xml", objectUuid); if (!ConsoleUtil.CheckFileDoesNotExist(m_console, fileName)) @@ -661,19 +675,24 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands break; - case "uuid": - if (!UUID.TryParse(o, out match)) + case "id": + UUID uuid; + uint localId; + if (!ConsoleUtil.TryParseConsoleId(m_console, o, out uuid, out localId)) return; requireConfirmation = false; deletes = new List(); - - m_scene.ForEachSOG(delegate (SceneObjectGroup g) - { - if (g.UUID == match && !g.IsAttachment) - deletes.Add(g); - }); - + + SceneObjectGroup so; + if (localId == ConsoleUtil.LocalIdNotFound) + so = m_scene.GetSceneObjectGroup(uuid); + else + so = m_scene.GetSceneObjectGroup(localId); + + if (!so.IsAttachment) + deletes.Add(so); + // if (deletes.Count == 0) // m_console.OutputFormat("No objects were found with uuid {0}", match); -- cgit v1.1