Package edu.brown.catalog

Source Code of edu.brown.catalog.CatalogExporter

/**
*
*/
package edu.brown.catalog;

import java.io.File;
import java.io.IOException;

import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import org.voltdb.VoltType;
import org.voltdb.catalog.Catalog;
import org.voltdb.catalog.Column;
import org.voltdb.catalog.Database;
import org.voltdb.catalog.Procedure;
import org.voltdb.catalog.Statement;
import org.voltdb.catalog.Table;
import org.voltdb.utils.NotImplementedException;

import edu.brown.utils.ArgumentsParser;
import edu.brown.utils.JSONSerializable;
import edu.brown.utils.JSONUtil;

/**
* @author pavlo
*/
public class CatalogExporter implements JSONSerializable {

    private final Catalog catalog;

    /**
     * Constructor
     *
     * @param catalog
     */
    public CatalogExporter(Catalog catalog) {
        this.catalog = catalog;
    }

    /*
     * (non-Javadoc)
     * @see edu.brown.utils.JSONSerializable#toJSON(org.json.JSONStringer)
     */
    @Override
    public void toJSON(JSONStringer stringer) throws JSONException {
        Database catalog_db = CatalogUtil.getDatabase(this.catalog);

        // Procedures
        stringer.key("PROCEDURES").object();
        for (Procedure catalog_proc : catalog_db.getProcedures()) {
            if (catalog_proc.getSystemproc())
                continue;
            stringer.key(catalog_proc.getName()).object();
            for (Statement catalog_stmt : catalog_proc.getStatements()) {
                stringer.key(catalog_stmt.getName()).value(catalog_stmt.getSqltext());
            } // FOR
            stringer.endObject();
        } // FOR
        stringer.endObject();

        // Tables
        stringer.key("TABLES").object();
        for (Table catalog_tbl : catalog_db.getTables()) {
            stringer.key(catalog_tbl.getName()).object();

            stringer.key("COLUMNS").object();
            for (Column catalog_col : org.voltdb.utils.CatalogUtil.getSortedCatalogItems(catalog_tbl.getColumns(), "index")) {
                stringer.key(catalog_col.getName()).object();
                stringer.key("TYPE").value(VoltType.get(catalog_col.getType()).name());
                stringer.endObject();
            } // FOR
            stringer.endObject();

            stringer.endObject();
        } // FOR
        stringer.endObject();
    }

    /*
     * (non-Javadoc)
     * @see edu.brown.utils.JSONSerializable#fromJSON(org.json.JSONObject,
     * org.voltdb.catalog.Database)
     */
    @Override
    public void fromJSON(JSONObject jsonObject, Database catalogDb) throws JSONException {
        throw new NotImplementedException("Cannot import JSON catalog");
    }

    /*
     * (non-Javadoc)
     * @see edu.brown.utils.JSONSerializable#load(java.lang.String,
     * org.voltdb.catalog.Database)
     */
    @Override
    public void load(File inputPath, Database catalogDb) throws IOException {
        throw new NotImplementedException("Cannot import JSON catalog");
    }

    /*
     * (non-Javadoc)
     * @see edu.brown.utils.JSONSerializable#save(java.lang.String)
     */
    @Override
    public void save(File outputPath) throws IOException {
        JSONUtil.save(this, outputPath);
    }

    /*
     * (non-Javadoc)
     * @see org.json.JSONString#toJSONString()
     */
    @Override
    public String toJSONString() {
        return (JSONUtil.toJSONString(this));
    }

    /**
     * @param vargs
     * @throws Exception
     */
    public static void main(String[] vargs) throws Exception {
        ArgumentsParser args = ArgumentsParser.load(vargs);
        args.require(ArgumentsParser.PARAM_CATALOG, ArgumentsParser.PARAM_CATALOG_OUTPUT);

        Catalog catalog = args.catalog;
        File output = args.getFileParam(ArgumentsParser.PARAM_CATALOG_OUTPUT);
        new CatalogExporter(catalog).save(output);
    }

}
TOP

Related Classes of edu.brown.catalog.CatalogExporter

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.