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++;
}
}
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());
}
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());
}
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());
}
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;
}
}
}
Aggregations