Created a persistent tileset name to id broker implementation; wrote an

ANT task for creating tileset bundles.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@659 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2001-11-29 00:14:11 +00:00
parent b7312882f4
commit 075ea5e9fe
2 changed files with 194 additions and 0 deletions
@@ -0,0 +1,92 @@
//
// $Id: MapFileTileSetIDBroker.java,v 1.1 2001/11/29 00:14:11 mdb Exp $
package com.threerings.media.tools.tile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import com.samskivert.io.PersistenceException;
import com.threerings.media.tile.TileSetIDBroker;
/**
* Stores a set of tileset name to id mappings in a map file.
*/
public class MapFileTileSetIDBroker implements TileSetIDBroker
{
/**
* Creates a broker that will use the specified file as its persistent
* store. The persistent store will be created if it does not yet
* exist.
*/
public MapFileTileSetIDBroker (File mapfile)
throws PersistenceException
{
// keep this for later
_mapfile = mapfile;
// load up our map data
try {
FileInputStream fin = new FileInputStream(mapfile);
ObjectInputStream oin = new ObjectInputStream(fin);
_nextTileSetID = oin.readInt();
_map = (HashMap)oin.readObject();
oin.close();
} catch (FileNotFoundException fnfe) {
// create a blank map if our map file doesn't exist
_map = new HashMap();
} catch (Exception e) {
// other errors are more fatal
String errmsg = "Failure reading map file.";
throw new PersistenceException(errmsg, e);
}
}
// documentation inherited
public int getTileSetID (String tileSetName)
throws PersistenceException
{
Integer tsid = (Integer)_map.get(tileSetName);
if (tsid == null) {
tsid = new Integer(++_nextTileSetID);
_map.put(tileSetName, tsid);
}
return tsid.intValue();
}
// documentation inherited
public void commit ()
throws PersistenceException
{
try {
FileOutputStream fout = new FileOutputStream(_mapfile);
ObjectOutputStream oout = new ObjectOutputStream(fout);
oout.writeInt(_nextTileSetID);
oout.writeObject(_map);
oout.close();
} catch (IOException ioe) {
String errmsg = "Failure writing map file.";
throw new PersistenceException(errmsg, ioe);
}
}
/** Our persistent map file. */
protected File _mapfile;
/** The next tileset id that we'll assign. */
protected int _nextTileSetID;
/** Our mapping from tileset names to ids. */
protected HashMap _map;
}