@Test public void testCommentsInDynamicVdb() throws Exception { MockFileBuilder portfolioXmlFile = VdbTestUtils.mockPortfolioVdbXmlFile(); DynamicVdb vdb = new DynamicVdb(portfolioXmlFile.getResourceFile()); CommentSets vdbComments = vdb.getComments(); assertNotNull(vdbComments); assertEquals(2, vdbComments.size()); checkComment(Comments.VDB_TITLE, vdbComments, EMPTY_STRING, 0); checkComment(Comments.VDB_TITLE_2, vdbComments, EMPTY_STRING, 1); checkComment(Comments.VDB_DESCRIPTION, vdbComments, DESCRIPTION, 0); CommentSets propertyComments = vdb.getPropertyComments("UseConnectorMetadata"); assertNotNull(propertyComments); checkComment(Comments.USE_CONNECTOR_PROPERTY, propertyComments, EMPTY_STRING, 0); DynamicModel model = findModel(vdb.getDynamicModels(), "MarketData"); checkComment(Comments.MODEL_MARKETDATA, model.getComments(), EMPTY_STRING, 0); VdbSource source = model.getSources()[0]; assertEquals("text-connector", source.getName()); checkComment(Comments.MARKETDATA_TEXT_CONNECTOR, source.getComments(), EMPTY_STRING, 0); model = findModel(vdb.getDynamicModels(), "Accounts"); propertyComments = model.getPropertyComments("importer.useFullSchemaName"); assertNotNull(propertyComments); checkComment(Comments.ACCOUNTS_USEFULLSCHEMA_PROPERTY, propertyComments, EMPTY_STRING, 0); source = model.getSources()[0]; assertEquals("h2-connector", source.getName()); checkComment(Comments.ACCOUNT_H2_CONNECTOR, source.getComments(), EMPTY_STRING, 0); model = findModel(vdb.getDynamicModels(), "PersonalValuations"); propertyComments = model.getPropertyComments("importer.headerRowNumber"); assertNotNull(propertyComments); checkComment(Comments.IMPORTER_HEADER_ROW_NUMBER_PROPERTY, propertyComments, EMPTY_STRING, 0); propertyComments = model.getPropertyComments("importer.ExcelFileName"); assertNotNull(propertyComments); checkComment(Comments.IMPORT_EXCEL_FILE_NAME_PROPERTY, propertyComments, EMPTY_STRING, 0); Metadata metadata = model.getMetadata(); assertNotNull(metadata); checkComment(Comments.METADATA_ELEMENT, metadata.getComments(), EMPTY_STRING, 0); Iterator<DataRole> dataRoleIter = vdb.getDataRoles().iterator(); DataRole dataRole = dataRoleIter.next(); assertNotNull(dataRole); checkComment(Comments.DATA_ROLE, dataRole.getComments(), EMPTY_STRING, 0); checkComment(Comments.DATA_ROLE_DESCRIPTION, dataRole.getComments(), DESCRIPTION, 0); checkComment( Comments.SUPERVISOR_MAPPED_ROLE, dataRole.getComments(), MAPPED_ROLE_NAME + HYPHEN + "supervisor", 0); checkComment( Comments.DEPT_SUPER_MAPPED_ROLE, dataRole.getComments(), MAPPED_ROLE_NAME + HYPHEN + "dept-supervisor", 0); Collection<Permission> permissions = dataRole.getPermissions(); assertNotNull(permissions); Iterator<Permission> permIter = permissions.iterator(); assertTrue(permIter.hasNext()); Permission permission = permIter.next(); assertEquals("Accounts", permission.getName()); checkComment(Comments.PERMISSION_ON_ACCOUNTS_TABLE, permission.getComments(), EMPTY_STRING, 0); checkComment( Comments.RESOURCE_NAME_REFERENCED_BY_PERMISSION, permission.getComments(), RESOURCE_NAME, 0); checkComment(Comments.DENY_CREATE, permission.getComments(), ALLOW_CREATE, 0); checkComment(Comments.ALLOW_READ, permission.getComments(), ALLOW_READ, 0); checkComment(Comments.ALLOW_UPDATE, permission.getComments(), ALLOW_UPDATE, 0); permission = permIter.next(); assertEquals("Accounts.Customer", permission.getName()); CommentSets conditionComments = permission.getConditionComments(); assertNotNull(conditionComments); checkComment(Comments.PERMISSION_USING_A_CONDITION, conditionComments, EMPTY_STRING, 0); permission = permIter.next(); assertEquals("Accounts.Customer.SSN", permission.getName()); CommentSets maskComments = permission.getMaskComments(); assertNotNull(maskComments); checkComment(Comments.PERMISSION_MASK, maskComments, EMPTY_STRING, 0); }
@Test public void testWriteDynamicVdbWithComments() throws Exception { MockFileBuilder portfolioXmlFile = VdbTestUtils.mockPortfolioVdbXmlFile(); DynamicVdb vdb = new DynamicVdb(portfolioXmlFile.getResourceFile()); StringWriter destination = new StringWriter(); vdb.write(destination); Document vdbDoc = VdbTestUtils.readDocument(destination.toString(), false); assertNotNull(vdbDoc); System.out.println(VdbTestUtils.printDocument(vdbDoc)); Element vdbElement = vdbDoc.getDocumentElement(); Node commentNode = prevComment(vdbElement); checkComment(Comments.VDB_TITLE_2, commentNode); commentNode = prevComment(commentNode); checkComment(Comments.VDB_TITLE, commentNode); Node elementNode = child(vdbElement, DESCRIPTION, null); commentNode = prevComment(elementNode); checkComment(Comments.VDB_DESCRIPTION, commentNode); elementNode = nextSibling(elementNode, PROPERTY); commentNode = prevComment(elementNode); checkComment(Comments.USE_CONNECTOR_PROPERTY, commentNode); elementNode = child(vdbElement, MODEL, "MarketData"); Node modelNode = elementNode; commentNode = prevComment(modelNode); checkComment(Comments.MODEL_MARKETDATA, commentNode); Node sourceNode = child(modelNode, SOURCE, null); commentNode = prevComment(sourceNode); checkComment(Comments.MARKETDATA_TEXT_CONNECTOR, commentNode); modelNode = child(vdbElement, MODEL, "Accounts"); elementNode = child(modelNode, PROPERTY, "importer.useFullSchemaName"); commentNode = prevComment(elementNode); checkComment(Comments.ACCOUNTS_USEFULLSCHEMA_PROPERTY, commentNode); sourceNode = child(modelNode, SOURCE, null); commentNode = prevComment(sourceNode); checkComment(Comments.ACCOUNT_H2_CONNECTOR, commentNode); modelNode = child(vdbElement, MODEL, "PersonalValuations"); elementNode = child(modelNode, PROPERTY, "importer.headerRowNumber"); commentNode = prevComment(elementNode); checkComment(Comments.IMPORTER_HEADER_ROW_NUMBER_PROPERTY, commentNode); elementNode = child(modelNode, PROPERTY, "importer.ExcelFileName"); commentNode = prevComment(elementNode); checkComment(Comments.IMPORT_EXCEL_FILE_NAME_PROPERTY, commentNode); elementNode = child(modelNode, METADATA, null); commentNode = prevComment(elementNode); checkComment(Comments.METADATA_ELEMENT, commentNode); elementNode = child(vdbElement, DATA_ROLE, null); Node dataRoleNode = elementNode; commentNode = prevComment(elementNode); checkComment(Comments.DATA_ROLE, commentNode); elementNode = child(dataRoleNode, DESCRIPTION, null); commentNode = prevComment(elementNode); checkComment(Comments.DATA_ROLE_DESCRIPTION, commentNode); elementNode = child(dataRoleNode, MAPPED_ROLE_NAME, null); commentNode = prevComment(elementNode); checkComment(Comments.SUPERVISOR_MAPPED_ROLE, commentNode); elementNode = nextSibling(elementNode, MAPPED_ROLE_NAME); commentNode = prevComment(elementNode); checkComment(Comments.DEPT_SUPER_MAPPED_ROLE, commentNode); elementNode = child(dataRoleNode, PERMISSION, null); Node permNode = elementNode; commentNode = prevComment(elementNode); checkComment(Comments.PERMISSION_ON_ACCOUNTS_TABLE, commentNode); elementNode = child(permNode, RESOURCE_NAME, null); commentNode = prevComment(elementNode); checkComment(Comments.RESOURCE_NAME_REFERENCED_BY_PERMISSION, commentNode); elementNode = nextSibling(elementNode, ALLOW_CREATE); commentNode = prevComment(elementNode); checkComment(Comments.DENY_CREATE, commentNode); elementNode = nextSibling(elementNode, ALLOW_READ); commentNode = prevComment(elementNode); checkComment(Comments.ALLOW_READ, commentNode); elementNode = nextSibling(elementNode, ALLOW_UPDATE); commentNode = prevComment(elementNode); checkComment(Comments.ALLOW_UPDATE, commentNode); permNode = nextSibling(permNode, PERMISSION); elementNode = child(permNode, CONDITION, null); commentNode = prevComment(elementNode); checkComment(Comments.PERMISSION_USING_A_CONDITION, commentNode); permNode = nextSibling(permNode, PERMISSION); elementNode = child(permNode, MASK, null); commentNode = prevComment(elementNode); checkComment(Comments.PERMISSION_MASK, commentNode); }
@Test public void convertDynamicVdbToXmiVdb() throws Exception { DynamicVdb dynVdb = VdbTestUtils.mockPortfolioDynamicVdb(modelWorkspaceMock); assertNotNull(dynVdb); IFile dynVdbSrcFile = dynVdb.getSourceFile(); IProject parent = dynVdbSrcFile.getProject(); assertNotNull(parent); File destFile = File.createTempFile(dynVdb.getName(), ITeiidVdb.VDB_DOT_EXTENSION); MockFileBuilder destination = new MockFileBuilder(destFile); XmiVdb xmiVdb = dynVdb.convert(XmiVdb.class, destination.getResourceFile(), new Properties()); assertEquals(dynVdb.getName(), xmiVdb.getName()); assertEquals(dynVdb.getDescription(), xmiVdb.getDescription()); for (Map.Entry<Object, Object> entry : dynVdb.getProperties().entrySet()) { System.out.println( "VDB Property: " + entry.getValue() + " == " + xmiVdb.getProperties().getProperty(entry.getKey().toString())); assertEquals(entry.getValue(), xmiVdb.getProperties().getProperty(entry.getKey().toString())); } assertEquals(destination.getResourceFile(), xmiVdb.getSourceFile()); assertEquals(dynVdb.getVersion(), xmiVdb.getVersion()); assertEquals(dynVdb.getConnectionType(), xmiVdb.getConnectionType()); assertEquals(dynVdb.isPreview(), xmiVdb.isPreview()); assertEquals(dynVdb.getQueryTimeout(), xmiVdb.getQueryTimeout()); assertEquals(dynVdb.getAllowedLanguages().size(), xmiVdb.getAllowedLanguages().size()); List<String> dynLanguageValues = Arrays.asList(xmiVdb.getAllowedLanguages().getAllowedLanguageValues()); for (String language : dynVdb.getAllowedLanguages().getAllowedLanguageValues()) { assertTrue(dynLanguageValues.contains(language)); } assertEquals(dynVdb.getSecurityDomain(), xmiVdb.getSecurityDomain()); assertEquals(dynVdb.getGssPattern(), xmiVdb.getGssPattern()); assertEquals(dynVdb.getPasswordPattern(), xmiVdb.getPasswordPattern()); assertEquals(dynVdb.getAuthenticationType(), xmiVdb.getAuthenticationType()); assertEquals(dynVdb.getValidationDateTime(), xmiVdb.getValidationDateTime()); assertEquals(dynVdb.isAutoGenerateRESTWar(), xmiVdb.isAutoGenerateRESTWar()); assertEquals(dynVdb.getImports().size(), xmiVdb.getImports().size()); for (VdbImportVdbEntry entry : dynVdb.getImports()) { assertTrue(xmiVdb.getImports().contains(entry)); } assertEquals(dynVdb.getTranslators().size(), xmiVdb.getTranslators().size()); for (TranslatorOverride translator : dynVdb.getTranslators()) { assertTrue(xmiVdb.getTranslators().contains(translator)); } assertEquals(dynVdb.getDataRoles().size(), xmiVdb.getDataRoles().size()); for (DataRole role : dynVdb.getDataRoles()) { assertTrue(xmiVdb.getDataRoles().contains(role)); } assertEquals(dynVdb.getDynamicModels().size(), xmiVdb.getModelEntries().size()); for (DynamicModel dynModel : dynVdb.getDynamicModels()) { VdbModelEntry modelEntry = null; Collection<VdbModelEntry> entries = xmiVdb.getModelEntries(); for (VdbModelEntry entry : entries) { if (dynModel.getName().equals(entry.getName())) { modelEntry = entry; break; } } assertNotNull(modelEntry); assertEquals(dynModel.getDescription(), modelEntry.getDescription()); for (Map.Entry<Object, Object> prop : dynModel.getProperties().entrySet()) { assertEquals( prop.getValue(), modelEntry.getProperties().getProperty(prop.getKey().toString())); } VdbSourceInfo sourceInfo = modelEntry.getSourceInfo(); assertEquals(dynModel.getModelType().toString(), modelEntry.getType()); assertEquals(dynModel.isMultiSource(), sourceInfo.isMultiSource()); assertEquals(dynModel.doAddColumn(), sourceInfo.isAddColumn()); assertEquals(dynModel.getColumnAlias(), sourceInfo.getColumnAlias()); assertEquals(dynModel.getSources().length, sourceInfo.getSources().size()); List<VdbSource> entrySources = new ArrayList<VdbSource>(sourceInfo.getSources()); for (VdbSource source : dynModel.getSources()) { assertTrue(entrySources.contains(source)); } } }