Package edu.brown.designer.mappers

Source Code of edu.brown.designer.mappers.SiteEntry

package edu.brown.designer.mappers;

import java.util.HashSet;
import java.util.Set;

import org.json.JSONArray;
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.Host;

import edu.brown.catalog.CatalogKey;

public class SiteEntry implements JSONString, Comparable<SiteEntry> {
    private static final long serialVersionUID = 1L;

    public enum Members {
        ID, HOST, FRAGMENTS,
    }

    private int id;
    private final Set<FragmentEntry> fragments = new HashSet<FragmentEntry>();
    private String host_key;
    private long estimated_size = 0l;
    private long estimated_heat = 0l;

    /**
     * Basic Constructor
     */
    protected SiteEntry() {
        // Do nothing...
    }

    public SiteEntry(int id) {
        this.id = id;
    }

    @Override
    public int compareTo(SiteEntry o) {
        return (this.id < o.id ? -1 : (this.id == o.id ? 0 : 1));
    }

    @Override
    public int hashCode() {
        return (this.id);
    }

    public int getId() {
        return (this.id);
    }

    public Set<FragmentEntry> getFragments() {
        return (this.fragments);
    }

    public boolean add(FragmentEntry fragment) {
        if (this.fragments.add(fragment)) {
            this.estimated_size += fragment.getEstimatedSize();
            this.estimated_heat += fragment.getEstimatedHeat();
            return (true);
        }
        return (false);
    }

    public boolean remove(FragmentEntry fragment) {
        if (this.fragments.remove(fragment)) {
            this.estimated_size -= fragment.getEstimatedSize();
            assert (this.estimated_size >= 0);
            this.estimated_heat -= fragment.getEstimatedHeat();
            assert (this.estimated_heat >= 0);
            return (true);
        }
        return (false);
    }

    public void setEstimatedSize(long estimated_size) {
        this.estimated_size = estimated_size;
    }

    public long getEstimatedSize() {
        return estimated_size;
    }

    public void setEstimatedHeat(long estimated_heat) {
        this.estimated_heat = estimated_heat;
    }

    public long getEstimatedHeat() {
        return estimated_heat;
    }

    public Host getHost(Database catalog_db) {
        return (CatalogKey.getFromKey(catalog_db, this.host_key, Host.class));
    }

    public String getHostKey() {
        return (this.host_key);
    }

    public void setHost(Host catalog_host) {
        this.setHostKey(CatalogKey.createKey(catalog_host));
    }

    public void setHostKey(String host_key) {
        this.host_key = host_key;
    }

    /**
     *
     */
    @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.ID.name()).value(this.id);
        stringer.key(Members.HOST.name()).value(this.host_key);

        stringer.key(Members.FRAGMENTS.name()).array();
        for (FragmentEntry fragment : this.fragments) {
            stringer.object();
            fragment.toJSONString(stringer);
            stringer.endObject();
        }
        stringer.endArray();
    }

    public void fromJSONObject(JSONObject object, Database catalog_db) throws JSONException {
        this.id = object.getInt(Members.ID.name());
        this.host_key = object.getString(Members.HOST.name());

        this.fragments.clear();
        JSONArray jsonArray = object.getJSONArray(Members.FRAGMENTS.name());
        for (int i = 0, cnt = jsonArray.length(); i < cnt; i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            FragmentEntry fragment = new FragmentEntry();
            fragment.fromJSONObject(jsonObject, catalog_db);
            this.add(fragment);
        } // FOR
    }

    @Override
    public String toString() {
        return (this.getClass().getSimpleName() + "[" + this.getId() + "]");
    }
}
TOP

Related Classes of edu.brown.designer.mappers.SiteEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.