📄 mapdemo.java
字号:
package org.apache.catalina.tribes.demos;
import java.io.Serializable;
import java.util.Map;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import org.apache.catalina.tribes.Channel;
import org.apache.catalina.tribes.ChannelListener;
import org.apache.catalina.tribes.ManagedChannel;
import org.apache.catalina.tribes.Member;
import org.apache.catalina.tribes.MembershipListener;
import org.apache.catalina.tribes.tipis.AbstractReplicatedMap;
import org.apache.catalina.tribes.tipis.LazyReplicatedMap;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import javax.swing.table.TableColumn;
import org.apache.catalina.tribes.util.UUIDGenerator;
import org.apache.catalina.tribes.util.Arrays;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class MapDemo implements ChannelListener, MembershipListener{
protected LazyReplicatedMap map;
protected SimpleTableDemo table;
public MapDemo(Channel channel, String mapName ) {
map = new LazyReplicatedMap(null,channel,5000, mapName,null);
table = SimpleTableDemo.createAndShowGUI(map,channel.getLocalMember(false).getName());
channel.addChannelListener(this);
channel.addMembershipListener(this);
// for ( int i=0; i<1000; i++ ) {
// map.put("MyKey-"+i,"My String Value-"+i);
// }
this.messageReceived(null,null);
}
public boolean accept(Serializable msg, Member source) {
table.dataModel.getValueAt(-1,-1);
return false;
}
public void messageReceived(Serializable msg, Member source) {
}
public void memberAdded(Member member) {
}
public void memberDisappeared(Member member) {
table.dataModel.getValueAt(-1,-1);
}
public static void usage() {
System.out.println("Tribes MapDemo.");
System.out.println("Usage:\n\t" +
"java MapDemo [channel options] mapName\n\t" +
"\tChannel options:" +
ChannelCreator.usage());
}
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis();
ManagedChannel channel = (ManagedChannel) ChannelCreator.createChannel(args);
String mapName = "MapDemo";
if ( args.length > 0 && (!args[args.length-1].startsWith("-"))) {
mapName = args[args.length-1];
}
channel.start(channel.DEFAULT);
Runtime.getRuntime().addShutdownHook(new Shutdown(channel));
MapDemo demo = new MapDemo(channel,mapName);
System.out.println("System test complete, time to start="+(System.currentTimeMillis()-start)+" ms. Sleeping to let threads finish.");
Thread.sleep(60 * 1000 * 60);
}
public static class Shutdown
extends Thread {
ManagedChannel channel = null;
public Shutdown(ManagedChannel channel) {
this.channel = channel;
}
public void run() {
System.out.println("Shutting down...");
SystemExit exit = new SystemExit(5000);
exit.setDaemon(true);
exit.start();
try {
channel.stop(channel.DEFAULT);
} catch (Exception x) {
x.printStackTrace();
}
System.out.println("Channel stopped.");
}
}
public static class SystemExit
extends Thread {
private long delay;
public SystemExit(long delay) {
this.delay = delay;
}
public void run() {
try {
Thread.sleep(delay);
} catch (Exception x) {
x.printStackTrace();
}
System.exit(0);
}
}
public static class SimpleTableDemo
extends JPanel implements ActionListener{
private static int WIDTH = 550;
private LazyReplicatedMap map;
private boolean DEBUG = false;
AbstractTableModel dataModel = new AbstractTableModel() {
String[] columnNames = {
"Key",
"Value",
"Backup Node",
"isPrimary",
"isProxy",
"isBackup"};
public int getColumnCount() { return columnNames.length; }
public int getRowCount() {return map.sizeFull() +1; }
public StringBuffer getMemberNames(Member[] members){
StringBuffer buf = new StringBuffer();
if ( members!=null ) {
for (int i=0;i<members.length; i++ ) {
buf.append(members[i].getName());
buf.append("; ");
}
}
return buf;
}
public Object getValueAt(int row, int col) {
if ( row==-1 ) {
update();
return "";
}
if ( row == 0 ) return columnNames[col];
Object[] entries = map.entrySetFull().toArray();
Map.Entry e = (Map.Entry)entries [row-1];
LazyReplicatedMap.MapEntry entry = (LazyReplicatedMap.MapEntry)e.getValue();
switch (col) {
case 0: return entry.getKey();
case 1: return entry.getValue();
case 2: return getMemberNames(entry.getBackupNodes());
case 3: return new Boolean(entry.isPrimary());
case 4: return new Boolean(entry.isProxy());
case 5: return new Boolean(entry.isBackup());
default: return "";
}
}
public void update() {
fireTableDataChanged();
}
};
JTextField txtAddKey = new JTextField(20);
JTextField txtAddValue = new JTextField(20);
JTextField txtRemoveKey = new JTextField(20);
JTextField txtChangeKey = new JTextField(20);
JTextField txtChangeValue = new JTextField(20);
JTable table = null;
public SimpleTableDemo(LazyReplicatedMap map) {
super();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -