if (extendedRelationsDao.isTableExists()) { Map<String, Object> fieldValues = new HashMap<String, Object>(); fieldValues.put(ExtendedRelation.COLUMN_BASE_TABLE_NAME, relationName); List<ExtendedRelation> extendedRelations = extendedRelationsDao .queryForFieldValues(fieldValues); for (ExtendedRelation extendedRelation : extendedRelations) { geoPackage.deleteTable(extendedRelation .getMappingTableName()); extendedRelationsDao.delete(extendedRelations);
/** * Get the relations to the table, both base table and related table * * @param table * table name * @return extended relations * @throws SQLException * upon failure */ public List<ExtendedRelation> getTableRelations(String table) throws SQLException { QueryBuilder<ExtendedRelation, TableColumnKey> qb = queryBuilder(); qb.where().like(ExtendedRelation.COLUMN_BASE_TABLE_NAME, table).or() .like(ExtendedRelation.COLUMN_RELATED_TABLE_NAME, table); PreparedQuery<ExtendedRelation> preparedQuery = qb.prepare(); return query(preparedQuery); }
/** * Returns the relationships defined through this extension * * @return a list of ExtendedRelation objects */ public List<ExtendedRelation> getRelationships() { List<ExtendedRelation> result = null; try { if (extendedRelationsDao.isTableExists()) { result = extendedRelationsDao.queryForAll(); } else { result = new ArrayList<>(); } } catch (SQLException e) { throw new GeoPackageException("Failed to query for relationships " + "in " + EXTENSION_NAME, e); } return result; }
.getBaseTableRelations(featureDao.getTableName()); List<ExtendedRelation> featureExtendedRelations2 = extendedRelationsDao .getTableRelations(featureDao.getTableName()); TestCase.assertEquals(1, featureExtendedRelations.size()); TestCase.assertEquals(1, featureExtendedRelations2.size()); TestCase.assertEquals(featureExtendedRelations.get(0).getId(), featureExtendedRelations2.get(0).getId()); TestCase.assertTrue(extendedRelationsDao.getRelatedTableRelations( featureDao.getTableName()).isEmpty()); .getRelatedTableRelations(mediaTable.getTableName()); List<ExtendedRelation> mediaExtendedRelations2 = extendedRelationsDao .getTableRelations(mediaTable.getTableName()); TestCase.assertEquals(1, mediaExtendedRelations.size()); TestCase.assertEquals(1, mediaExtendedRelations2.size()); TestCase.assertEquals(mediaExtendedRelations.get(0).getId(), mediaExtendedRelations2.get(0).getId()); TestCase.assertTrue(extendedRelationsDao.getBaseTableRelations( mediaTable.getTableName()).isEmpty());
/** * Remove all trace of the extension */ public void removeExtension() { try { if (extendedRelationsDao.isTableExists()) { List<ExtendedRelation> extendedRelations = extendedRelationsDao .queryForAll(); for (ExtendedRelation extendedRelation : extendedRelations) { geoPackage.deleteTable(extendedRelation .getMappingTableName()); } geoPackage.dropTable(extendedRelationsDao.getTableName()); } if (extensionsDao.isTableExists()) { extensionsDao.deleteByExtension(EXTENSION_NAME); } } catch (SQLException e) { throw new GeoPackageException( "Failed to delete Related Tables extension and table. GeoPackage: " + geoPackage.getName(), e); } }
/** * Get all the base table names * * @return base table names * @throws SQLException * upon failure */ public List<String> getBaseTables() throws SQLException { List<String> baseTables = new ArrayList<String>(); List<ExtendedRelation> extendedRelations = queryForAll(); for (ExtendedRelation extendedRelation : extendedRelations) { baseTables.add(extendedRelation.getBaseTableName()); } return baseTables; }
/** * {@inheritDoc} */ @Override public boolean createExtendedRelationsTable() { verifyWritable(); boolean created = false; ExtendedRelationsDao dao = getExtendedRelationsDao(); try { if (!dao.isTableExists()) { created = tableCreator.createExtendedRelations() > 0; } } catch (SQLException e) { throw new GeoPackageException("Failed to check if " + ExtendedRelation.class.getSimpleName() + " table exists and create it", e); } return created; }
extendedRelation.setRelationName(relationName); try { extendedRelationsDao.create(extendedRelation); } catch (SQLException e) { throw new GeoPackageException("Failed to add relationship '"
.getBaseTableRelations(attributesDao.getTableName()); List<ExtendedRelation> attributesExtendedRelations2 = extendedRelationsDao .getTableRelations(attributesDao.getTableName()); TestCase.assertEquals(1, attributesExtendedRelations.size()); TestCase.assertEquals(1, attributesExtendedRelations2.size()); TestCase.assertEquals(attributesExtendedRelations.get(0).getId(), attributesExtendedRelations2.get(0).getId()); TestCase.assertTrue(extendedRelationsDao.getRelatedTableRelations( attributesDao.getTableName()).isEmpty()); .getRelatedTableRelations(simpleTable.getTableName()); List<ExtendedRelation> simpleExtendedRelations2 = extendedRelationsDao .getTableRelations(simpleTable.getTableName()); TestCase.assertEquals(1, simpleExtendedRelations.size()); TestCase.assertEquals(1, simpleExtendedRelations2.size()); TestCase.assertEquals(simpleExtendedRelations.get(0).getId(), simpleExtendedRelations2.get(0).getId()); TestCase.assertTrue(extendedRelationsDao.getBaseTableRelations( simpleTable.getTableName()).isEmpty());
/** * Get all the related table names * * @return related table names * @throws SQLException * upon failure */ public List<String> getRelatedTables() throws SQLException { List<String> relatedTables = new ArrayList<String>(); List<ExtendedRelation> extendedRelations = queryForAll(); for (ExtendedRelation extendedRelation : extendedRelations) { relatedTables.add(extendedRelation.getRelatedTableName()); } return relatedTables; }