import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class OrbManagerImpl extends OrbManagerSkel {
private ORB _orb = null;
private RoomRegistryImpl _roomregistryimpl = null;
public OrbManagerImpl(ORB orb) {
super();
_orb = orb;
}
@Override
boolean migrate(XmlMapper xmlmapper) {
boolean result = true;
// TODO Auto-generated method stub
echo("Registrando os objetos recebidos");
echo("Classname: "+xmlmapper.getClassname());
if (xmlmapper.getClassname().equals("RoomRegistryImpl")) {
RoomRegistryXml room_registry_xml = (RoomRegistryXml) xmlmapper;
String key = room_registry_xml.getObjectid();
String classname = room_registry_xml.getClassname();
_roomregistryimpl = new RoomRegistryImpl(key);
List lista_chatroom = room_registry_xml.filhos();
for (int i=0; i < lista_chatroom.size(); i++) {
XmlMapper xmlmapper_2 = (XmlMapper) lista_chatroom.get(0);
registerXmlMapper(xmlmapper_2);
}
}else if (xmlmapper.getClassname().equals("ChatRoomImpl")) {
_roomregistryimpl = (RoomRegistryImpl) _orb.getMainSkel();
registerXmlMapper(xmlmapper);
}
return result;
}
/**
* Lista os objetos registrados
*/
public void list() {
Map table_registrados = _orb.getListaObjRegistrados();
Iterator iterator = table_registrados.keySet().iterator();
int i = 0;
while (iterator.hasNext()) {
String name = (String) iterator.next();
if (!table_registrados.get(name).equals(this)){ //nao listo o proprio orbmanager
prompt(i+". "+name+" -> "+table_registrados.get(name));
i++;
}
}
}
/**
* Lista os objetos migrados
*/
public void migrated() {
Map migrados = _orb.getListaObjMigrados();
Iterator iterator = migrados.keySet().iterator();
prompt("Objetos migrados:");
while (iterator.hasNext()) {
String key = (String) iterator.next();
ObjectReference object_reference = (ObjectReference) migrados.get(key);
String host = object_reference.getHost();
String port = String.valueOf(object_reference.getPort());
prompt(key+" -> "+host+":"+port);
}
}
public void prompt(String msg) {
System.out.println("> "+msg);
}
private void registerXmlMapper(XmlMapper xmlmapper) {
if (xmlmapper.getClassname().equals("ChatRoomImpl")) {
ChatRoomXml chatroomxml = (ChatRoomXml) xmlmapper;
String roomname = chatroomxml.getName();
String key = chatroomxml.getObjectid();
echo("ChatRoom key -> " + key);
ChatRoomImpl chat_room_impl = new ChatRoomImpl(roomname, key);
List lista_chatuser = chatroomxml.filhos();
for (int i=0; i < lista_chatuser.size(); i++) {
ChatUserXml chatuserxml = (ChatUserXml) lista_chatuser.get(i);
String name = chatuserxml.getName();
String classname = chatuserxml.getClassname();
//reference
String host = chatuserxml.getHost();
String port = chatuserxml.getPort();
String reference = chatuserxml.getReference();
ObjectReference object_reference = new ObjectReference(reference, host, port);
ChatUser chat_user_stub = new ChatUserStub(object_reference);
echo("Criado proxy para o usuario "+name+" -> "+reference);
chat_room_impl.register(name, chat_user_stub);
}
_roomregistryimpl.register(roomname, chat_room_impl);
}
}
/*
private void echo(String msg){
System.out.println("[OrbManagerImpl] "+msg);
}
*/
public Map filhos() {
// TODO Auto-generated method stub
return null;
}
}