PageRenderTime 1732ms CodeModel.GetById 2ms app.highlight 132ms RepoModel.GetById 1ms app.codeStats 0ms

/activeobjects-dbex/src/main/java/com/atlassian/dbexporter/node/NodeBackup.java

https://bitbucket.org/activeobjects/ao-plugin
Java | 265 lines | 202 code | 60 blank | 3 comment | 8 complexity | c56dc8021293173723bd44b28daece19 MD5 | raw file
Possible License(s): Apache-2.0
package com.atlassian.dbexporter.node;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;

import static com.google.common.base.Preconditions.checkArgument;

/**
 * Represents the nodes being read/written for backups
 */
public final class NodeBackup {
    public final static class RootNode {
        public static final String NAME = "backup";

        public static NodeParser get(NodeStreamReader nsr) {
            NodeParser node = nsr.getRootNode();
            checkArgument(NAME.equals(node.getName()), "Root node is not '" + NAME + "'");
            return node;
        }

        public static NodeCreator add(NodeStreamWriter nsw) {
            return nsw.addRootNode(NAME);
        }
    }

    public final static class DatabaseInformationNode {
        public static final String NAME = "database";
        public static final String META = "meta";
        private static final String META_KEY = "key";
        private static final String META_VALUE = "value";

        public static NodeCreator addMeta(NodeCreator node, String key, String value) {
            return node.addNode(META).addAttribute(META_KEY, key).addAttribute(META_VALUE, value).closeEntity();
        }

        public static String getMetaKey(NodeParser node) {
            return node.getRequiredAttribute(META_KEY);
        }

        public static String getMetaValue(NodeParser node) {
            return node.getRequiredAttribute(META_VALUE);
        }
    }

    public final static class TableDefinitionNode {
        public static final String NAME = "table";
        private static final String NAME_ATTR = "name";

        public static NodeCreator add(NodeCreator node) {
            return node.addNode(NAME);
        }

        public static String getName(NodeParser node) {
            return node.getRequiredAttribute(NAME_ATTR);
        }

        public static NodeCreator setName(NodeCreator node, String name) {
            return node.addAttribute(NAME_ATTR, name);
        }
    }

    public final static class ColumnDefinitionNode {
        public static final String NAME = "column";

        private static final String NAME_ATTR = "name";
        private static final String PRIMARY_KEY = "primaryKey";
        private static final String AUTO_INCREMENT = "autoIncrement";
        private static final String SQL_TYPE = "sqlType";
        private static final String PRECISION = "precision";
        private static final String SCALE = "scale";

        public static NodeCreator add(NodeCreator node) {
            return node.addNode(NAME);
        }

        public static String getName(NodeParser node) {
            return node.getRequiredAttribute(NAME_ATTR);
        }

        public static NodeCreator setName(NodeCreator node, String name) {
            return node.addAttribute(NAME_ATTR, name);
        }

        public static boolean isPrimaryKey(NodeParser node) {
            return Boolean.valueOf(node.getAttribute(PRIMARY_KEY));
        }

        public static NodeCreator setPrimaryKey(NodeCreator node, Boolean primaryKey) {
            return primaryKey == null ? node : node.addAttribute(PRIMARY_KEY, String.valueOf(primaryKey));
        }

        public static boolean isAutoIncrement(NodeParser node) {
            return Boolean.valueOf(node.getAttribute(AUTO_INCREMENT));
        }

        public static NodeCreator setAutoIncrement(NodeCreator node, Boolean autoIncrement) {
            return autoIncrement == null ? node : node.addAttribute(AUTO_INCREMENT, String.valueOf(autoIncrement));
        }

        public static int getSqlType(NodeParser node) {
            return Integer.valueOf(node.getRequiredAttribute(SQL_TYPE));
        }

        public static NodeCreator setSqlType(NodeCreator node, int sqlType) {
            return node.addAttribute(SQL_TYPE, String.valueOf(sqlType));
        }

        public static Integer getPrecision(NodeParser node) {
            final String stringPrecision = node.getAttribute(PRECISION);
            return stringPrecision == null ? null : Integer.valueOf(stringPrecision);
        }

        public static NodeCreator setPrecision(NodeCreator node, Integer precision) {
            return precision == null ? node : node.addAttribute(PRECISION, String.valueOf(precision));
        }

        public static Integer getScale(NodeParser node) {
            final String stringScale = node.getAttribute(SCALE);
            return stringScale == null ? null : Integer.valueOf(stringScale);
        }

        public static NodeCreator setScale(NodeCreator node, Integer scale) {
            return scale == null ? node : node.addAttribute(SCALE, String.valueOf(scale));
        }
    }

    public final static class ForeignKeyDefinitionNode {
        public static final String NAME = "foreignKey";

        private static final String NAME_ATTR = "name";
        private static final String FROM_TABLE = "fromTable";
        private static final String FROM_COLUMN = "fromColumn";
        private static final String TO_TABLE = "toTable";
        private static final String TO_COLUMN = "toColumn";

        public static NodeCreator add(NodeCreator node) {
            return node.addNode(NAME);
        }

        public static String getName(NodeParser node) {
            return node.getRequiredAttribute(NAME_ATTR);
        }

        public static String getFromTable(NodeParser node) {
            return node.getRequiredAttribute(FROM_TABLE);
        }

        public static NodeCreator setFromTable(NodeCreator node, String fromTable) {
            return node.addAttribute(FROM_TABLE, fromTable);
        }

        public static String getFromColumn(NodeParser node) {
            return node.getRequiredAttribute(FROM_COLUMN);
        }

        public static NodeCreator setFromColumn(NodeCreator node, String fromColumn) {
            return node.addAttribute(FROM_COLUMN, fromColumn);
        }

        public static String getToTable(NodeParser node) {
            return node.getRequiredAttribute(TO_TABLE);
        }

        public static NodeCreator setToTable(NodeCreator node, String toTable) {
            return node.addAttribute(TO_TABLE, toTable);
        }

        public static NodeCreator setToColumn(NodeCreator node, String toField) {
            return node.addAttribute(TO_COLUMN, toField);
        }

        public static String getToColumn(NodeParser node) {
            return node.getRequiredAttribute(TO_COLUMN);
        }
    }

    public final static class TableDataNode {
        public static final String NAME = "data";
        private static final String NAME_ATTR = "tableName";

        public static NodeCreator add(NodeCreator node, String tableName) {
            return node.addNode(NAME).addAttribute(NAME_ATTR, tableName);
        }

        public static String getName(NodeParser node) {
            return node.getRequiredAttribute(NAME_ATTR);
        }
    }

    public final static class ColumnDataNode {
        public static final String NAME = "column";
        private static final String NAME_ATTR = "name";

        public static NodeCreator add(NodeCreator node, String columnName) {
            return node.addNode(NAME).addAttribute(NAME_ATTR, columnName);
        }

        public static String getName(NodeParser node) {
            return node.getRequiredAttribute(NAME_ATTR);
        }
    }

    public final static class RowDataNode {
        public static final String NAME = "row";
        private static final String STRING = "string";
        private static final String BOOLEAN = "boolean";
        private static final String INTEGER = "integer";
        private static final String DOUBLE = "double";
        private static final String DATE = "timestamp";
        private static final String BINARY = "binary";

        public static NodeCreator add(NodeCreator node) {
            return node.addNode(NAME);
        }

        public static NodeCreator append(NodeCreator node, BigInteger value) {
            return node.addNode(INTEGER).setContentAsBigInteger(value == null ? null : value).closeEntity();
        }

        public static NodeCreator append(NodeCreator node, BigDecimal value) {
            return node.addNode(DOUBLE).setContentAsBigDecimal(value == null ? null : value).closeEntity();
        }

        public static NodeCreator append(NodeCreator node, String value) {
            return node.addNode(STRING).setContentAsString(value).closeEntity();
        }

        public static NodeCreator append(NodeCreator node, Boolean value) {
            return node.addNode(BOOLEAN).setContentAsBoolean(value).closeEntity();
        }

        public static NodeCreator append(NodeCreator node, Timestamp value) {
            return node.addNode(DATE).setContentAsDate(value).closeEntity();
        }

        public static NodeCreator append(NodeCreator node, byte[] value) {
            return node.addNode(BINARY).setContentAsBinary(value).closeEntity();
        }

        public static boolean isString(NodeParser node) {
            return STRING.equals(node.getName());
        }

        public static boolean isBoolean(NodeParser node) {
            return BOOLEAN.equals(node.getName());
        }

        public static boolean isInteger(NodeParser node) {
            return INTEGER.equals(node.getName());
        }

        public static boolean isDouble(NodeParser node) {
            return DOUBLE.equals(node.getName());
        }

        public static boolean isDate(NodeParser node) {
            return DATE.equals(node.getName());
        }

        public static boolean isBinary(NodeParser node) {
            return BINARY.equals(node.getName());
        }
    }
}