Wrote tools to ease the process of renaming tilesets.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1421 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -0,0 +1,38 @@
|
|||||||
|
//
|
||||||
|
// $Id: DumpTileSetMap.java,v 1.1 2002/06/04 02:50:02 mdb Exp $
|
||||||
|
|
||||||
|
package com.threerings.media.tile.tools;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import com.samskivert.io.PersistenceException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints out the tileset mappings in a {@link MapFileTileSetIDBroker}.
|
||||||
|
*/
|
||||||
|
public class DumpTileSetMap
|
||||||
|
{
|
||||||
|
public static void main (String[] args)
|
||||||
|
{
|
||||||
|
if (args.length < 1) {
|
||||||
|
System.err.println("Usage: DumpTileSetMap tileset.map");
|
||||||
|
System.exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
MapFileTileSetIDBroker broker =
|
||||||
|
new MapFileTileSetIDBroker(new File(args[0]));
|
||||||
|
Iterator iter = broker.enumerateMappings();
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
String tsname = iter.next().toString();
|
||||||
|
System.out.println(tsname + " => " +
|
||||||
|
broker.getTileSetID(tsname));
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (PersistenceException pe) {
|
||||||
|
System.err.println("Unable to dump mapping: " + pe);
|
||||||
|
System.exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: MapFileTileSetIDBroker.java,v 1.4 2002/04/03 22:42:22 mdb Exp $
|
// $Id: MapFileTileSetIDBroker.java,v 1.5 2002/06/04 02:50:02 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.media.tile.tools;
|
package com.threerings.media.tile.tools;
|
||||||
|
|
||||||
@@ -12,6 +12,7 @@ import java.io.ObjectInputStream;
|
|||||||
import java.io.ObjectOutputStream;
|
import java.io.ObjectOutputStream;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
import com.samskivert.io.PersistenceException;
|
import com.samskivert.io.PersistenceException;
|
||||||
|
|
||||||
@@ -94,6 +95,35 @@ public class MapFileTileSetIDBroker implements TileSetIDBroker
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies the ID from the old tileset to the new tileset which is
|
||||||
|
* useful when a tileset is renamed. This is called by the {@link
|
||||||
|
* RenameTileSet} utility.
|
||||||
|
*/
|
||||||
|
protected boolean renameTileSet (String oldName, String newName)
|
||||||
|
{
|
||||||
|
Integer tsid = (Integer)_map.get(oldName);
|
||||||
|
if (tsid != null) {
|
||||||
|
_map.put(newName, tsid);
|
||||||
|
// fudge our stored tileset ID so that we flush ourselves when
|
||||||
|
// the rename tool requests that we commit the changes
|
||||||
|
_storedTileSetID--;
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used by {@link DumpTileSetMap} to enumerate our tileset ID
|
||||||
|
* mappings.
|
||||||
|
*/
|
||||||
|
protected Iterator enumerateMappings ()
|
||||||
|
{
|
||||||
|
return _map.keySet().iterator();
|
||||||
|
}
|
||||||
|
|
||||||
/** Our persistent map file. */
|
/** Our persistent map file. */
|
||||||
protected File _mapfile;
|
protected File _mapfile;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
//
|
||||||
|
// $Id: RenameTileSet.java,v 1.1 2002/06/04 02:50:02 mdb Exp $
|
||||||
|
|
||||||
|
package com.threerings.media.tile.tools;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import com.samskivert.io.PersistenceException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to map a tileset name to the same ID as a pre-existing tileset.
|
||||||
|
* This only works for tileset mappings stored using a {@link
|
||||||
|
* MapFileTileSetIDBroker}. If a tileset is renamed, this utility must be
|
||||||
|
* used to map the new name to the old ID, otherwise scenes created with
|
||||||
|
* the renamed tileset will cease to work as the tileset will live under a
|
||||||
|
* new ID.
|
||||||
|
*/
|
||||||
|
public class RenameTileSet
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Loads up the tileset map file with the specified path and copies
|
||||||
|
* the tileset ID from the old tileset name to the new tileset name.
|
||||||
|
* This is necessary when a tileset is renamed so that the new name
|
||||||
|
* does not cause the tileset to be assigned a new tileset ID. Bear in
|
||||||
|
* mind that the old name should never again be used as it will
|
||||||
|
* conflict with a tileset provided under the new name.
|
||||||
|
*/
|
||||||
|
public static void renameTileSet (
|
||||||
|
String mapPath, String oldName, String newName)
|
||||||
|
throws PersistenceException
|
||||||
|
{
|
||||||
|
MapFileTileSetIDBroker broker =
|
||||||
|
new MapFileTileSetIDBroker(new File(mapPath));
|
||||||
|
if (!broker.renameTileSet(oldName, newName)) {
|
||||||
|
throw new PersistenceException(
|
||||||
|
"No such old tileset '" + oldName + "'.");
|
||||||
|
}
|
||||||
|
broker.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main (String[] args)
|
||||||
|
{
|
||||||
|
if (args.length < 3) {
|
||||||
|
System.err.println("Usage: RenameTileSet tileset.map " +
|
||||||
|
"old_name new_name");
|
||||||
|
System.exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
renameTileSet(args[0], args[1], args[2]);
|
||||||
|
} catch (PersistenceException pe) {
|
||||||
|
System.err.println("Unable to rename tileset: " + pe);
|
||||||
|
System.exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user