package edu.brown.designer.mappers; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONString; import org.json.JSONStringer; import org.voltdb.catalog.Database; import org.voltdb.catalog.Table; import edu.brown.catalog.CatalogKey; public class FragmentEntry implements JSONString { public enum Members { TABLE_KEY, HASH_KEY, ESTIMATED_SIZE, ESTIMATED_HEAT, } private String table_key; private int hash_key; private long estimated_size = 0; private long estimated_heat = 0; public FragmentEntry() { // Do nothing... } public FragmentEntry(String table_key, int hash) { this.table_key = table_key; this.hash_key = hash; } public FragmentEntry(Table catalog_tbl, int hash) { this(CatalogKey.createKey(catalog_tbl), hash); } public String getTableKey() { return (this.table_key); } public int getHashKey() { return (this.hash_key); } public void setEstimatedSize(long estimated_size) { this.estimated_size = estimated_size; } public long getEstimatedSize() { return (this.estimated_size); } public void setEstimatedHeat(long estimated_heat) { this.estimated_heat = estimated_heat; } public long getEstimatedHeat() { return (this.estimated_heat); } public Table getTable(Database catalog_db) { return (CatalogKey.getFromKey(catalog_db, this.table_key, Table.class)); } /** * */ @Override public String toJSONString() { JSONStringer stringer = new JSONStringer(); try { stringer.object(); this.toJSONString(stringer); stringer.endObject(); } catch (JSONException e) { e.printStackTrace(); System.exit(-1); } return stringer.toString(); } public void toJSONString(JSONStringer stringer) throws JSONException { stringer.key(Members.TABLE_KEY.name()).value(this.table_key); stringer.key(Members.HASH_KEY.name()).value(this.hash_key); stringer.key(Members.ESTIMATED_SIZE.name()).value(this.estimated_size); stringer.key(Members.ESTIMATED_HEAT.name()).value(this.estimated_heat); } public void fromJSONObject(JSONObject object, Database catalog_db) throws JSONException { this.table_key = object.getString(Members.TABLE_KEY.name()); this.hash_key = object.getInt(Members.HASH_KEY.name()); this.estimated_size = object.getLong(Members.ESTIMATED_SIZE.name()); this.estimated_heat = object.getLong(Members.ESTIMATED_HEAT.name()); } @Override public String toString() { StringBuilder buffer = new StringBuilder(); buffer.append("[").append(CatalogKey.getNameFromKey(this.getTableKey())).append("-").append(this.getHashKey()).append("]"); return (buffer.toString()); } }