Bladeren bron

新增DCN监听Listener

sunyj 9 jaren geleden
bovenliggende
commit
960acb2bcf
1 gewijzigde bestanden met toevoegingen van 51 en 0 verwijderingen
  1. 51 0
      search-console/src/main/java/com/uas/search/console/dcn/DCNListener.java

+ 51 - 0
search-console/src/main/java/com/uas/search/console/dcn/DCNListener.java

@@ -0,0 +1,51 @@
+package com.uas.search.console.dcn;
+
+import org.apache.log4j.Logger;
+
+import oracle.jdbc.dcn.DatabaseChangeEvent;
+import oracle.jdbc.dcn.DatabaseChangeListener;
+import oracle.jdbc.dcn.QueryChangeDescription;
+import oracle.jdbc.dcn.RowChangeDescription;
+import oracle.jdbc.dcn.RowChangeDescription.RowOperation;
+import oracle.jdbc.dcn.TableChangeDescription;
+import oracle.sql.ROWID;
+
+/**
+ * 接收Oracle数据变化的通知推送
+ * 
+ * @author sunyj
+ * @since 2016年9月14日 上午9:54:18
+ */
+public class DCNListener implements DatabaseChangeListener {
+
+	private Logger logger = Logger.getLogger(DCNListener.class);
+
+	@Override
+	public void onDatabaseChangeNotification(DatabaseChangeEvent event) {
+		logger.info(event);
+		QueryChangeDescription[] queryChangeDescriptions = event.getQueryChangeDescription();
+		logger.info("q " + queryChangeDescriptions.length);
+		for (QueryChangeDescription description : queryChangeDescriptions) {
+			TableChangeDescription[] tableChangeDescriptions = description.getTableChangeDescription();
+			logger.info("t " + tableChangeDescriptions.length);
+			for (TableChangeDescription tableChangeDescription : tableChangeDescriptions) {
+				String tableName = tableChangeDescription.getTableName();
+				logger.info(tableName);
+				RowChangeDescription[] rowChangeDescriptions = tableChangeDescription.getRowChangeDescription();
+				logger.info("r " + rowChangeDescriptions.length);
+				for (RowChangeDescription rowChangeDescription : rowChangeDescriptions) {
+					RowOperation rowOperation = rowChangeDescription.getRowOperation();
+					logger.info("rowOperation " + rowOperation);
+					ROWID rowid = rowChangeDescription.getRowid();
+					logger.info(rowid);
+					updateIndex(tableName, rowOperation.name(), rowid.stringValue());
+				}
+			}
+		}
+	}
+
+	private void updateIndex(String tableName, String rowOperation, String rowid) {
+		
+	}
+
+}