Search in sources :

Example 6 with Data

use of org.jumpmind.symmetric.model.Data in project symmetric-ds by JumpMind.

the class DataGapRouteReaderTest method testTransactionalChannelMaxDataToRoute.

@Test
public void testTransactionalChannelMaxDataToRoute() throws Exception {
    nodeChannel.setBatchAlgorithm(TransactionalBatchAlgorithm.NAME);
    nodeChannel.setMaxDataToRoute(3);
    when(parameterService.getInt(ParameterConstants.ROUTING_PEEK_AHEAD_WINDOW)).thenReturn(100);
    List<DataGap> dataGaps = new ArrayList<DataGap>();
    dataGaps.add(new DataGap(0, Long.MAX_VALUE));
    List<Data> data = new ArrayList<Data>();
    data.add(new Data(1, null, null, null, TABLE1, null, null, null, TRAN1, null));
    data.add(new Data(2, null, null, null, TABLE1, null, null, null, TRAN1, null));
    data.add(new Data(3, null, null, null, TABLE1, null, null, null, TRAN2, null));
    data.add(new Data(4, null, null, null, TABLE1, null, null, null, TRAN2, null));
    data.add(new Data(5, null, null, null, TABLE1, null, null, null, TRAN1, null));
    data.add(new Data(6, null, null, null, TABLE1, null, null, null, TRAN1, null));
    ISqlRowMapper<Data> mapper = any();
    when(sqlTemplate.queryForCursor((String) any(), mapper, (Object[]) any(), (int[]) any())).thenReturn(new ListReadCursor(data));
    DataGapRouteReader dataGapRouteReader = buildReader(50, dataGaps);
    dataGapRouteReader.execute();
    BlockingQueue<Data> queue = dataGapRouteReader.getDataQueue();
    assertEquals(5, queue.size());
    Iterator<Data> iter = queue.iterator();
    int index = 0;
    long[] ids = { 1, 2, 5, 6, -1 };
    while (iter.hasNext()) {
        Data d = iter.next();
        assertEquals(ids[index], d.getDataId());
        index++;
    }
}
Also used : ArrayList(java.util.ArrayList) Data(org.jumpmind.symmetric.model.Data) TransformedData(org.jumpmind.symmetric.io.data.transform.TransformedData) DataGap(org.jumpmind.symmetric.model.DataGap) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 7 with Data

use of org.jumpmind.symmetric.model.Data in project symmetric-ds by JumpMind.

the class XmlPublisherDataRouterTest method testPublishUpdateAsXml.

@Test
public void testPublishUpdateAsXml() {
    Data data = new Data();
    data.setDataEventType(DataEventType.UPDATE);
    data.setRowData("2,updated data");
    data.setTriggerHistory(new TriggerHistory(TABLE_NAME, "ID", "ID,DATA"));
    data.setTableName(TABLE_NAME);
    router.routeToNodes(context, new DataMetaData(data, table, null, null), null, false, false, null);
    router.contextCommitted(context);
    assertEquals(UPDATE_XML.trim(), output.toString().trim());
}
Also used : TriggerHistory(org.jumpmind.symmetric.model.TriggerHistory) Data(org.jumpmind.symmetric.model.Data) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) Test(org.junit.Test)

Example 8 with Data

use of org.jumpmind.symmetric.model.Data in project symmetric-ds by JumpMind.

the class XmlPublisherDataRouterTest method testPublishInsertAsXml.

@Test
public void testPublishInsertAsXml() {
    Data data = new Data();
    data.setDataEventType(DataEventType.INSERT);
    data.setRowData("1,new inserted data");
    data.setTriggerHistory(new TriggerHistory(TABLE_NAME, "ID", "ID,DATA"));
    data.setTableName(TABLE_NAME);
    router.routeToNodes(context, new DataMetaData(data, table, null, null), null, false, false, null);
    router.contextCommitted(context);
    assertEquals(INSERT_XML.trim(), output.toString().trim());
}
Also used : TriggerHistory(org.jumpmind.symmetric.model.TriggerHistory) Data(org.jumpmind.symmetric.model.Data) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) Test(org.junit.Test)

Example 9 with Data

use of org.jumpmind.symmetric.model.Data in project symmetric-ds by JumpMind.

the class XmlPublisherDataRouterTest method testPublishDeleteAsXml.

@Test
public void testPublishDeleteAsXml() {
    Data data = new Data();
    data.setDataEventType(DataEventType.DELETE);
    data.setOldData("3,old deleted data");
    data.setTriggerHistory(new TriggerHistory(TABLE_NAME, "ID", "ID,DATA"));
    data.setTableName(TABLE_NAME);
    router.routeToNodes(context, new DataMetaData(data, table, null, null), null, false, false, null);
    router.contextCommitted(context);
    assertEquals(DELETE_XML.trim(), output.toString().trim());
}
Also used : TriggerHistory(org.jumpmind.symmetric.model.TriggerHistory) Data(org.jumpmind.symmetric.model.Data) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) Test(org.junit.Test)

Example 10 with Data

use of org.jumpmind.symmetric.model.Data in project symmetric-ds by JumpMind.

the class AbstractFileParsingRouter method deleteFileIfNecessary.

public void deleteFileIfNecessary(DataMetaData dataMetaData) {
    Data data = dataMetaData.getData();
    Table snapshotTable = dataMetaData.getTable();
    if (data.getDataEventType() == DataEventType.INSERT || data.getDataEventType() == DataEventType.UPDATE) {
        List<File> filesToDelete = new ArrayList<File>();
        Map<String, String> columnData = data.toColumnNameValuePairs(snapshotTable.getColumnNames(), CsvData.ROW_DATA);
        FileSnapshot fileSnapshot = new FileSnapshot();
        fileSnapshot.setTriggerId(columnData.get("TRIGGER_ID"));
        fileSnapshot.setRouterId(columnData.get("ROUTER_ID"));
        fileSnapshot.setFileModifiedTime(Long.parseLong(columnData.get("FILE_MODIFIED_TIME")));
        fileSnapshot.setFileName(columnData.get("FILE_NAME"));
        fileSnapshot.setRelativeDir(columnData.get("RELATIVE_DIR"));
        fileSnapshot.setLastEventType(LastEventType.fromCode(columnData.get("LAST_EVENT_TYPE")));
        FileTriggerRouter triggerRouter = getEngine().getFileSyncService().getFileTriggerRouter(fileSnapshot.getTriggerId(), fileSnapshot.getRouterId());
        if (triggerRouter != null) {
            FileTrigger fileTrigger = triggerRouter.getFileTrigger();
            if (fileTrigger.isDeleteAfterSync()) {
                File file = fileTrigger.createSourceFile(fileSnapshot);
                if (!file.isDirectory()) {
                    filesToDelete.add(file);
                    if (fileTrigger.isSyncOnCtlFile()) {
                        File ctlFile = getEngine().getFileSyncService().getControleFile(file);
                        filesToDelete.add(ctlFile);
                    }
                }
            } else if (getEngine().getParameterService().is(ParameterConstants.FILE_SYNC_DELETE_CTL_FILE_AFTER_SYNC, false)) {
                File file = fileTrigger.createSourceFile(fileSnapshot);
                if (!file.isDirectory()) {
                    if (fileTrigger.isSyncOnCtlFile()) {
                        File ctlFile = getEngine().getFileSyncService().getControleFile(file);
                        filesToDelete.add(ctlFile);
                    }
                }
            }
        }
        if (filesToDelete != null && filesToDelete.size() > 0) {
            for (File file : filesToDelete) {
                if (file != null && file.exists()) {
                    log.debug("Deleting the '{}' file", file.getAbsolutePath());
                    boolean deleted = FileUtils.deleteQuietly(file);
                    if (!deleted) {
                        log.warn("Failed to 'delete on sync' the {} file", file.getAbsolutePath());
                    }
                }
                file = null;
            }
            filesToDelete = null;
        }
    }
}
Also used : FileSnapshot(org.jumpmind.symmetric.model.FileSnapshot) Table(org.jumpmind.db.model.Table) FileTriggerRouter(org.jumpmind.symmetric.model.FileTriggerRouter) FileTrigger(org.jumpmind.symmetric.model.FileTrigger) ArrayList(java.util.ArrayList) Data(org.jumpmind.symmetric.model.Data) CsvData(org.jumpmind.symmetric.io.data.CsvData) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) File(java.io.File)

Aggregations

Data (org.jumpmind.symmetric.model.Data)42 TriggerHistory (org.jumpmind.symmetric.model.TriggerHistory)19 DataMetaData (org.jumpmind.symmetric.model.DataMetaData)18 Test (org.junit.Test)18 CsvData (org.jumpmind.symmetric.io.data.CsvData)16 Table (org.jumpmind.db.model.Table)14 ArrayList (java.util.ArrayList)12 Node (org.jumpmind.symmetric.model.Node)12 HashSet (java.util.HashSet)11 NodeChannel (org.jumpmind.symmetric.model.NodeChannel)10 Router (org.jumpmind.symmetric.model.Router)9 DataGap (org.jumpmind.symmetric.model.DataGap)7 TransformedData (org.jumpmind.symmetric.io.data.transform.TransformedData)6 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)6 Trigger (org.jumpmind.symmetric.model.Trigger)5 TriggerRouter (org.jumpmind.symmetric.model.TriggerRouter)5 File (java.io.File)3 ISqlTransaction (org.jumpmind.db.sql.ISqlTransaction)3 TransformTableNodeGroupLink (org.jumpmind.symmetric.service.impl.TransformService.TransformTableNodeGroupLink)3 Row (org.jumpmind.db.sql.Row)2