1 package cz.cuni.amis.pogamut.ut2004.factory.direct.remoteagent;
2
3 import java.util.logging.Level;
4
5 import cz.cuni.amis.pogamut.base.communication.command.IAct;
6 import cz.cuni.amis.pogamut.base.communication.command.ICommandSerializer;
7 import cz.cuni.amis.pogamut.base.communication.command.impl.Act;
8 import cz.cuni.amis.pogamut.base.communication.command.impl.StringCommandSerializer;
9 import cz.cuni.amis.pogamut.base.communication.connection.impl.socket.ISocketConnectionAddress;
10 import cz.cuni.amis.pogamut.base.communication.connection.impl.socket.SocketConnection;
11 import cz.cuni.amis.pogamut.base.communication.mediator.IMediator;
12 import cz.cuni.amis.pogamut.base.communication.mediator.impl.Mediator;
13 import cz.cuni.amis.pogamut.base.communication.parser.IWorldMessageParser;
14 import cz.cuni.amis.pogamut.base.communication.parser.impl.yylex.IYylexObserver;
15 import cz.cuni.amis.pogamut.base.communication.translator.IWorldMessageTranslator;
16 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEventOutput;
17 import cz.cuni.amis.pogamut.base.communication.translator.impl.WorldMessageTranslator;
18 import cz.cuni.amis.pogamut.base.component.bus.ComponentBus;
19 import cz.cuni.amis.pogamut.base.component.bus.IComponentBus;
20 import cz.cuni.amis.pogamut.base.component.controller.ComponentDependencies;
21 import cz.cuni.amis.pogamut.base.component.controller.ComponentDependencyType;
22 import cz.cuni.amis.pogamut.base.factory.IAgentFactory;
23 import cz.cuni.amis.pogamut.base.utils.logging.AgentLogger;
24 import cz.cuni.amis.pogamut.ut2004.agent.params.UT2004AgentParameters;
25 import cz.cuni.amis.pogamut.ut2004.communication.messages.UnrealIdTranslator;
26 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Yylex;
27 import cz.cuni.amis.pogamut.ut2004.communication.parser.UT2004Parser;
28 import cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor.ItemTranslator;
29 import cz.cuni.amis.pogamut.ut2004.communication.translator.observer.ObserverFSM;
30 import cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004WorldView;
31 import cz.cuni.amis.pogamut.ut2004.factory.guice.remoteagent.UT2004ObserverModule;
32 import cz.cuni.amis.pogamut.ut2004.observer.impl.UT2004Observer;
33 import cz.cuni.amis.utils.exception.PogamutException;
34
35
36
37
38
39
40
41
42
43
44
45
46 public class UT2004ObserverFactory<PARAMS extends UT2004AgentParameters> implements IAgentFactory<UT2004Observer, PARAMS> {
47
48 @Override
49 public UT2004Observer newAgent(PARAMS agentParameters) throws PogamutException {
50
51 AgentLogger logger = new AgentLogger(agentParameters.getAgentId());
52
53
54
55
56 logger.setLevel(Level.SEVERE);
57 logger.addDefaultConsoleHandler();
58
59 IComponentBus eventBus = new ComponentBus(logger);
60
61
62
63
64
65
66 SocketConnection socketConnection = new SocketConnection((ISocketConnectionAddress)agentParameters.getWorldAddress(), new ComponentDependencies(ComponentDependencyType.STARTS_WITH).add(agentParameters.getAgentId()), eventBus, logger);
67
68 UnrealIdTranslator unrealIdTranslator = new UnrealIdTranslator();
69 ItemTranslator itemTranslator = new ItemTranslator();
70
71
72 IWorldMessageParser parser = new UT2004Parser(unrealIdTranslator, itemTranslator, socketConnection, new Yylex(), new IYylexObserver.LogObserver(logger), eventBus, logger);
73
74
75 IWorldMessageTranslator messageTranslator = new ObserverFSM(itemTranslator, logger);
76 IWorldChangeEventOutput producer = new WorldMessageTranslator(parser, messageTranslator, eventBus, logger);
77
78 IMediator mediator = new Mediator(producer, eventBus, logger);
79
80 UT2004WorldView worldView = new UT2004WorldView(new ComponentDependencies(ComponentDependencyType.STARTS_WITH).add(agentParameters.getAgentId()), mediator, eventBus, logger);
81
82
83
84
85
86 ICommandSerializer<String> commandSerializer = new StringCommandSerializer();
87 IAct act = new Act(socketConnection, commandSerializer, eventBus, logger);
88
89
90
91
92
93 UT2004Observer observer = new UT2004Observer(agentParameters, eventBus, logger, worldView, act);
94 return observer;
95 }
96
97 }