/activeobjects-dbex/src/main/java/com/atlassian/dbexporter/node/NodeBackup.java
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()); } } }