Example #1
0
  @Override
  public void visit(MetadataElement element) {
    if (!checkContext(METADATA)) return;

    CommentSets comments = element.getComments();
    insertComments(this.context, comments.getElementCommentSet());
  }
Example #2
0
  @Override
  public void visit(ModelElement modelElement) {
    if (!checkContext(MODEL)) return;

    if (!nameAttribute(modelElement.getName())) return;

    CommentSets commentSets = modelElement.getComments();
    List<String> comments = commentSets.getElementCommentSet();
    insertComments(this.context, comments);

    Node modelContext = this.context;
    this.context = modelContext.getFirstChild();
    while (this.context != null) {

      if (checkContext(DESCRIPTION)) {
        comments = commentSets.getCommentSet(DESCRIPTION);
        insertComments(this.context, comments);

        this.context = this.context.getNextSibling();
        continue;
      }

      if (checkContext(PROPERTY)) {
        for (PropertyElement pe : modelElement.getProperties()) pe.accept(this);

        this.context = this.context.getNextSibling();
        continue;
      }

      if (checkContext(SOURCE)) {
        for (SourceElement se : modelElement.getSources()) se.accept(this);

        this.context = this.context.getNextSibling();
        continue;
      }

      if (checkContext(METADATA)) {
        for (MetadataElement me : modelElement.getMetadata()) me.accept(this);
      }

      this.context = this.context.getNextSibling();
    }

    this.context = modelContext;
  }
  @Test
  public void testCommentReader() throws Exception {
    MockFileBuilder portfolioXmlFile = VdbTestUtils.mockPortfolioVdbXmlFile();
    File portfolioFile = portfolioXmlFile.getRealFile();
    InputStream fileStream = new FileInputStream(portfolioFile);

    JAXBContext jaxbContext = JAXBContext.newInstance(new Class<?>[] {VdbElement.class});
    Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
    unmarshaller.setSchema(VdbUtil.getManifestSchema());
    VdbElement manifest = (VdbElement) unmarshaller.unmarshal(fileStream);

    fileStream.close();

    CommentReader reader = new CommentReader(manifest);
    reader.read(portfolioFile);

    CommentSets vdbComments = manifest.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);

    assertEquals(1, manifest.getProperties().size());
    PropertyElement propertyElement = manifest.getProperties().get(0);
    checkComment(Comments.USE_CONNECTOR_PROPERTY, propertyElement.getComments(), EMPTY_STRING, 0);

    ModelElement modelElement = manifest.getModels().get(0);
    assertEquals("MarketData", modelElement.getName());
    checkComment(Comments.MODEL_MARKETDATA, modelElement.getComments(), EMPTY_STRING, 0);

    SourceElement sourceElement = modelElement.getSources().get(0);
    assertEquals("text-connector", sourceElement.getName());
    checkComment(Comments.MARKETDATA_TEXT_CONNECTOR, sourceElement.getComments(), EMPTY_STRING, 0);

    modelElement = manifest.getModels().get(1);
    assertEquals("Accounts", modelElement.getName());
    propertyElement = modelElement.getProperties().get(0);
    assertNotNull(propertyElement);
    checkComment(
        Comments.ACCOUNTS_USEFULLSCHEMA_PROPERTY, propertyElement.getComments(), EMPTY_STRING, 0);

    sourceElement = modelElement.getSources().get(0);
    assertEquals("h2-connector", sourceElement.getName());
    checkComment(Comments.ACCOUNT_H2_CONNECTOR, sourceElement.getComments(), EMPTY_STRING, 0);

    modelElement = manifest.getModels().get(2);
    assertEquals("PersonalValuations", modelElement.getName());
    propertyElement = modelElement.getProperties().get(0);
    assertNotNull(propertyElement);
    checkComment(
        Comments.IMPORTER_HEADER_ROW_NUMBER_PROPERTY,
        propertyElement.getComments(),
        EMPTY_STRING,
        0);

    propertyElement = modelElement.getProperties().get(1);
    assertNotNull(propertyElement);
    checkComment(
        Comments.IMPORT_EXCEL_FILE_NAME_PROPERTY, propertyElement.getComments(), EMPTY_STRING, 0);

    MetadataElement metadataElement = modelElement.getMetadata().get(0);
    assertNotNull(metadataElement);
    checkComment(Comments.METADATA_ELEMENT, metadataElement.getComments(), EMPTY_STRING, 0);

    DataRoleElement dataRoleElement = manifest.getDataPolicies().get(0);
    assertNotNull(dataRoleElement);
    checkComment(Comments.DATA_ROLE, dataRoleElement.getComments(), EMPTY_STRING, 0);
    checkComment(Comments.DATA_ROLE_DESCRIPTION, dataRoleElement.getComments(), DESCRIPTION, 0);
    checkComment(
        Comments.SUPERVISOR_MAPPED_ROLE,
        dataRoleElement.getComments(),
        MAPPED_ROLE_NAME + HYPHEN + "supervisor",
        0);
    checkComment(
        Comments.DEPT_SUPER_MAPPED_ROLE,
        dataRoleElement.getComments(),
        MAPPED_ROLE_NAME + HYPHEN + "dept-supervisor",
        0);

    List<PermissionElement> permissionElements = dataRoleElement.getPermissions();
    assertNotNull(permissionElements);
    assertTrue(!permissionElements.isEmpty());
    PermissionElement permissionElement = permissionElements.get(0);
    assertEquals("Accounts", permissionElement.getResourceName());
    checkComment(
        Comments.PERMISSION_ON_ACCOUNTS_TABLE, permissionElement.getComments(), EMPTY_STRING, 0);
    checkComment(
        Comments.RESOURCE_NAME_REFERENCED_BY_PERMISSION,
        permissionElement.getComments(),
        RESOURCE_NAME,
        0);
    checkComment(Comments.DENY_CREATE, permissionElement.getComments(), ALLOW_CREATE, 0);
    checkComment(Comments.ALLOW_READ, permissionElement.getComments(), ALLOW_READ, 0);
    checkComment(Comments.ALLOW_UPDATE, permissionElement.getComments(), ALLOW_UPDATE, 0);

    permissionElement = permissionElements.get(1);
    assertEquals("Accounts.Customer", permissionElement.getResourceName());
    ConditionElement conditionElement = permissionElement.getCondition();
    checkComment(
        Comments.PERMISSION_USING_A_CONDITION, conditionElement.getComments(), EMPTY_STRING, 0);

    permissionElement = permissionElements.get(2);
    assertEquals("Accounts.Customer.SSN", permissionElement.getResourceName());
    MaskElement maskElement = permissionElement.getMask();
    checkComment(Comments.PERMISSION_MASK, maskElement.getComments(), EMPTY_STRING, 0);
  }