import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import java.lang.reflect.*;
public class OrbManagerStub extends OrbManager {
public OrbManagerStub(ObjectReference ref){
objectReference(ref);
}
@Override
public boolean migrate(XmlMapper xmlmapper) {
//echo("findRom -> "+name);
echo("migrate");
Request req = createRequest ("migrate");
req.beginParameter();
req.beginSequence();
req.beginString();
req.addXmlMapper(xmlmapper);
req.endString();
req.endSequence();
req.endParameter();
req.endXml();
req.invoke();
//Leio o reply
boolean result = req.getBoolean();
req = null;
return result;
}
/**
* Lista os objetos registrados
* Nao precisa ser implementado no Stubg
*/
public void list() {
// TODO Auto-generated method stub
}
/**
* Lista objetos migrados. Nao precisa no stub
*/
public void migrated() {
// TODO Auto-generated method stub
}
public XmlMapper translateToXmlMapper(Map obj_impl) {
XmlMapper xml_mapper = null;
Iterator iterator = obj_impl.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
ObjectImpl obj_impl_aux = (ObjectImpl) obj_impl.get(key);
String classname = obj_impl_aux.getClass().getName();
echo("classname: "+classname);
if (classname.equals("RoomRegistryImpl")){
xml_mapper = new RoomRegistryXml(key, classname);
//////////////////
//Pego as salas //
//////////////////
Map salas_criadas = ((RoomRegistryImpl) obj_impl_aux).filhos();
Iterator iterator_salas = salas_criadas.keySet().iterator();
while(iterator_salas.hasNext()){
String room_name = (String) iterator_salas.next();
ChatRoomImpl chatroom_impl = (ChatRoomImpl) salas_criadas.get(room_name);
//CRIO O XML
ChatRoomXml chatroomxml_aux = new ChatRoomXml(room_name, chatroom_impl.getKey(), chatroom_impl.getClass().getName());
/////////////////////
// PEGO OS USUARIOS//
/////////////////////
Map usuarios_sala = chatroom_impl.filhos();
Iterator iterator_users = usuarios_sala.keySet().iterator();
while (iterator_users.hasNext()) {
String user_name = (String) iterator_users.next();
ChatUserStub chatuser_stub = (ChatUserStub) usuarios_sala.get(user_name);
String classname_chatuser = chatuser_stub.getClass().getName();
String host_chatuser = chatuser_stub.getObjectReference().getHost();
String port_chatuser = String.valueOf(chatuser_stub.getObjectReference().getPort());
String ref_chatuser = chatuser_stub.getObjectReference().stringify();
ChatUserXml chatuserxml_aux = new ChatUserXml(user_name, classname_chatuser, ref_chatuser, host_chatuser, port_chatuser);
//Adiciono o chatuser no chatroom
chatroomxml_aux.addChatUser(chatuserxml_aux);
}
//Adiciono o chatroom no roomregistry
((RoomRegistryXml) xml_mapper).addChatroom(chatroomxml_aux);
}
}else if (classname.equals("ChatRoomImpl")){
ChatRoomImpl chatroom_impl = (ChatRoomImpl) obj_impl_aux;
String room_name = chatroom_impl.getName();
//CRIO O XML
xml_mapper = new ChatRoomXml(room_name, chatroom_impl.getKey(), chatroom_impl.getClass().getName());
/////////////////////
// PEGO OS USUARIOS//
/////////////////////
Map usuarios_sala = chatroom_impl.getUsers();
Iterator iterator_users = usuarios_sala.keySet().iterator();
while (iterator_users.hasNext()) {
String user_name = (String) iterator_users.next();
ChatUserStub chatuser_stub = (ChatUserStub) usuarios_sala.get(user_name);
String classname_chatuser = chatuser_stub.getClass().getName();
String host_chatuser = chatuser_stub.getObjectReference().getHost();
String port_chatuser = String.valueOf(chatuser_stub.getObjectReference().getPort());
String ref_chatuser = chatuser_stub.getObjectReference().stringify();
ChatUserXml chatuserxml_aux = new ChatUserXml(user_name, classname_chatuser, ref_chatuser, host_chatuser, port_chatuser);
//Adiciono o chatuser no chatroom
((ChatRoomXml) xml_mapper).addChatUser(chatuserxml_aux);
}
}
}
return xml_mapper;
}
}