/** * Constructor * * @param table * user custom table */ MediaTable(UserCustomTable table) { super(RELATION_TYPE.getName(), RELATION_TYPE.getDataType(), table); }
/** * Get the relation type for pre-known types * * @return relation type or null */ public RelationType getRelationType() { return RelationType.fromName(getRelationName()); }
/** * Get the Relation Type from the name * * @param name * name * @return relation type */ public static RelationType fromName(String name) { RelationType relationType = null; if (name != null) { for (RelationType type : RelationType.values()) { if (name.equals(type.getName())) { relationType = type; break; } } } return relationType; }
/** * Remove a specific relationship from the GeoPackage * * @param baseTableName * base table name * @param relatedTableName * related table name * @param relationType * relation type */ public void removeRelationship(String baseTableName, String relatedTableName, RelationType relationType) { removeRelationship(baseTableName, relatedTableName, relationType.getName()); }
/** * Validate contents * * @param mediaTable media table * @param contents contents */ private static void validateContents(MediaTable mediaTable, Contents contents) { TestCase.assertNotNull(contents); TestCase.assertNotNull(contents.getDataType()); TestCase.assertEquals(MediaTable.RELATION_TYPE.getDataType(), contents .getDataType().getName()); TestCase.assertEquals(MediaTable.RELATION_TYPE.getDataType(), contents.getDataTypeString()); TestCase.assertEquals(mediaTable.getTableName(), contents.getTableName()); TestCase.assertNotNull(contents.getLastChange()); }
/** * Adds a relationship between the base and related table. Creates a default * user mapping table if needed. * * @param baseTableName * base table name * @param relatedTableName * related table name * @param mappingTableName * mapping table name * @param relationType * relation type * @return The relationship that was added */ public ExtendedRelation addRelationship(String baseTableName, String relatedTableName, String mappingTableName, RelationType relationType) { return addRelationship(baseTableName, relatedTableName, mappingTableName, relationType.getName()); }
/** * Validate contents * * @param simpleAttributesTable simple attributes table * @param contents contents */ private static void validateContents( SimpleAttributesTable simpleAttributesTable, Contents contents) { TestCase.assertNotNull(contents); TestCase.assertNotNull(contents.getDataType()); TestCase.assertEquals( SimpleAttributesTable.RELATION_TYPE.getDataType(), contents .getDataType().getName()); TestCase.assertEquals( SimpleAttributesTable.RELATION_TYPE.getDataType(), contents.getDataTypeString()); TestCase.assertEquals(simpleAttributesTable.getTableName(), contents.getTableName()); TestCase.assertNotNull(contents.getLastChange()); }
/** * Constructor * * @param tableName * table name * @param columns * list of columns * @param requiredColumns * list of required columns */ private MediaTable(String tableName, List<UserCustomColumn> columns, Collection<String> requiredColumns) { super(tableName, RELATION_TYPE.getName(), RELATION_TYPE.getDataType(), columns, requiredColumns); }
/** * Adds a relationship between the base and related table. Creates the user * mapping table if needed. * * @param baseTableName * base table name * @param relatedTableName * related table name * @param userMappingTable * user mapping table * @param relationType * relation type * @return The relationship that was added */ public ExtendedRelation addRelationship(String baseTableName, String relatedTableName, UserMappingTable userMappingTable, RelationType relationType) { return addRelationship(baseTableName, relatedTableName, userMappingTable, relationType.getName()); }
/** * Validate that the relation name is valid between the base and related * table * * @param baseTableName * base table name * @param relatedTableName * related table name * @param relationName * relation name */ private void validateRelationship(String baseTableName, String relatedTableName, String relationName) { // Verify the base and related tables exist if (!geoPackage.isTable(baseTableName)) { throw new GeoPackageException( "Base Relationship table does not exist: " + baseTableName + ", Relation: " + relationName); } if (!geoPackage.isTable(relatedTableName)) { throw new GeoPackageException( "Related Relationship table does not exist: " + relatedTableName + ", Relation: " + relationName); } // Verify spec defined relation types RelationType relationType = RelationType.fromName(relationName); if (relationType != null) { validateRelationship(baseTableName, relatedTableName, relationType); } }
/** * Constructor * * @param table * user custom table */ SimpleAttributesTable(UserCustomTable table) { super(RELATION_TYPE.getName(), RELATION_TYPE.getDataType(), table); validateColumns(); }
/** * Constructor * * @param tableName * table name * @param columns * list of columns * @param requiredColumns * list of required columns */ private SimpleAttributesTable(String tableName, List<UserCustomColumn> columns, Collection<String> requiredColumns) { super(tableName, RELATION_TYPE.getName(), RELATION_TYPE.getDataType(), columns, requiredColumns); validateColumns(); }
throw new GeoPackageException( "The base table must be a feature table. Relation: " + relationType.getName() + ", Base Table: " + baseTableName + ", Type: " + geoPackage.getTableType(baseTableName)); throw new GeoPackageException( "The related table must be a feature table. Relation: " + relationType.getName() + ", Related Table: " + relatedTableName + ", Type: " case SIMPLE_ATTRIBUTES: case MEDIA: if (!geoPackage.isTableType(relationType.getDataType(), relatedTableName)) { throw new GeoPackageException( "The related table must be a " + relationType.getDataType() + " table. Related Table: " + relatedTableName + ", Type: "
validateContents(mediaTable, contentsDao.queryForId(mediaTable.getTableName())); TestCase.assertEquals(MediaTable.RELATION_TYPE.getDataType(), geoPackage.getTableType(mediaTable.getTableName())); TestCase.assertTrue(geoPackage.isTableType( MediaTable.RELATION_TYPE.getDataType(), mediaTable.getTableName())); TestCase.assertEquals(mediaDao.getTable().getPkColumn().getName(), featureRelation.getRelatedPrimaryColumn()); TestCase.assertEquals(MediaTable.RELATION_TYPE.getName(), featureRelation.getRelationName()); TestCase.assertEquals(mappingTableName, TestCase.assertEquals(mediaDao.getTable().getPkColumn().getName(), mediaRelation.getRelatedPrimaryColumn()); TestCase.assertEquals(MediaTable.RELATION_TYPE.getName(), mediaRelation.getRelationName()); TestCase.assertEquals(mappingTableName,
validateContents(simpleTable, contentsDao.queryForId(simpleTable.getTableName())); TestCase.assertEquals(SimpleAttributesTable.RELATION_TYPE.getDataType(), geoPackage.getTableType(simpleTable.getTableName())); TestCase.assertTrue(geoPackage.isTableType( SimpleAttributesTable.RELATION_TYPE.getDataType(), simpleTable.getTableName())); attributesRelation.getRelatedPrimaryColumn()); TestCase.assertEquals( SimpleAttributesTable.RELATION_TYPE.getName(), attributesRelation.getRelationName()); TestCase.assertEquals(mappingTableName, simpleRelation.getRelatedPrimaryColumn()); TestCase.assertEquals( SimpleAttributesTable.RELATION_TYPE.getName(), simpleRelation.getRelationName()); TestCase.assertEquals(mappingTableName,