RmiServer  1.0
 Alle Klassen Namensbereiche Dateien Funktionen Variablen
ObserverUpdater.java
gehe zur Dokumentation dieser Datei
1 package controller;
2 
3 import java.rmi.RemoteException;
4 import java.rmi.server.RemoteServer;
5 import java.rmi.server.ServerNotActiveException;
6 import java.text.SimpleDateFormat;
7 import java.util.ArrayList;
8 import java.util.Date;
9 import java.util.List;
10 
17 public class ObserverUpdater {
18  private static final ArrayList<ClientInterface> remoteObserverList = new ArrayList<ClientInterface>();
19  private static final ArrayList<String> remoteObserverListHostNames = new ArrayList<String>();
20  public static String activeObserver = ""; //$NON-NLS-1$
21 
28  public static synchronized void addRemoteObserver(ClientInterface observer) {
32  try {
33  activeObserver = RemoteServer.getClientHost();
34  } catch (ServerNotActiveException e1) {
35  // TODO Auto-generated catch block
36  e1.printStackTrace();
37  }
38 
42  remoteObserverList.add(observer);
43  remoteObserverListHostNames.add(activeObserver);
44 
48  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); //$NON-NLS-1$
49  String time = sdf.format(new Date());
50  RmiServer.fileLogger.info(Messages.getString("ObserverUpdater.2") //$NON-NLS-1$
51  + time
52  + Messages.getString("ObserverUpdater.3") //$NON-NLS-1$
53  + remoteObserverListHostNames.get(remoteObserverListHostNames
54  .size() - 1));
55  }
56 
63  public static synchronized void removeRemoteObserver(
64  ClientInterface observer) {
65  int index = remoteObserverList.indexOf(observer);
66  remoteObserverList.remove(observer);
67 
68  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); //$NON-NLS-1$
69  String time = sdf.format(new Date());
71  .info(Messages.getString("ObserverUpdater.5") + time //$NON-NLS-1$
72  + Messages.getString("ObserverUpdater.6") //$NON-NLS-1$
73  + remoteObserverListHostNames.get(index));
74 
75  remoteObserverListHostNames.remove(index);
76  }
77 
84  public static synchronized void update(Class t, List<Object> o) {
85  List<ClientInterface> brokenRemoteObserverList = new ArrayList<ClientInterface>();
86 
87  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); //$NON-NLS-1$
88  String time = sdf.format(new Date());
89 
93  for (ClientInterface observer : remoteObserverList) {
94  try {
95  activeObserver = remoteObserverListHostNames
96  .get(remoteObserverList.indexOf(observer));
97  // Socket socket =
98  // RMISocketFactory.getSocketFactory().createSocket("",
99  // Registry.REGISTRY_PORT);
100  observer.update(t, o);
101  } catch (Exception e) {
102  System.out.println(""); //$NON-NLS-1$
104  .error(Messages.getString("ObserverUpdater.9") //$NON-NLS-1$
105  + time
106  + Messages.getString("ObserverUpdater.10") + e.getMessage()); //$NON-NLS-1$
111  brokenRemoteObserverList.add(observer);
112  }
113  }
114 
118  int index = 0;
119  for (ClientInterface observer : brokenRemoteObserverList) {
120  index = remoteObserverList.indexOf(observer);
121  remoteObserverList.remove(observer);
122  remoteObserverListHostNames.remove(index);
123  }
124 
125  RmiServer.fileLogger.info(Messages.getString("ObserverUpdater.11") //$NON-NLS-1$
126  + remoteObserverList.size()
127  + Messages.getString("ObserverUpdater.12") + time); //$NON-NLS-1$
128 
129  activeObserver = "";
130  }
131 
135  public static synchronized void terminateClients() {
136  for (ClientInterface observer : remoteObserverList) {
137  try {
138  activeObserver = remoteObserverListHostNames
139  .get(remoteObserverList.indexOf(observer));
140  // Socket socket =
141  // RMISocketFactory.getSocketFactory().createSocket("",
142  // Registry.REGISTRY_PORT);
143  observer.serverTerminated();
144  } catch (Exception e) {
145  System.out.println(""); //$NON-NLS-1$
147  .getString("ObserverUpdater.14") + e.getMessage()); //$NON-NLS-1$
148  }
149  }
150  activeObserver = "";
151  }
152 }