From 3098bbd2f2d3503855e0cac980a3d88774cfe7c2 Mon Sep 17 00:00:00 2001 From: Sonia Zorba Date: Tue, 26 Jan 2016 13:09:28 +0100 Subject: [PATCH] Improvements in key visualization and bugfix --- .../businesslayer/Column.java | 17 +- .../businesslayer/Schema.java | 6 +- .../tapschemamanager/businesslayer/Table.java | 15 +- .../businesslayer/TapSchema.java | 2 +- .../tapschemamanager/businesslayer/Util.java | 14 +- .../webapp/EditTapSchemaPageModel.java | 42 ++++- .../src/main/webapp/css/fontello.css | 15 +- .../src/main/webapp/editTapSchema.jsp | 17 +- .../src/main/webapp/fonts/fontello.eot | Bin 6968 -> 7052 bytes .../src/main/webapp/fonts/fontello.svg | 3 +- .../src/main/webapp/fonts/fontello.ttf | Bin 6800 -> 6884 bytes .../src/main/webapp/fonts/fontello.woff | Bin 4176 -> 4236 bytes .../src/main/webapp/js/edit-tapschema.js | 2 +- .../datalayer/DataProvider.java | 36 ++--- .../tapschemamanager/datalayer/KeyEntity.java | 8 + .../datalayer/SchemaEntity.java | 14 +- .../datalayer/TableEntity.java | 34 +++- .../datalayer/TapSchemaHandler.java | 80 +++++++--- .../src/test/java/TestQuery.java | 148 +++++++++++++----- 19 files changed, 335 insertions(+), 118 deletions(-) diff --git a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Column.java b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Column.java index 727014b..021318c 100644 --- a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Column.java +++ b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Column.java @@ -1,6 +1,7 @@ package it.inaf.oats.ia2.tapschemamanager.businesslayer; import it.inaf.oats.ia2.tapschemamanager.datalayer.ColumnEntity; +import it.inaf.oats.ia2.tapschemamanager.datalayer.TapSchemaHandler; /** * @@ -20,12 +21,12 @@ public class Column extends EntityWrapper { private final boolean primaryKey; private final boolean indexed; - private boolean foreignKey; + private final String foreignKeyReference; private boolean hidden; - public Column(ColumnEntity columnEntity, boolean primaryKey) { - super(columnEntity, UTYPE, UCD, UNIT, DESCRIPTION, STD); + public Column(TapSchemaHandler tapSchemaHandler, ColumnEntity columnEntity, boolean primaryKey) { + super(columnEntity, UTYPE, UCD, UNIT, DESCRIPTION, STD, PRINCIPAL); hidden = true; this.primaryKey = primaryKey; this.datatype = columnEntity.getDatatype(); @@ -38,6 +39,10 @@ public class Column extends EntityWrapper { addValue(DESCRIPTION, columnEntity.getDescription()); addValue(STD, columnEntity.getStd() + ""); addValue(PRINCIPAL, columnEntity.getPrincipal() + ""); + + String tableName = columnEntity.getTableName(); + String schemaName = columnEntity.getTable().getSchemaName(); + foreignKeyReference = tapSchemaHandler.getForeignKeyReference(schemaName, tableName, columnEntity.getName()); } @Override @@ -53,6 +58,8 @@ public class Column extends EntityWrapper { columnEntity.setDescription(value); } else if (key.equals(STD)) { columnEntity.setStd(Integer.parseInt(value)); + } else if (key.equals(PRINCIPAL)) { + columnEntity.setPrincipal(Integer.parseInt(value)); } } @@ -83,8 +90,8 @@ public class Column extends EntityWrapper { return primaryKey; } - public boolean isForeignKey() { - return foreignKey; + public String getForeignKey() { + return foreignKeyReference; } public boolean isIndexed() { diff --git a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Schema.java b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Schema.java index ccc5763..2f90378 100644 --- a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Schema.java +++ b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Schema.java @@ -80,7 +80,7 @@ public class Schema extends EntityWrapper implements EntityWrapperContainer { } selectedTable = name; - getSchemaEntity().addTable((TableEntity) table.getEntity()); + tapSchemaHandler.addTable(getName(), table.getTableEntity()); } @Override @@ -93,7 +93,7 @@ public class Schema extends EntityWrapper implements EntityWrapperContainer { } selectedTable = tables.isEmpty() ? null : tables.keySet().iterator().next(); - getSchemaEntity().getTables().remove(table.getFullName()); + tapSchemaHandler.removeTable(getSchemaEntity(), table.getTableEntity()); } public Table getTable(String name) { @@ -138,7 +138,7 @@ public class Schema extends EntityWrapper implements EntityWrapperContainer { Table table = tables.get(entityName); List columns = table.getColumnsNames(); if (!columns.isEmpty()) { - table.selectEntity(columns.get(0)); + table.selectEntity(Util.getFirstInAlphabeticalOrder(columns)); } } diff --git a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Table.java b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Table.java index c33dfba..79d4660 100644 --- a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Table.java +++ b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Table.java @@ -23,19 +23,17 @@ public class Table extends EntityWrapper implements EntityWrapperContainer { private String selectedColumn; private final Map columns; + private final TapSchemaHandler tapSchemaHandler; private final String schemaName; private final String tableName; -// public Table(TapSchemaHandler tapSchemaHandler, String schemaName, String tableName) throws SQLException { -// this(tapSchemaHandler, schemaName, tableName, new TableEntity(schemaName + "." + tableName)); -// setStatus(Status.ADDED_NOT_PERSISTED); -// } public Table(TapSchemaHandler tapSchemaHandler, String schemaName, String tableName, TableEntity tableEntity) throws SQLException { super(tableEntity, UTYPE, DESCRIPTION); addValue(UTYPE, tableEntity.getUtype()); addValue(DESCRIPTION, tableEntity.getDescription()); + this.tapSchemaHandler = tapSchemaHandler; this.schemaName = schemaName; this.tableName = tableName; @@ -44,7 +42,7 @@ public class Table extends EntityWrapper implements EntityWrapperContainer { Set alreadyLoadedColumns = tableEntity.getColumns().keySet(); for (ColumnInfo columnInfo : tapSchemaHandler.getColumnInfo(schemaName, tableName)) { ColumnEntity columnEntity = columnInfo.getColumnEntity(); - Column column = new Column(columnEntity, columnInfo.isPrimaryKey()); + Column column = new Column(tapSchemaHandler, columnEntity, columnInfo.isPrimaryKey()); columns.put(columnEntity.getName(), column); if (alreadyLoadedColumns.contains(columnEntity.getName())) { @@ -53,8 +51,6 @@ public class Table extends EntityWrapper implements EntityWrapperContainer { } } - // Load foreign keys constraints - // TODO ... setStatus(Status.ADDED_PERSISTED); } @@ -96,7 +92,7 @@ public class Table extends EntityWrapper implements EntityWrapperContainer { } selectedColumn = name; - getTableEntity().addColumn(column.getColumnEntity()); + tapSchemaHandler.addColumn(getTableEntity(), column.getColumnEntity()); } @Override @@ -111,8 +107,7 @@ public class Table extends EntityWrapper implements EntityWrapperContainer { List visibleColumns = getColumnsNames(); selectedColumn = visibleColumns.isEmpty() ? null : visibleColumns.get(0); - column.setStatus(Status.ADDED_NOT_PERSISTED); - getTableEntity().addColumn(column.getColumnEntity()); + tapSchemaHandler.removeColumn(getTableEntity(), name); } public Column getColumn(String name) { diff --git a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/TapSchema.java b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/TapSchema.java index 3783c77..993fdbe 100644 --- a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/TapSchema.java +++ b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/TapSchema.java @@ -124,7 +124,7 @@ public class TapSchema implements EntityWrapperContainer { Schema schema = schemas.get(entityName); List tables = schema.getTablesNames(); if (!tables.isEmpty()) { - schema.selectEntity(tables.get(0)); + schema.selectEntity(Util.getFirstInAlphabeticalOrder(tables)); } } diff --git a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Util.java b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Util.java index 56b6cd5..480cdb3 100644 --- a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Util.java +++ b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/businesslayer/Util.java @@ -1,7 +1,6 @@ package it.inaf.oats.ia2.tapschemamanager.businesslayer; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Set; @@ -26,4 +25,17 @@ class Util { list.addAll(set); return list; } + + protected static String getFirstInAlphabeticalOrder(List list) { + String result = null; + for (String value : list) { + if (result == null) { + result = value; + } + if (result.compareTo(value) > 0) { + result = value; + } + } + return result; + } } diff --git a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/webapp/EditTapSchemaPageModel.java b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/webapp/EditTapSchemaPageModel.java index 9acf23c..d1e8ad3 100644 --- a/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/webapp/EditTapSchemaPageModel.java +++ b/TapSchemaManager/src/main/java/it/inaf/oats/ia2/tapschemamanager/webapp/EditTapSchemaPageModel.java @@ -8,6 +8,8 @@ import it.inaf.oats.ia2.tapschemamanager.businesslayer.Status; import it.inaf.oats.ia2.tapschemamanager.businesslayer.Table; import it.inaf.oats.ia2.tapschemamanager.businesslayer.TapSchema; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -51,6 +53,24 @@ public class EditTapSchemaPageModel { this.toRemove = entityWrapper.getStatus() == Status.TO_REMOVE; this.active = active; } + + public String getTitle() { + return title; + } + } + + class ColumnEntityItem extends EntityItem { + + private final boolean isPrimaryKey; + private final boolean isIndexed; + private final String foreignKey; + + public ColumnEntityItem(Column column, boolean active) { + super(column, active); + isPrimaryKey = column.isPrimaryKey(); + isIndexed = column.isIndexed(); + foreignKey = column.getForeignKey(); + } } class TapSchemaModel { @@ -90,7 +110,8 @@ public class EditTapSchemaPageModel { class ColumnModel extends Entity { boolean isPrimaryKey; - boolean isForeignKey; + boolean isIndexed; + String foreignKey; String dataType; int size; @@ -98,7 +119,8 @@ public class EditTapSchemaPageModel { super(column); isPrimaryKey = column.isPrimaryKey(); - isForeignKey = column.isForeignKey(); + foreignKey = column.getForeignKey(); + isIndexed = column.isIndexed(); dataType = column.getDatatype(); size = column.getSize(); } @@ -145,8 +167,22 @@ public class EditTapSchemaPageModel { ArrayList entities = new ArrayList(); String selectedName = selectedEntityWrapper == null ? null : selectedEntityWrapper.getName(); for (EntityWrapper entityWrapper : container.getAllEntityWrappers()) { - entities.add(new EntityItem(entityWrapper, entityWrapper.getName().equals(selectedName))); + EntityItem item; + if (entityWrapper.getClass() == Column.class) { + item = new ColumnEntityItem((Column) entityWrapper, entityWrapper.getName().equals(selectedName)); + } else { + item = new EntityItem(entityWrapper, entityWrapper.getName().equals(selectedName)); + } + entities.add(item); } + + Collections.sort(entities, new Comparator() { + @Override + public int compare(EntityItem lhs, EntityItem rhs) { + return lhs.getTitle().compareTo(rhs.getTitle()); + } + }); + return entities; } diff --git a/TapSchemaManager/src/main/webapp/css/fontello.css b/TapSchemaManager/src/main/webapp/css/fontello.css index deed168..2ca8b02 100644 --- a/TapSchemaManager/src/main/webapp/css/fontello.css +++ b/TapSchemaManager/src/main/webapp/css/fontello.css @@ -1,10 +1,10 @@ @font-face { font-family: 'fontello'; - src: url('../fonts/fontello.eot?96985520'); - src: url('../fonts/fontello.eot?96985520#iefix') format('embedded-opentype'), - url('../fonts/fontello.woff?96985520') format('woff'), - url('../fonts/fontello.ttf?96985520') format('truetype'), - url('../fonts/fontello.svg?96985520#fontello') format('svg'); + src: url('../fonts/fontello.eot?15528887'); + src: url('../fonts/fontello.eot?15528887#iefix') format('embedded-opentype'), + url('../fonts/fontello.woff?15528887') format('woff'), + url('../fonts/fontello.ttf?15528887') format('truetype'), + url('../fonts/fontello.svg?15528887#fontello') format('svg'); font-weight: normal; font-style: normal; } @@ -14,7 +14,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../fonts/fontello.svg?96985520#fontello') format('svg'); + src: url('../font/fontello.svg?15528887#fontello') format('svg'); } } */ @@ -64,6 +64,7 @@ .icon-warning:before { content: '\e807'; } /* '' */ .icon-error:before { content: '\e808'; } /* '' */ .icon-save:before { content: '\e809'; } /* '' */ +.icon-index:before { content: '\e80a'; } /* '' */ .icon-logout:before { content: '\e80b'; } /* '' */ .icon-left:before { content: '\e80c'; } /* '' */ -.icon-right:before { content: '\e80d'; } /* '' */ +.icon-right:before { content: '\e80d'; } /* '' */ \ No newline at end of file diff --git a/TapSchemaManager/src/main/webapp/editTapSchema.jsp b/TapSchemaManager/src/main/webapp/editTapSchema.jsp index 025e546..81cbbdf 100644 --- a/TapSchemaManager/src/main/webapp/editTapSchema.jsp +++ b/TapSchemaManager/src/main/webapp/editTapSchema.jsp @@ -7,10 +7,13 @@ <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="t" tagdir="/WEB-INF/tags" %> - + + + +
-
+

Editing ${tapSchemaName}

@@ -132,7 +135,8 @@
Column properties - + +
@@ -143,6 +147,9 @@ + + + {{column.title}} @@ -211,9 +218,7 @@
-
- @@ -321,7 +326,5 @@ - -
diff --git a/TapSchemaManager/src/main/webapp/fonts/fontello.eot b/TapSchemaManager/src/main/webapp/fonts/fontello.eot index d2fa61923d66a24a6dcbc7dd5234e6cc8625b5c1..fea0b1006c4825a6e303f821525b5d7a4fa502e9 100644 GIT binary patch delta 502 zcmdmC)??1vBhA3@WFo6M%fF!Qq7xme>(v+-7~U{2FoY%NCKgQwoA{iL?elRd_7o;Z^7cej|2rw}4Jz-#A;7HG@Ov~t)bDe>K zX#xWShe$?hVhYEiQVRwKt|bf%3}zV_sfq0Sm~9ytxb848FsNkYmQFU*g z8?Rnv^v}*>*xbX}z$hcSJ?LLNzs*+$Zsr#tTQ8l}eGZ|Sw@=pKHfQ9YoWQNi_+oMw zw>qyM^CsqdEL>nG@^9Y9&B@4UHu(h4Hb%3}^}Jq;jQo>N@yReT@=t!oXT!#tnU|7U Ku~~^0m>k}QS>*X037~U{2FoY%NCKkLKVqoBkVPIe|%g9JgWZ%bZ!@$5bg@J)VB_p?_!cZy>WCPa@ z1_lO;oc!cOej8p31_rJV3=9l%xrr483`@9AFfecnFfcGE -Copyright (C) 2015 by original authors @ fontello.com +Copyright (C) 2016 by original authors @ fontello.com @@ -16,6 +16,7 @@ + diff --git a/TapSchemaManager/src/main/webapp/fonts/fontello.ttf b/TapSchemaManager/src/main/webapp/fonts/fontello.ttf index 6940b1c042627eab8990054be2794e3783810c80..9401f38dffe39aa260fe7f24aa6566f4c9cd3b63 100644 GIT binary patch delta 522 zcmbPW`oy%JfsuiMfsdhqftew}KUm+$&cIWRfq~%-0|P@?a&BV51v$y>3=E7e3=E83 z$z>%93}CqGf$s+c19w4sVsQZj1A_nq1K$${1_qAwoXWI}jycyE z7?>t7FmQ-uq$Z|tEGo5NVBlK9z`$UZk&#-T$i9!+mVtrm4g&*&N=9x;g((xr25t~x zlarsE$oEIkj)8&OhJk@WAvdw2fMF^32?hr47!W@%F*o(hTp2kA2JRXL2BxzG`Nbta z=5EqpVBqs%U|^V5P?TD5H=DVYfk7&Rfq|i#fswhBaRLJ?0|!$T(;fx}hMtN4BDGx@ zn8BeS!@$Cz!N9=4#=yeB$iT$F@PhaMe~>#~Fo0+YMh3>sU5wG}{wxd(|Ff81Fx_Eb zW?*OFX5eGsb>QOT;pAXtVPs&@)n*h`G=*Viadzexf0LQ!Lhz?))0pmDz4~v{)vNzD zUcJibpPj|9`3Xk@qm1bGpnviFHeVUInO}e`y>wRhIfQ23KDmL*oRNR>4lZ5B7n2`x zsq^|VZ(_d3!Uc9V|7J06PDVzv$qGE%7|k|c=ka2c=VxGGWMX7yWMO1wWMgD!EG_fsuiMfsdhqftew}KUm+$&cIWifq~%-0|P@?a&BV53)Po585kH{7#J9X zlFLdI7{GvU1_J{FS6V@OZpVZPkqiucOBfiq3(^yd3m6y}1Q;0jCNMBCaHQu{rX9`L z#LB?HG=qVG{YXY?VhV?f)g%T6t{4Ue2D6Ne)cQpBeatot3|vzf7#LJCa!V=&-If;`wd9GH^4$0I9pwCjjyt!=>J5DU(ldnKSZD;?|vP z$gRTL#k`IA5y%)&9BfYF=450vot(q7jnQpF diff --git a/TapSchemaManager/src/main/webapp/fonts/fontello.woff b/TapSchemaManager/src/main/webapp/fonts/fontello.woff index e1cd519f4c8c6ac97b45c83755ff7907163998d7..e3e7f008bccbf3699a79b19df22e0b546003aac8 100644 GIT binary patch delta 2568 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 getAllSchemasNames(Connection connection) throws SQLException { + final List allSchemas = new ArrayList(); + (new ResultSetReader("SHOW DATABASES;") { + + @Override + public void manipulateItem(ResultSet resultSet) throws SQLException { + allSchemas.add(resultSet.getString(1)); + } + + }).read(connection); + return allSchemas; + } + public static List getAllTAPSchemasNames(Connection connection, final List allSchemas) throws SQLException { class TAPSchemaChecker { @@ -87,7 +100,7 @@ public class DataProvider { return exposedSchemas; } - public static EntityManager getEntityManager(Credentials credentials, String tapSchemaName) { + protected static EntityManager getEntityManager(Credentials credentials, String tapSchemaName) { Map persistenceMap = new HashMap(); persistenceMap.put("javax.persistence.jdbc.url", "jdbc:mysql://" + credentials.getHostname() + ":" + credentials.getPort() + "/" + tapSchemaName); @@ -99,26 +112,13 @@ public class DataProvider { return managerFactory.createEntityManager(); } - public static void createDatabase(Connection connection, String tapSchemaName) throws SQLException { + protected static void createDatabase(Connection connection, String tapSchemaName) throws SQLException { Statement statement = connection.createStatement(); statement.executeUpdate("CREATE DATABASE IF NOT EXISTS " + tapSchemaName); statement.close(); } - public static List getAllSchemasNames(Connection connection) throws SQLException { - final List allSchemas = new ArrayList(); - (new ResultSetReader("SHOW DATABASES;") { - - @Override - public void manipulateItem(ResultSet resultSet) throws SQLException { - allSchemas.add(resultSet.getString(1)); - } - - }).read(connection); - return allSchemas; - } - - public static ArrayList getAllTablesNames(Connection connection, String schemaName) throws SQLException { + protected static ArrayList getAllTablesNames(Connection connection, String schemaName) throws SQLException { final ArrayList allTables = new ArrayList(); (new ResultSetReader("SHOW TABLES FROM " + schemaName + ";") { @@ -141,7 +141,7 @@ public class DataProvider { * @return * @throws SQLException */ - public static List getSchemaKeys(final Connection connection, final String schemaName) throws SQLException { + protected static List getSchemaKeys(final Connection connection, final String schemaName) throws SQLException { final Map schemaKeysMap = new HashMap(); @@ -188,7 +188,7 @@ public class DataProvider { return false; } - public static List getAllColumns(final Connection connection, final String schemaName, final String tableName, final Map alreadyLoadedColumns) throws SQLException { + protected static List getAllColumns(final Connection connection, final String schemaName, final String tableName, final Map alreadyLoadedColumns) throws SQLException { final List allColumns = new ArrayList(); (new ResultSetReader("SHOW COLUMNS FROM `" + schemaName + "`.`" + tableName + "`;") { diff --git a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/KeyEntity.java b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/KeyEntity.java index ff470b4..c672591 100644 --- a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/KeyEntity.java +++ b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/KeyEntity.java @@ -113,6 +113,14 @@ public class KeyEntity implements Serializable { return fromTable; } + public void setFromTable(TableEntity fromTable) { + this.fromTable = fromTable; + } + + public void setTargetTable(TableEntity targetTable) { + this.targetTable = targetTable; + } + public TableEntity getTargetTable() { return targetTable; } diff --git a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/SchemaEntity.java b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/SchemaEntity.java index 4a846ea..3b58636 100644 --- a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/SchemaEntity.java +++ b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/SchemaEntity.java @@ -2,6 +2,8 @@ package it.inaf.oats.ia2.tapschemamanager.datalayer; import java.io.Serializable; import java.math.BigInteger; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.persistence.CascadeType; @@ -80,11 +82,19 @@ public class SchemaEntity implements Serializable, TapSchemaEntity { } public Map getTables() { - return tables; + return Collections.unmodifiableMap(tables); } - public void addTable(TableEntity table) { + public TableEntity getTable(String tableName) { + return tables.get(tableName); + } + + protected void addTable(TableEntity table) { tables.put(table.getName(), table); table.setSchemaName(name); } + + protected void removeTable(String tableName) { + tables.remove(tableName); + } } diff --git a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TableEntity.java b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TableEntity.java index b974525..24d279d 100644 --- a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TableEntity.java +++ b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TableEntity.java @@ -3,7 +3,9 @@ package it.inaf.oats.ia2.tapschemamanager.datalayer; import java.io.Serializable; import java.math.BigInteger; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -134,19 +136,43 @@ public class TableEntity implements Serializable, TapSchemaEntity { } public Map getColumns() { - return columns; + return Collections.unmodifiableMap(columns); } public List getFromKeys() { - return fromKeys; + return Collections.unmodifiableList(fromKeys); } public List getTargetKeys() { - return targetKeys; + return Collections.unmodifiableList(targetKeys); } - public void addColumn(ColumnEntity column) { + protected void addColumn(ColumnEntity column) { columns.put(column.getName(), column); column.setTableName(name); } + + protected void removeColumn(String columnName) { + columns.remove(columnName); + } + + public void addFromKey(KeyEntity key) { + if (!fromKeys.contains(key)) { + fromKeys.add(key); + } + } + + public void removeFromKey(KeyEntity key) { + fromKeys.remove(key); + } + + public void addTargetKey(KeyEntity key) { + if (!targetKeys.contains(key)) { + targetKeys.add(key); + } + } + + public void removeTargetKey(KeyEntity key) { + targetKeys.remove(key); + } } diff --git a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TapSchemaHandler.java b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TapSchemaHandler.java index a6fed9b..9aee364 100644 --- a/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TapSchemaHandler.java +++ b/TapSchemaManagerDL/src/main/java/it/inaf/oats/ia2/tapschemamanager/datalayer/TapSchemaHandler.java @@ -7,6 +7,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -168,52 +169,89 @@ public class TapSchemaHandler { } public TableEntity getNewTable(String schemaName, String tableName) throws SQLException { + TableEntity table = new TableEntity(schemaName + "." + tableName); + Connection conn = getConnection(); + try { + // Add columns info + // For performance reasons all possible column entities are loaded together + columnsInfo.addColumnsInfo(conn, schemaName, tableName, null); + } catch (SQLException e) { + throw e; + } finally { + closeConnection(); + } + + return table; + } + + public void addTable(String schemaName, TableEntity tableEntity) { SchemaEntity schema = schemas.get(schemaName); - TableEntity table = new TableEntity(schemaName + "." + tableName); + schema.addTable(tableEntity); // Add table keys int maxKey = getMaxKey(); for (KeyEntity keyEntity : schemaKeys.get(schemaName)) { - String fromTable = keyEntity.getFromTableName(); - String targetTable = keyEntity.getTargetTableName(); - if (schema.getTables().containsKey(fromTable) - && schema.getTables().containsKey(targetTable)) { + TableEntity fromTable = schema.getTable(keyEntity.getFromTableName()); + TableEntity targetTable = schema.getTable(keyEntity.getTargetTableName()); + if (fromTable != null && targetTable != null) { String key = maxKey + ""; keyEntity.setKeyId(key); + keyEntity.setFromTable(fromTable); + keyEntity.setTargetTable(targetTable); for (KeyColumnEntity keyColumn : keyEntity.getKeyColumns()) { keyColumn.setKeyId(key); } - schema.getTables().get(fromTable).getFromKeys().add(keyEntity); - schema.getTables().get(targetTable).getTargetKeys().add(keyEntity); + fromTable.addFromKey(keyEntity); + targetTable.addTargetKey(keyEntity); maxKey++; } } + } - Connection conn = getConnection(); - try { - // Add columns info - // For performance reasons all possible column entities are loaded together - columnsInfo.addColumnsInfo(conn, schemaName, tableName, null); - } catch (SQLException e) { - throw e; - } finally { - closeConnection(); + public void removeTable(SchemaEntity schemaEntity, TableEntity tableEntity) { + for (KeyEntity keyEntity : tableEntity.getFromKeys()) { + keyEntity.getTargetTable().removeTargetKey(keyEntity); + } + for (KeyEntity keyEntity : tableEntity.getTargetKeys()) { + keyEntity.getFromTable().removeFromKey(keyEntity); } - return table; + schemaEntity.removeTable(tableEntity.getName()); + } + + public void addColumn(TableEntity tableEntity, ColumnEntity columnEntity) { + tableEntity.addColumn(columnEntity); + } + + public void removeColumn(TableEntity tableEntity, String columnName) { + tableEntity.removeColumn(columnName); + } + + public String getForeignKeyReference(String schemaName, String tableName, String columnName) { + for (KeyEntity key : schemaKeys.get(schemaName)) { + if (key.getFromTableName().equals(tableName)) { + for (KeyColumnEntity keyColumn : key.getKeyColumns()) { + if (keyColumn.getFromColumn().equals(columnName)) { + return key.getTargetTableName().split(Pattern.quote("."))[1] + "." + keyColumn.getTargetColumn(); + } + } + } + } + + return null; } - public final Connection getConnection() throws SQLException { + private Connection getConnection() throws SQLException { if (connection == null) { connection = credentials.getConnection(); } return connection; } - public final void closeConnection() throws SQLException { + private void closeConnection() throws SQLException { if (connection != null) { try { connection.close(); @@ -225,6 +263,10 @@ public class TapSchemaHandler { } } + public List getAllSchemaKeys(String schemaName) { + return schemaKeys.get(schemaName); + } + public void save() throws SQLException { if (!exists) { try { diff --git a/TapSchemaManagerDL/src/test/java/TestQuery.java b/TapSchemaManagerDL/src/test/java/TestQuery.java index c1f35cf..3082cab 100644 --- a/TapSchemaManagerDL/src/test/java/TestQuery.java +++ b/TapSchemaManagerDL/src/test/java/TestQuery.java @@ -1,6 +1,9 @@ import it.inaf.oats.ia2.tapschemamanager.datalayer.ColumnEntity; +import it.inaf.oats.ia2.tapschemamanager.datalayer.ColumnInfo; import it.inaf.oats.ia2.tapschemamanager.datalayer.Credentials; +import it.inaf.oats.ia2.tapschemamanager.datalayer.KeyColumnEntity; +import it.inaf.oats.ia2.tapschemamanager.datalayer.KeyEntity; import it.inaf.oats.ia2.tapschemamanager.datalayer.SchemaEntity; import it.inaf.oats.ia2.tapschemamanager.datalayer.TableEntity; import it.inaf.oats.ia2.tapschemamanager.datalayer.TapSchemaHandler; @@ -63,31 +66,47 @@ public class TestQuery { private void setUpTestingDatabases(Credentials credentials) throws SQLException { removeTestingDatabases(credentials); - Connection connection = credentials.getConnection(); - - Statement statement = connection.createStatement(); - for (int i = 0; i < DATABASES_COUNT; i++) { - statement.executeUpdate("CREATE DATABASE db" + i); - for (int j = 0; j < TABLES_COUNT; j++) { - statement.executeUpdate("CREATE TABLE db" + i + ".table" + j + " (\n" - + "id INT PRIMARY KEY AUTO_INCREMENT,\n" - + "value1 VARCHAR(255),\n" - + "value2 FLOAT\n" - + ");"); + Connection connection = null; + Statement statement = null; + try { + connection = credentials.getConnection(); + statement = connection.createStatement(); + for (int i = 0; i < DATABASES_COUNT; i++) { + statement.executeUpdate("CREATE DATABASE db" + i); + for (int j = 0; j < TABLES_COUNT; j++) { + statement.executeUpdate("CREATE TABLE db" + i + ".table" + j + " (\n" + + "id INT PRIMARY KEY AUTO_INCREMENT,\n" + + "value1 VARCHAR(255),\n" + + "value2 FLOAT\n" + + ");"); + } } - } - statement.close(); + statement.close(); - connection.setCatalog("db0"); + System.out.println("dbs created"); - statement = connection.createStatement(); - for (int j = 0; j < TABLES_COUNT - 1; j++) { - statement.executeUpdate("ALTER TABLE table" + (j + 1) + " ADD COLUMN table" + j + "_id INT"); - statement.executeUpdate("ALTER TABLE table" + (j + 1) + " ADD CONSTRAINT id_constraint FOREIGN KEY(table" + j + "_id) REFERENCES table" + j + "(id)"); - } - statement.close(); + connection.setCatalog("db0"); - connection.close(); + statement = connection.createStatement(); + for (int j = 0; j < TABLES_COUNT - 1; j++) { + String update1 = "ALTER TABLE table" + (j + 1) + " ADD COLUMN table" + j + "_id INT"; + statement.executeUpdate(update1); + //System.out.println(update1); + String update2 = "ALTER TABLE table" + (j + 1) + " ADD CONSTRAINT id_constraint_" + (j + 1) + " FOREIGN KEY(table" + j + "_id) REFERENCES table" + j + "(id)"; + //System.out.println(update2); + statement.executeUpdate(update2); + } + } catch (SQLException e) { + e.printStackTrace(System.err); + throw e; + } finally { + if (statement != null) { + statement.close(); + } + if (connection != null) { + connection.close(); + } + } } @Test @@ -96,11 +115,14 @@ public class TestQuery { assertTrue(!tapSchemaHandler.getSchemas().isEmpty()); } + @Ignore @Test public void createNewAndUpdate() throws SQLException { System.out.println("TEST createNewAndUpdate STARTED"); try { + removeTestingDatabases(credentials); + setUpTestingDatabases(credentials); // TEST first TapSchema creation @@ -109,24 +131,80 @@ public class TestQuery { SchemaEntity db0 = tsh.getNewSchema("db0"); tsh.addSchema(db0); + List db0Keys = tsh.getAllSchemaKeys("db0"); + assertEquals(db0Keys.size(), TABLES_COUNT - 1); + // Print keys: + for (KeyEntity schemaKey : db0Keys) { + System.out.println(schemaKey.getFromTableName() + " -> " + schemaKey.getTargetTableName()); + for (KeyColumnEntity keyColumn : schemaKey.getKeyColumns()) { + System.out.println("\t" + schemaKey.getFromTableName() + "." + keyColumn.getFromColumn() + " -> " + schemaKey.getTargetTableName() + "." + keyColumn.getTargetColumn()); + } + } + // Test add, remove and re-add of a table - List db0Tables = tsh.getAllTables(db0.getName()); + List db0Tables = tsh.getAllTables("db0"); - TableEntity db0table0 = tsh.getNewTable(db0.getName(), "table0"); + TableEntity db0table0 = tsh.getNewTable("db0", "table0"); assertEquals(db0table0.getName(), "db0.table0"); - db0.addTable(db0table0); - TableEntity db0table1 = tsh.getNewTable(db0.getName(), "table1"); - - //db0table1.getFromKeys(); - - + tsh.addTable("db0", db0table0); + TableEntity db0table1 = tsh.getNewTable("db0", "table1"); + tsh.addTable("db0", db0table1); + + // Test key adding + assertTrue(db0table0.getFromKeys().isEmpty()); + assertEquals(db0table0.getTargetKeys().size(), 1); + + assertTrue(db0table1.getTargetKeys().isEmpty()); + assertEquals(db0table1.getFromKeys().size(), 1); + + KeyEntity keyEntity = db0table1.getFromKeys().get(0); + assertEquals(keyEntity.getFromTableName(), "db0.table1"); + assertEquals(keyEntity.getKeyColumns().get(0).getFromColumn(), "table0_id"); + assertEquals(keyEntity.getTargetTableName(), "db0.table0"); + assertEquals(keyEntity.getKeyColumns().get(0).getTargetColumn(), "id"); + + TableEntity db0table2 = tsh.getNewTable("db0", "table2"); + tsh.addTable("db0", db0table2); + assertEquals(db0table1.getFromKeys().size(), 1); + assertEquals(db0table1.getTargetKeys().size(), 1); + assertEquals(db0table2.getFromKeys().size(), 1); + + // Test key removing + assertEquals(db0.getTables().size(), 3); + tsh.removeTable(db0, db0table2); + assertEquals(db0.getTables().size(), 2); + assertEquals(db0table1.getFromKeys().size(), 1); + assertTrue(db0table1.getTargetKeys().isEmpty()); + + tsh.addTable("db0", db0table2); + assertEquals(db0table1.getFromKeys().size(), 1); + assertEquals(db0table1.getTargetKeys().size(), 1); + assertEquals(db0table2.getFromKeys().size(), 1); + + assertEquals(tsh.getForeignKeyReference("db0", "db0.table1", "table0_id"), "table0.id"); + assertNull(tsh.getForeignKeyReference("db0", "db0.table1", "id")); + + tsh.removeTable(db0, db0table1); + assertTrue(db0table0.getFromKeys().isEmpty()); + assertTrue(db0table0.getTargetKeys().isEmpty()); + assertTrue(db0table2.getFromKeys().isEmpty()); + assertTrue(db0table2.getTargetKeys().isEmpty()); + + // Test add column + ColumnInfo ci = tsh.getColumnInfo("db0", "db0.table1").get(0); + ColumnEntity columnEntity = ci.getColumnEntity(); + tsh.addColumn(db0table1, columnEntity); + assertNotNull(columnEntity.getTable()); + + // Test save tsh.save(); assertNotNull(db0.getTables().get("db0.table0")); + // Test load saved tsh = new TapSchemaHandler(credentials, "test_tap_schema", true); db0 = tsh.getSchemas().iterator().next(); - db0.getTables().remove("db0.table0"); - assertNull(db0.getTables().get("db0.table0")); + tsh.removeTable(db0, db0.getTable("db0.table0")); + assertNull(db0.getTable("db0.table0")); tsh.save(); tsh = new TapSchemaHandler(credentials, "test_tap_schema", true); @@ -134,9 +212,8 @@ public class TestQuery { assertNull(db0.getTables().get("db0.table0")); // Test key constraints - db0.addTable(db0table0); - - + tsh.addTable("db0", db0table0); + // assertEquals(db0Tables.size(), TABLES_COUNT); // for (String tableName : db0Tables) { // tapSchemaHandler.get @@ -177,7 +254,7 @@ public class TestQuery { } catch (SQLException e) { throw e; } finally { - removeTestingDatabases(credentials); + //removeTestingDatabases(credentials); } } @@ -197,7 +274,6 @@ public class TestQuery { // // ColumnEntity column = new ColumnEntity("table1_column1"); // table.addColumn(column); - //TapSchemaHandler tapSchemaHandler = new TapSchemaHandler(credentials, "TestJPA", false); //statement = connection.createStatement(); // String tapschemaName = tapSchema.getName(); -- GitLab