diff --git a/build.xml b/build.xml
index a129430d3..dfd2ef293 100644
--- a/build.xml
+++ b/build.xml
@@ -161,8 +161,6 @@
source="1.5" target="1.5">
-
-
diff --git a/src/java/com/threerings/presents/peer/server/persist/NodeRecord.java b/src/java/com/threerings/presents/peer/server/persist/NodeRecord.java
index 74635ad13..88ed8a9bd 100644
--- a/src/java/com/threerings/presents/peer/server/persist/NodeRecord.java
+++ b/src/java/com/threerings/presents/peer/server/persist/NodeRecord.java
@@ -23,76 +23,26 @@ package com.threerings.presents.peer.server.persist;
import java.sql.Timestamp;
-import com.samskivert.jdbc.depot.Key;
-import com.samskivert.jdbc.depot.PersistentRecord;
-import com.samskivert.jdbc.depot.annotation.Column;
-import com.samskivert.jdbc.depot.annotation.Entity;
-import com.samskivert.jdbc.depot.annotation.Id;
-import com.samskivert.jdbc.depot.expression.ColumnExp;
import com.samskivert.util.StringUtil;
/**
* Contains information on an active node in a Presents server cluster.
*/
-@Entity
-public class NodeRecord extends PersistentRecord
+public class NodeRecord
{
- // AUTO-GENERATED: FIELDS START
- /** The column identifier for the {@link #nodeName} field. */
- public static final String NODE_NAME = "nodeName";
-
- /** The qualified column identifier for the {@link #nodeName} field. */
- public static final ColumnExp NODE_NAME_C =
- new ColumnExp(NodeRecord.class, NODE_NAME);
-
- /** The column identifier for the {@link #hostName} field. */
- public static final String HOST_NAME = "hostName";
-
- /** The qualified column identifier for the {@link #hostName} field. */
- public static final ColumnExp HOST_NAME_C =
- new ColumnExp(NodeRecord.class, HOST_NAME);
-
- /** The column identifier for the {@link #publicHostName} field. */
- public static final String PUBLIC_HOST_NAME = "publicHostName";
-
- /** The qualified column identifier for the {@link #publicHostName} field. */
- public static final ColumnExp PUBLIC_HOST_NAME_C =
- new ColumnExp(NodeRecord.class, PUBLIC_HOST_NAME);
-
- /** The column identifier for the {@link #port} field. */
- public static final String PORT = "port";
-
- /** The qualified column identifier for the {@link #port} field. */
- public static final ColumnExp PORT_C =
- new ColumnExp(NodeRecord.class, PORT);
-
- /** The column identifier for the {@link #lastUpdated} field. */
- public static final String LAST_UPDATED = "lastUpdated";
-
- /** The qualified column identifier for the {@link #lastUpdated} field. */
- public static final ColumnExp LAST_UPDATED_C =
- new ColumnExp(NodeRecord.class, LAST_UPDATED);
- // AUTO-GENERATED: FIELDS END
-
/** The unique name assigned to this node. */
- @Id
- @Column(name="NODE_NAME", length=64)
public String nodeName;
/** The DNS name used to connect to this node by other peers. */
- @Column(name="HOST_NAME", length=64)
public String hostName;
/** The DNS name used to connect to this node by normal clients. */
- @Column(name="PUBLIC_HOST_NAME", length=64)
public String publicHostName;
/** The port on which to connect to this node. */
- @Column(name="PORT")
public int port;
/** The last time this node has reported in. */
- @Column(name="LAST_UPDATED")
public Timestamp lastUpdated;
/** Used to create a blank instance when loading from the database. */
@@ -122,18 +72,4 @@ public class NodeRecord extends PersistentRecord
{
return StringUtil.fieldsToString(this);
}
-
- // AUTO-GENERATED: METHODS START
- /**
- * Create and return a primary {@link Key} to identify a {@link #NodeRecord}
- * with the supplied key values.
- */
- public static Key getKey (String nodeName)
- {
- return new Key(
- NodeRecord.class,
- new String[] { NODE_NAME },
- new Comparable[] { nodeName });
- }
- // AUTO-GENERATED: METHODS END
}
diff --git a/src/java/com/threerings/presents/peer/server/persist/NodeRepository.java b/src/java/com/threerings/presents/peer/server/persist/NodeRepository.java
index d8b25e076..1105c706e 100644
--- a/src/java/com/threerings/presents/peer/server/persist/NodeRepository.java
+++ b/src/java/com/threerings/presents/peer/server/persist/NodeRepository.java
@@ -21,18 +21,23 @@
package com.threerings.presents.peer.server.persist;
+import java.sql.Connection;
+import java.sql.SQLException;
import java.sql.Timestamp;
-import java.util.List;
+import java.util.ArrayList;
import com.samskivert.io.PersistenceException;
+
import com.samskivert.jdbc.ConnectionProvider;
-import com.samskivert.jdbc.depot.DepotRepository;
-import com.samskivert.jdbc.depot.PersistenceContext;
+import com.samskivert.jdbc.DatabaseLiaison;
+import com.samskivert.jdbc.JDBCUtil;
+import com.samskivert.jdbc.JORARepository;
+import com.samskivert.jdbc.jora.Table;
/**
* Used to share information on active nodes in a Presents server cluster.
*/
-public class NodeRepository extends DepotRepository
+public class NodeRepository extends JORARepository
{
/** The database identifier used when establishing a database connection. This value being
* nodedb. */
@@ -46,16 +51,16 @@ public class NodeRepository extends DepotRepository
public NodeRepository (ConnectionProvider conprov)
throws PersistenceException
{
- super(new PersistenceContext(NODE_DB_IDENT, conprov));
+ super(conprov, NODE_DB_IDENT);
}
/**
* Returns a list of all nodes registered in the repository.
*/
- public List loadNodes ()
+ public ArrayList loadNodes ()
throws PersistenceException
{
- return findAll(NodeRecord.class);
+ return loadAll(_ntable, "");
}
/**
@@ -65,7 +70,7 @@ public class NodeRepository extends DepotRepository
throws PersistenceException
{
record.lastUpdated = new Timestamp(System.currentTimeMillis());
- store(record);
+ store(_ntable, record);
}
/**
@@ -75,9 +80,10 @@ public class NodeRepository extends DepotRepository
public void heartbeatNode (String nodeName)
throws PersistenceException
{
- updatePartial(NodeRecord.class, nodeName, new Object[] {
- NodeRecord.LAST_UPDATED, new Timestamp(System.currentTimeMillis())
- });
+ NodeRecord record = new NodeRecord();
+ record.nodeName = nodeName;
+ record.lastUpdated = new Timestamp(System.currentTimeMillis());
+ updateField(_ntable, record, "lastUpdated");
}
/**
@@ -86,6 +92,33 @@ public class NodeRepository extends DepotRepository
public void deleteNode (String nodeName)
throws PersistenceException
{
- delete(NodeRecord.class, nodeName);
+ delete(_ntable, new NodeRecord(nodeName));
}
+
+ @Override // documentation inherited
+ protected void migrateSchema (Connection conn, DatabaseLiaison liaison)
+ throws SQLException, PersistenceException
+ {
+ JDBCUtil.createTableIfMissing(conn, "NODES", new String[] {
+ "NODE_NAME VARCHAR(64) NOT NULL",
+ "HOST_NAME VARCHAR(64) NOT NULL",
+ "PUBLIC_HOST_NAME VARCHAR(64) NOT NULL",
+ "PORT INTEGER NOT NULL",
+ "LAST_UPDATED TIMESTAMP NOT NULL",
+ "PRIMARY KEY (NODE_NAME)",
+ }, "");
+
+ // TEMP: add our new column
+ JDBCUtil.addColumn(conn, "NODES", "PUBLIC_HOST_NAME",
+ "VARCHAR(64) NOT NULL", "HOST_NAME");
+ // END TEMP
+ }
+
+ @Override // documentation inherited
+ protected void createTables ()
+ {
+ _ntable = new Table(NodeRecord.class, "NODES", "NODE_NAME", true);
+ }
+
+ protected Table _ntable;
}