Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.framework.core.datastore/src/org/eclipse/osee/framework/core/datastore/schema/data/SchemaData.java')
-rw-r--r--plugins/org.eclipse.osee.framework.core.datastore/src/org/eclipse/osee/framework/core/datastore/schema/data/SchemaData.java278
1 files changed, 0 insertions, 278 deletions
diff --git a/plugins/org.eclipse.osee.framework.core.datastore/src/org/eclipse/osee/framework/core/datastore/schema/data/SchemaData.java b/plugins/org.eclipse.osee.framework.core.datastore/src/org/eclipse/osee/framework/core/datastore/schema/data/SchemaData.java
deleted file mode 100644
index 646f3ee6f0f..00000000000
--- a/plugins/org.eclipse.osee.framework.core.datastore/src/org/eclipse/osee/framework/core/datastore/schema/data/SchemaData.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Boeing - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osee.framework.core.datastore.schema.data;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-import javax.xml.parsers.ParserConfigurationException;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.eclipse.osee.framework.core.datastore.schema.data.TableElement.ColumnFields;
-import org.eclipse.osee.framework.jdk.core.persistence.Xmlizable;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * @author Roberto E. Escobar
- */
-public class SchemaData implements Xmlizable {
-
- public static final String ROOT_TAG = "TableConfig";
- private List<TableElement> tableDefinitions;
- private final SchemaDataLookup schemaLookup;
-
- private final boolean isSorted;
-
- public SchemaData() {
- this.tableDefinitions = new ArrayList<TableElement>();
- this.isSorted = false;
- this.schemaLookup = new SchemaDataLookup(this);
- }
-
- public void setTableDataSpaceName(String tableDataSpace) {
- for (TableElement table : getTableMap().values()) {
- table.setTablespace(tableDataSpace);
- }
- }
-
- public void setIndexDataSpaceName(String indexDataSpace) {
- for (TableElement table : getTableMap().values()) {
- for (IndexElement indexElement : table.getIndexData()) {
- indexElement.setTablespace(indexDataSpace);
- }
- }
- }
-
- public List<TableElement> getTablesOrderedByDependency() {
- sortTablesForConstraints();
- markIdentityColumns();
- return tableDefinitions;
- }
-
- public Set<String> getTablesToBackup() {
- Set<String> backupTables = new TreeSet<String>();
- for (TableElement table : tableDefinitions) {
- if (table.isBackupDataSet()) {
- backupTables.add(table.getFullyQualifiedTableName());
- }
- }
- return backupTables;
- }
-
- public Map<String, Set<String>> getTablesToImport(String defaultSource) {
- Map<String, Set<String>> importTables = new HashMap<String, Set<String>>();
- for (TableElement table : tableDefinitions) {
- if (table.isImportDataSet()) {
- String importFrom = table.getImportFrom();
- if (!Strings.isValid(importFrom)) {
- importFrom = defaultSource;
- }
- Set<String> tableSet;
- if (importTables.containsKey(importFrom)) {
- tableSet = importTables.get(importFrom);
- } else {
- tableSet = new TreeSet<String>();
- }
- tableSet.add(table.getFullyQualifiedTableName());
- importTables.put(importFrom, tableSet);
- }
- }
- return importTables;
- }
-
- public void addTableDefinition(TableElement table) {
- tableDefinitions.add(table);
- }
-
- @Override
- public String toString() {
- String toReturn = "";
- for (TableElement table : tableDefinitions) {
- toReturn += table.toString();
- }
- return toReturn;
- }
-
- public Document getXmlDocument() throws ParserConfigurationException {
- Document doc = Jaxp.newDocumentNamespaceAware();
- Element root = doc.createElement(ROOT_TAG);
- doc.appendChild(root);
- for (TableElement table : tableDefinitions) {
- root.appendChild(table.toXml(doc));
- }
- return doc;
- }
-
- @Override
- public Element toXml(Document doc) {
- return null;
- }
-
- private void sortTablesForConstraints() {
- this.tableDefinitions = sortTablesForConstraints(this.tableDefinitions);
- }
-
- private boolean canCreate(TableElement table, Set<String> canCreate) {
- Set<String> dependencies = table.getTableDependency();
- if (canCreate.containsAll(dependencies)) {
- return true;
- }
- return false;
- }
-
- private void markIdentityColumns() {
- for (TableElement aTable : tableDefinitions) {
- determineIdentityColumns(aTable);
- }
- }
-
- private void determineIdentityColumns(TableElement tableDef) {
- List<String> primaryKeys = new ArrayList<String>();
-
- // first get all of the vars used for the primary key
- List<ConstraintElement> constraints = tableDef.getConstraints();
- for (ConstraintElement constraint : constraints) {
- if (constraint.getConstraintType().equals(ConstraintTypes.PRIMARY_KEY)) {
- List<String> columns = constraint.getColumns();
- for (String column : columns) {
- primaryKeys.add(column);
- }
- }
- }
-
- // now go through and remove any of the primary key vars that are foreign keys
- List<ForeignKey> foreignKeys = tableDef.getForeignKeyConstraints();
- for (ForeignKey fkConstraint : foreignKeys) {
- List<String> columns = fkConstraint.getColumns();
- for (String column : columns) {
- primaryKeys.remove(column);
- }
- }
-
- // now we should only be left with those primary keys that are identities.
- // we set them by setting their corresponding identity column to true, a little hokey but that
- // way we don't have to create special data structures for the column
- Map<String, ColumnMetadata> columns = tableDef.getColumns();
- Set<String> columnKeys = columns.keySet();
- for (String key : columnKeys) {
- ColumnMetadata column = columns.get(key);
- if (primaryKeys.contains(column.getId())) {
- column.addColumnField(ColumnFields.identity, Boolean.TRUE.toString());
- }
- }
- }
-
- private List<TableElement> sortTablesForConstraints(List<TableElement> tables) {
- List<TableElement> sorted = new ArrayList<TableElement>();
- Set<String> canCreate = new HashSet<String>();
-
- Map<TableElement, Boolean> toSort = new HashMap<TableElement, Boolean>();
-
- for (TableElement aTable : tables) {
- if (aTable.hasForeignKey()) {
- toSort.put(aTable, false);
- } else {
- sorted.add(aTable);
- canCreate.add(aTable.getFullyQualifiedTableName());
- }
- }
-
- // Prevent for endless loops caused by
- // foreign/primary key discrepancies
- int guard = toSort.size() * 2;
- int count = 0;
- while (toSort.containsValue(false) && count < guard) {
- Set<TableElement> elements = toSort.keySet();
-
- for (TableElement aTable : elements) {
-
- if (!toSort.get(aTable)) {
- if (canCreate(aTable, canCreate)) {
- canCreate.add(aTable.getFullyQualifiedTableName());
- sorted.add(aTable);
- toSort.put(aTable, true);
- }
- }
- }
- count++;
- }
-
- // If we were stuck in an endless loop copy all unsortable tables
- // to the end of the sorted array and return
- if (toSort.containsValue(false)) {
- Set<TableElement> elements = toSort.keySet();
- for (TableElement aTable : elements) {
- if (!toSort.get(aTable)) {
- canCreate.add(aTable.getFullyQualifiedTableName());
- sorted.add(aTable);
- toSort.put(aTable, true);
- }
- }
- }
-
- return sorted;
- }
-
- @Override
- public boolean equals(Object otherObject) {
- if (otherObject instanceof SchemaData == false) {
- return false;
- }
- if (this == otherObject) {
- return true;
- }
- SchemaData that = (SchemaData) otherObject;
- return hasEqualState(that);
- }
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder(37, 11).append(tableDefinitions).append(isSorted).append(schemaLookup).toHashCode();
- }
-
- public Map<String, TableElement> getTableMap() {
- Map<String, TableElement> tableMap = new HashMap<String, TableElement>();
- for (TableElement table : tableDefinitions) {
- tableMap.put(table.getFullyQualifiedTableName(), table);
- }
- return tableMap;
- }
-
- public boolean hasEqualState(SchemaData that) {
- EqualsBuilder equalsBuilder = new EqualsBuilder();
- equalsBuilder.appendSuper(super.equals(that));
-
- Map<String, TableElement> thisTableMap = this.getTableMap();
- Map<String, TableElement> thatTableMap = that.getTableMap();
-
- Set<String> thisKey1 = thisTableMap.keySet();
- Set<String> thatKey2 = thatTableMap.keySet();
-
- boolean toReturn = true;
- if (thisKey1.equals(thatKey2)) {
- for (String key : thisKey1) {
- equalsBuilder.append(thisTableMap.get(key), thatTableMap.get(key));
- }
- toReturn &= equalsBuilder.isEquals();
- } else {
- toReturn = false;
- }
- return toReturn;
- }
-}

Back to the top