|
|
@@ -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) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|