com.adaptris.core.services.jdbc.AllRowsMetadataTranslatorTest.java Source code

Java tutorial

Introduction

Here is the source code for com.adaptris.core.services.jdbc.AllRowsMetadataTranslatorTest.java

Source

/*
 * Copyright 2015 Adaptris Ltd.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
*/

package com.adaptris.core.services.jdbc;

import java.util.List;

import org.apache.commons.lang.StringUtils;

import com.adaptris.core.AdaptrisMessage;

@SuppressWarnings("deprecation")
public class AllRowsMetadataTranslatorTest extends JdbcQueryServiceCase {

    private static final String ALL_ROWS_QUERY = "SELECT adapter_version, message_translator_type FROM adapter_type_version ";
    private static final String ALL_ROWS_QUERY_ALIASES = "SELECT adapter_version as MY_VERSION, message_translator_type as MY_TYPE FROM adapter_type_version ";

    private static final String ALL_ROWS_QUERY_NAMED_PARAMS = "SELECT adapter_version, message_translator_type FROM adapter_type_version "
            + "WHERE adapter_version!=#adapterVersion";

    public AllRowsMetadataTranslatorTest(String arg0) {
        super(arg0);
    }

    @Override
    protected void setUp() throws Exception {

    }

    public void testJdbcDataQueryService() throws Exception {
        createDatabase();
        List<AdapterTypeVersion> dbItems = generate(10);
        AdapterTypeVersion entry = dbItems.get(0);

        populateDatabase(dbItems, false);
        JdbcDataQueryService s = createMetadataService();
        s.setStatementCreator(new ConfiguredSQLStatement(ALL_ROWS_QUERY));
        s.getStatementParameters().clear();
        AllRowsMetadataTranslator t = new AllRowsMetadataTranslator();
        s.setResultSetTranslator(t);
        AdaptrisMessage msg = createMessage(entry);
        execute(s, msg);
        assertEquals(XML_PAYLOAD_PREFIX + entry.getUniqueId() + XML_PAYLOAD_SUFFIX, msg.getContent());
        String metadataKeyColumnVersion = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_VERSION
                + t.getSeparator();
        String metadataKeyColumnType = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_TYPE + t.getSeparator();
        for (int i = 0; i < 10; i++) {
            assertTrue(metadataKeyColumnVersion + i, msg.headersContainsKey(metadataKeyColumnVersion + i));
            assertTrue(metadataKeyColumnType + i, msg.headersContainsKey(metadataKeyColumnType + i));

        }

        assertFalse(msg.headersContainsKey(JdbcDataQueryService.class.getCanonicalName()));
    }

    public void testJdbcDataQueryService_Aliases() throws Exception {
        createDatabase();
        List<AdapterTypeVersion> dbItems = generate(10);
        AdapterTypeVersion entry = dbItems.get(0);

        populateDatabase(dbItems, false);
        JdbcDataQueryService s = createMetadataService();
        s.setStatementCreator(new ConfiguredSQLStatement(ALL_ROWS_QUERY_ALIASES));
        s.getStatementParameters().clear();
        AllRowsMetadataTranslator t = new AllRowsMetadataTranslator();
        t.setResultCountMetadataItem("TotalRows");
        s.setResultSetTranslator(t);
        AdaptrisMessage msg = createMessage(entry);
        execute(s, msg);
        assertEquals(XML_PAYLOAD_PREFIX + entry.getUniqueId() + XML_PAYLOAD_SUFFIX, msg.getContent());
        String metadataKeyColumnVersion = t.getMetadataKeyPrefix() + t.getSeparator() + "MY_VERSION"
                + t.getSeparator();
        String metadataKeyColumnType = t.getMetadataKeyPrefix() + t.getSeparator() + "MY_TYPE" + t.getSeparator();
        for (int i = 0; i < 10; i++) {
            assertTrue(metadataKeyColumnVersion + i, msg.headersContainsKey(metadataKeyColumnVersion + i));
            assertTrue(metadataKeyColumnType + i, msg.headersContainsKey(metadataKeyColumnType + i));

        }

        assertFalse(msg.headersContainsKey(JdbcDataQueryService.class.getCanonicalName()));
        assertTrue(msg.headersContainsKey("TotalRows"));
        assertEquals("10", msg.getMetadataValue("TotalRows"));
    }

    public void testJdbcDataQueryServiceWithResultCount() throws Exception {
        createDatabase();
        List<AdapterTypeVersion> dbItems = generate(10);
        AdapterTypeVersion entry = dbItems.get(0);

        populateDatabase(dbItems, false);
        JdbcDataQueryService s = createMetadataService();
        s.setStatementCreator(new ConfiguredSQLStatement(ALL_ROWS_QUERY));
        s.getStatementParameters().clear();
        AllRowsMetadataTranslator t = new AllRowsMetadataTranslator();
        t.setResultCountMetadataItem("resultCount");
        s.setResultSetTranslator(t);
        AdaptrisMessage msg = createMessage(entry);
        execute(s, msg);

        assertTrue(msg.headersContainsKey("resultCount"));
        assertEquals("10", msg.getMetadataValue("resultCount"));
    }

    public void testJdbcDataQueryServiceWithNamedParams() throws Exception {
        createDatabase();
        List<AdapterTypeVersion> dbItems = generate(10);
        AdapterTypeVersion entry = dbItems.get(0);

        populateDatabase(dbItems, false);
        JdbcDataQueryService s = createMetadataService();
        s.setStatementCreator(new ConfiguredSQLStatement(ALL_ROWS_QUERY_NAMED_PARAMS));

        StatementParameter adapterVersion = new StatementParameter("xxx", "java.lang.String",
                StatementParameter.QueryType.constant);
        adapterVersion.setName("adapterVersion");

        s.getStatementParameters().add(adapterVersion);
        s.setParameterApplicator(new NamedParameterApplicator());

        AllRowsMetadataTranslator t = new AllRowsMetadataTranslator();
        s.setResultSetTranslator(t);
        AdaptrisMessage msg = createMessage(entry);
        execute(s, msg);
        assertEquals(XML_PAYLOAD_PREFIX + entry.getUniqueId() + XML_PAYLOAD_SUFFIX, msg.getContent());
        String metadataKeyColumnVersion = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_VERSION
                + t.getSeparator();
        String metadataKeyColumnType = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_TYPE + t.getSeparator();
        for (int i = 0; i < 10; i++) {
            assertTrue(metadataKeyColumnVersion + i, msg.headersContainsKey(metadataKeyColumnVersion + i));
            assertTrue(metadataKeyColumnType + i, msg.headersContainsKey(metadataKeyColumnType + i));

        }

        assertFalse(msg.headersContainsKey(JdbcDataQueryService.class.getCanonicalName()));
    }

    public void testServiceWithStyleUpperCase() throws Exception {
        createDatabase();
        List<AdapterTypeVersion> dbItems = generate(10);
        AdapterTypeVersion entry = dbItems.get(0);

        populateDatabase(dbItems, false);
        JdbcDataQueryService s = createMetadataService();
        s.setStatementCreator(new ConfiguredSQLStatement(ALL_ROWS_QUERY));
        s.getStatementParameters().clear();
        AllRowsMetadataTranslator t = new AllRowsMetadataTranslator();
        t.setColumnNameStyle(ResultSetTranslatorImp.ColumnStyle.UpperCase);
        s.setResultSetTranslator(t);
        AdaptrisMessage msg = createMessage(entry);
        execute(s, msg);
        assertEquals(XML_PAYLOAD_PREFIX + entry.getUniqueId() + XML_PAYLOAD_SUFFIX, msg.getContent());
        String metadataKeyColumnVersion = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_VERSION.toUpperCase()
                + t.getSeparator();
        String metadataKeyColumnType = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_TYPE.toUpperCase()
                + t.getSeparator();
        for (int i = 0; i < 10; i++) {
            assertTrue(metadataKeyColumnVersion + i, msg.headersContainsKey(metadataKeyColumnVersion + i));
            assertTrue(metadataKeyColumnType + i, msg.headersContainsKey(metadataKeyColumnType + i));

        }

    }

    public void testServiceWithStyleLowerCase() throws Exception {
        createDatabase();
        List<AdapterTypeVersion> dbItems = generate(10);
        AdapterTypeVersion entry = dbItems.get(0);

        populateDatabase(dbItems, false);
        JdbcDataQueryService s = createMetadataService();
        s.setStatementCreator(new ConfiguredSQLStatement(ALL_ROWS_QUERY));
        s.getStatementParameters().clear();
        AllRowsMetadataTranslator t = new AllRowsMetadataTranslator();
        t.setColumnNameStyle(ResultSetTranslatorImp.ColumnStyle.LowerCase);

        s.setResultSetTranslator(t);
        AdaptrisMessage msg = createMessage(entry);
        execute(s, msg);
        String metadataKeyColumnVersion = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_VERSION.toLowerCase()
                + t.getSeparator();
        String metadataKeyColumnType = t.getMetadataKeyPrefix() + t.getSeparator() + COLUMN_TYPE.toLowerCase()
                + t.getSeparator();
        System.out.println(msg);
        for (int i = 0; i < 10; i++) {
            assertTrue(metadataKeyColumnVersion + i, msg.headersContainsKey(metadataKeyColumnVersion + i));
            assertTrue(metadataKeyColumnType + i, msg.headersContainsKey(metadataKeyColumnType + i));

        }

    }

    public void testServiceWithStyleCapitalize() throws Exception {
        createDatabase();
        List<AdapterTypeVersion> dbItems = generate(10);
        AdapterTypeVersion entry = dbItems.get(0);

        populateDatabase(dbItems, false);
        JdbcDataQueryService s = createMetadataService();
        s.setStatementCreator(new ConfiguredSQLStatement(ALL_ROWS_QUERY));
        s.getStatementParameters().clear();
        AllRowsMetadataTranslator t = new AllRowsMetadataTranslator();
        t.setColumnNameStyle(ResultSetTranslatorImp.ColumnStyle.Capitalize);
        s.setResultSetTranslator(t);
        AdaptrisMessage msg = createMessage(entry);
        execute(s, msg);
        String metadataKeyColumnVersion = t.getMetadataKeyPrefix() + t.getSeparator()
                + StringUtils.capitalize(COLUMN_VERSION) + t.getSeparator();
        String metadataKeyColumnType = t.getMetadataKeyPrefix() + t.getSeparator()
                + StringUtils.capitalize(COLUMN_TYPE) + t.getSeparator();
        for (int i = 0; i < 10; i++) {
            assertTrue(metadataKeyColumnVersion + i, msg.headersContainsKey(metadataKeyColumnVersion + i));
            assertTrue(metadataKeyColumnType + i, msg.headersContainsKey(metadataKeyColumnType + i));
        }
    }

    @Override
    protected AllRowsMetadataTranslator createTranslatorForConfig() {
        return new AllRowsMetadataTranslator();
    }

}