Changeset 841


Ignore:
Timestamp:
01/16/2011 07:17:17 PM (10 years ago)
Author:
joao.dias
Message:

Added a new option "simplifiedVersion" to the scenario configuration for the world simulator. If this flag is set to "true" the user interface of the world simulator will be very simple. If the flag is not specified the interface will show all buttons as before. Also, fixed some bugs and added some error messages.

Location:
AgentMind/branches/FAtiMA-Modular/WorldTest/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA-Modular/WorldTest/src/UserInterface.java

    r833 r841  
    11 
    22import java.io.FileInputStream; 
     3import java.io.FileNotFoundException; 
     4import java.io.IOException; 
    35import java.util.ArrayList; 
    46import java.util.Calendar; 
     
    7173        private String _previousUser; 
    7274         
    73     public UserInterface(WorldTest world_in) { 
    74          
     75         
     76         
     77    public UserInterface(WorldTest world_in, boolean simplifiedVersion) throws IOException { 
     78         
     79        Box  caseBox = null, timeBox = null, locationBox = null, infoBox = null,queryBox = null, attributeBox = null; 
     80        Box  userBox = null; 
    7581        _world = world_in; 
    7682        _r = new Random(); 
     83         
    7784     
    7885        _frame = new JFrame("WorldTest User Interface"); 
     
    104111                });*/ 
    105112         
    106         _caseOptions = new JComboBox(); 
    107         _caseOptions.addItem(UserInterface.CASE1); 
    108             _caseOptions.addItem(UserInterface.CASE2); 
    109             _caseOptions.addItem(UserInterface.CASE3); 
    110             _caseOptions.addActionListener(new ActionListener(){ 
    111                         public void actionPerformed(ActionEvent arg0) { 
    112                                 _world.ChangeExperimentCase(_caseOptions.getSelectedItem().toString()); 
    113                                 WriteLine("=> Changing the case: " + _caseOptions.getSelectedItem().toString()); 
    114                         } 
    115                 }); 
    116                          
    117             Box caseBox = new Box(BoxLayout.X_AXIS); 
    118             caseBox.add(new JLabel("Case: ")); 
    119             caseBox.add(_caseOptions ); 
    120          
    121             // Meiyii 06/03/09 
    122         _timeOptions = new JComboBox(); 
    123         GregorianCalendar gcal = new GregorianCalendar(); 
    124                 int time = gcal.get(Calendar.HOUR_OF_DAY); 
    125                 _timeOptions.addItem(time); 
    126         _timeOptions.addItem(UserInterface.MORNING); 
    127         _timeOptions.addItem(UserInterface.AFTERNOON); 
    128          
    129                 _timeOptions.addActionListener(new ActionListener(){ 
    130                         public void actionPerformed(ActionEvent arg0) { 
    131                                 _world.ChangeTime(_timeOptions.getSelectedItem().toString()); 
    132                         WriteLine("=> Changing the time: " + _timeOptions.getSelectedItem().toString()); 
    133                         } 
    134                 }); 
    135          
    136                 Box timeBox = new Box(BoxLayout.X_AXIS); 
    137         timeBox.add(new JLabel("Time: ")); 
    138         timeBox.add(_timeOptions ); 
    139          
    140         _locationOptions = new JComboBox(); 
    141         _userOptions = new JComboBox(); 
    142          
    143         _userOptions.addItem(UserInterface.USER); 
    144          
    145         // Meiyii 06/04/09 
    146         if(_world.GetScenery().equals("AmyHouse"))        
    147         {                                              
    148                 _locationOptions.addItem(UserInterface.LIVINGROOM); 
    149                 _locationOptions.addItem(UserInterface.STUDYROOM); 
    150                 _locationOptions.addItem(UserInterface.KITCHEN); 
    151                
    152                         //_userOptions.addItem(UserInterface.AMY); 
    153                         //_userOptions.addItem(UserInterface.USER); 
     113        if(!simplifiedVersion){ 
     114                _caseOptions = new JComboBox(); 
     115                _caseOptions.addItem(UserInterface.CASE1); 
     116            _caseOptions.addItem(UserInterface.CASE2); 
     117            _caseOptions.addItem(UserInterface.CASE3); 
     118            _caseOptions.addActionListener(new ActionListener(){ 
     119                        public void actionPerformed(ActionEvent arg0) { 
     120                                _world.ChangeExperimentCase(_caseOptions.getSelectedItem().toString()); 
     121                                WriteLine("=> Changing the case: " + _caseOptions.getSelectedItem().toString()); 
     122                        } 
     123                }); 
     124             
     125            caseBox = new Box(BoxLayout.X_AXIS); 
     126            caseBox.add(new JLabel("Case: ")); 
     127            caseBox.add(_caseOptions ); 
     128 
     129            // Meiyii 06/03/09 
     130            _timeOptions = new JComboBox(); 
     131            GregorianCalendar gcal = new GregorianCalendar(); 
     132                int time = gcal.get(Calendar.HOUR_OF_DAY); 
     133                _timeOptions.addItem(time); 
     134            _timeOptions.addItem(UserInterface.MORNING); 
     135            _timeOptions.addItem(UserInterface.AFTERNOON); 
     136             
     137                _timeOptions.addActionListener(new ActionListener(){ 
     138                        public void actionPerformed(ActionEvent arg0) { 
     139                                _world.ChangeTime(_timeOptions.getSelectedItem().toString()); 
     140                        WriteLine("=> Changing the time: " + _timeOptions.getSelectedItem().toString()); 
     141                        } 
     142                }); 
     143             
     144                timeBox = new Box(BoxLayout.X_AXIS); 
     145            timeBox.add(new JLabel("Time: ")); 
     146            timeBox.add(_timeOptions ); 
     147             
     148            _locationOptions = new JComboBox(); 
     149             
     150            // Meiyii 06/04/09 
     151            if(_world.GetScenery().equals("AmyHouse"))        
     152            {                                          
     153                _locationOptions.addItem(UserInterface.LIVINGROOM); 
     154                _locationOptions.addItem(UserInterface.STUDYROOM); 
     155                _locationOptions.addItem(UserInterface.KITCHEN); 
     156               
     157                        //_userOptions.addItem(UserInterface.AMY); 
     158                        //_userOptions.addItem(UserInterface.USER); 
     159            } 
     160            else if(_world.GetScenery().equals("Office")) 
     161            { 
     162                _locationOptions.addItem(UserInterface.RECEPTION); 
     163                _locationOptions.addItem(UserInterface.COMMONROOM); 
     164                _locationOptions.addItem(UserInterface.OFFICE); 
     165                
     166                        //_userOptions.addItem(UserInterface.JOHN); 
     167                        //_userOptions.addItem(UserInterface.LUKE); 
     168                        //_userOptions.addItem(UserInterface.PAULIE); 
     169                        //_userOptions.addItem(UserInterface.LUKEPAULIE);                
     170            } 
     171            else 
     172            { 
     173                //_userOptions.addItem("Judy"); 
     174                        //_userOptions.addItem("David"); 
     175            } 
     176 
     177            _locationOptions.addActionListener(new ActionListener(){ 
     178                        public void actionPerformed(ActionEvent e) { 
     179                                _world.ChangePlace(_locationOptions.getSelectedItem().toString()); 
     180                                WriteLine("=> Changing the location: " + _locationOptions.getSelectedItem().toString()); 
     181                        } 
     182                });              
     183                 
     184            locationBox = new Box(BoxLayout.X_AXIS); 
     185            locationBox.add(new JLabel("Location: ")); 
     186            locationBox.add(_locationOptions); 
     187             
     188             
     189             
     190            // Meiyii 19/11/09 
     191            _infoOptions = new JComboBox(); 
     192            _infoOptions.addItem("subject SELF"); 
     193            _infoOptions.addItem("subject Amy"); 
     194            _infoOptions.addItem("target SELF"); 
     195            _infoOptions.addItem("target Amy"); 
     196            _infoOptions.addItem("time 17"); 
     197            _infoOptions.addItem("location LivingRoom"); 
     198            _infoOptions.addItem("action Greet"); 
     199            _infoOptions.addItem("action SpeechAct"); 
     200            _infoOptions.addItem("desirability 2"); 
     201            _infoOptions.addItem("desirability -2"); 
     202                _infoOptions.addActionListener(new ActionListener(){ 
     203                        public void actionPerformed(ActionEvent arg0) { 
     204                                _world.AddKnownInfo(_infoOptions.getSelectedItem().toString()); 
     205                        WriteLine("=> Add known info for SA query: " + _infoOptions.getSelectedItem().toString()); 
     206                        } 
     207                }); 
     208                 
     209                infoBox = new Box(BoxLayout.X_AXIS); 
     210            infoBox.add(new JLabel("Known info: ")); 
     211            infoBox.add(_infoOptions ); 
     212             
     213            _queryOptions = new JComboBox(); 
     214            _queryOptions.addItem("ID"); 
     215            _queryOptions.addItem("subject"); 
     216            _queryOptions.addItem("target"); 
     217            _queryOptions.addItem("location"); 
     218            _queryOptions.addItem("action"); 
     219            _queryOptions.addItem("intention"); 
     220            _queryOptions.addItem("status"); 
     221            _queryOptions.addItem("object"); 
     222            _queryOptions.addItem("events"); 
     223                _queryOptions.addActionListener(new ActionListener(){ 
     224                        public void actionPerformed(ActionEvent arg0) { 
     225                        WriteLine("=> Change the SA query: " + _queryOptions.getSelectedItem().toString()); 
     226                        } 
     227                }); 
     228             
     229                queryBox = new Box(BoxLayout.X_AXIS); 
     230            queryBox.add(new JLabel("Query: ")); 
     231            queryBox.add(_queryOptions ); 
     232                     
     233            _attributeOptions = new JComboBox(); 
     234            _attributeOptions.addItem("subject"); 
     235            _attributeOptions.addItem("target"); 
     236            _attributeOptions.addItem("location"); 
     237            _attributeOptions.addItem("action"); 
     238            _attributeOptions.addItem("intention"); 
     239            _attributeOptions.addItem("object"); 
     240            _attributeOptions.addItem("desirability"); 
     241            _attributeOptions.addItem("praiseworthiness"); 
     242            _attributeOptions.addItem("time"); 
     243                _attributeOptions.addActionListener(new ActionListener(){ 
     244                        public void actionPerformed(ActionEvent arg0) { 
     245                                _world.AddGAttributes(_attributeOptions.getSelectedItem().toString()); 
     246                        WriteLine("=> Add G attribute: " + _attributeOptions.getSelectedItem().toString()); 
     247                        } 
     248                }); 
     249                attributeBox = new Box(BoxLayout.X_AXIS); 
     250            queryBox.add(new JLabel("G Attributes: ")); 
     251            queryBox.add(_attributeOptions ); 
     252             
     253            _userOptions = new JComboBox();     
     254            _userOptions.addItem(UserInterface.USER); 
     255             
     256                _userOptions.addActionListener(new ActionListener(){ 
     257                        public void actionPerformed(ActionEvent e) { 
     258                                _world.ChangeUser(_previousUser, _userOptions.getSelectedItem().toString()); 
     259                                WriteLine("=> Changing the user: " + _userOptions.getSelectedItem().toString()); 
     260                                String userOptionsFile = _world.GetUserOptionsFile() + _userOptions.getSelectedItem().toString() + ".txt"; 
     261                                 
     262                                // Read user input options from a text file 
     263                                ParseFile(userOptionsFile); 
     264                                        _previousUser = _userOptions.getSelectedItem().toString(); 
     265                        } 
     266                });         
     267 
     268            userBox = new Box(BoxLayout.X_AXIS); 
     269            userBox.add(new JLabel("User: ")); 
     270            userBox.add(_userOptions);          
     271            _userSpeech = new JTextField(); 
    154272        } 
    155         else if(_world.GetScenery().equals("Office")) 
    156         { 
    157                 _locationOptions.addItem(UserInterface.RECEPTION); 
    158                 _locationOptions.addItem(UserInterface.COMMONROOM); 
    159                 _locationOptions.addItem(UserInterface.OFFICE); 
    160                 
    161                         //_userOptions.addItem(UserInterface.JOHN); 
    162                         //_userOptions.addItem(UserInterface.LUKE); 
    163                         //_userOptions.addItem(UserInterface.PAULIE); 
    164                         //_userOptions.addItem(UserInterface.LUKEPAULIE);                
    165         } 
    166         else 
    167         { 
    168                 //_userOptions.addItem("Judy"); 
    169                         //_userOptions.addItem("David"); 
    170         } 
    171  
    172         _locationOptions.addActionListener(new ActionListener(){ 
    173                         public void actionPerformed(ActionEvent e) { 
    174                                 _world.ChangePlace(_locationOptions.getSelectedItem().toString()); 
    175                                 WriteLine("=> Changing the location: " + _locationOptions.getSelectedItem().toString()); 
    176                         } 
    177                 });              
    178                  
    179         Box locationBox = new Box(BoxLayout.X_AXIS); 
    180         locationBox.add(new JLabel("Location: ")); 
    181         locationBox.add(_locationOptions); 
    182          
    183         _userOptions.addActionListener(new ActionListener(){ 
    184                         public void actionPerformed(ActionEvent e) { 
    185                                 _world.ChangeUser(_previousUser, _userOptions.getSelectedItem().toString()); 
    186                                 WriteLine("=> Changing the user: " + _userOptions.getSelectedItem().toString()); 
    187                                 String userOptionsFile = _world.GetUserOptionsFile() + _userOptions.getSelectedItem().toString() + ".txt"; 
    188                                  
    189                                 // Read user input options from a text file 
    190                                 ParseFile(userOptionsFile); 
    191                                 _previousUser = _userOptions.getSelectedItem().toString(); 
    192                         } 
    193                 });         
     273        
    194274         
    195         Box userBox = new Box(BoxLayout.X_AXIS); 
    196         userBox.add(new JLabel("User: ")); 
    197         userBox.add(_userOptions); 
    198          
    199         // Meiyii 19/11/09 
    200         _infoOptions = new JComboBox(); 
    201         _infoOptions.addItem("subject SELF"); 
    202         _infoOptions.addItem("subject Amy"); 
    203         _infoOptions.addItem("target SELF"); 
    204         _infoOptions.addItem("target Amy"); 
    205         _infoOptions.addItem("time 17"); 
    206         _infoOptions.addItem("location LivingRoom"); 
    207         _infoOptions.addItem("action Greet"); 
    208         _infoOptions.addItem("action SpeechAct"); 
    209         _infoOptions.addItem("desirability 2"); 
    210         _infoOptions.addItem("desirability -2"); 
    211                 _infoOptions.addActionListener(new ActionListener(){ 
    212                         public void actionPerformed(ActionEvent arg0) { 
    213                                 _world.AddKnownInfo(_infoOptions.getSelectedItem().toString()); 
    214                         WriteLine("=> Add known info for SA query: " + _infoOptions.getSelectedItem().toString()); 
    215                         } 
    216                 }); 
    217                  
    218                 Box infoBox = new Box(BoxLayout.X_AXIS); 
    219         infoBox.add(new JLabel("Known info: ")); 
    220         infoBox.add(_infoOptions ); 
    221          
    222         _queryOptions = new JComboBox(); 
    223         _queryOptions.addItem("ID"); 
    224         _queryOptions.addItem("subject"); 
    225         _queryOptions.addItem("target"); 
    226         _queryOptions.addItem("location"); 
    227         _queryOptions.addItem("action"); 
    228         _queryOptions.addItem("intention"); 
    229         _queryOptions.addItem("status"); 
    230         _queryOptions.addItem("object"); 
    231         _queryOptions.addItem("events"); 
    232                 _queryOptions.addActionListener(new ActionListener(){ 
    233                         public void actionPerformed(ActionEvent arg0) { 
    234                         WriteLine("=> Change the SA query: " + _queryOptions.getSelectedItem().toString()); 
    235                         } 
    236                 }); 
    237          
    238                 Box queryBox = new Box(BoxLayout.X_AXIS); 
    239         queryBox.add(new JLabel("Query: ")); 
    240         queryBox.add(_queryOptions ); 
    241                  
    242         _attributeOptions = new JComboBox(); 
    243         _attributeOptions.addItem("subject"); 
    244         _attributeOptions.addItem("target"); 
    245         _attributeOptions.addItem("location"); 
    246         _attributeOptions.addItem("action"); 
    247         _attributeOptions.addItem("intention"); 
    248         _attributeOptions.addItem("object"); 
    249         _attributeOptions.addItem("desirability"); 
    250         _attributeOptions.addItem("praiseworthiness"); 
    251         _attributeOptions.addItem("time"); 
    252                 _attributeOptions.addActionListener(new ActionListener(){ 
    253                         public void actionPerformed(ActionEvent arg0) { 
    254                                 _world.AddGAttributes(_attributeOptions.getSelectedItem().toString()); 
    255                         WriteLine("=> Add G attribute: " + _attributeOptions.getSelectedItem().toString()); 
    256                         } 
    257                 }); 
    258                 Box attributeBox = new Box(BoxLayout.X_AXIS); 
    259         queryBox.add(new JLabel("G Attributes: ")); 
    260         queryBox.add(_attributeOptions ); 
    261          
    262         _userSpeech = new JTextField(); 
     275    
    263276         
    264277        // Create the OK button to confirm input 
     
    301314        buttonsPanel.setLayout(new BoxLayout(buttonsPanel,BoxLayout.X_AXIS)); 
    302315        buttonsPanel.add(okButton); 
    303         buttonsPanel.add(stepButton); 
    304         //buttonsPanel.add(usButton); 
    305         buttonsPanel.add(saButton); 
    306         buttonsPanel.add(ccButton); 
    307         buttonsPanel.add(gButton); 
    308          
    309         _frame.getContentPane().add(_userSpeech); 
    310         _frame.getContentPane().add(caseBox); 
    311         _frame.getContentPane().add(timeBox); 
    312         _frame.getContentPane().add(locationBox); 
    313         _frame.getContentPane().add(userBox); 
    314                 _frame.getContentPane().add(infoBox); 
    315                 _frame.getContentPane().add(queryBox); 
    316                 _frame.getContentPane().add(inputList); 
    317                 _frame.getContentPane().add(buttonsPanel); 
    318                  
     316         
     317        if(!simplifiedVersion){ 
     318            buttonsPanel.add(stepButton); 
     319            //buttonsPanel.add(usButton); 
     320            buttonsPanel.add(saButton); 
     321            buttonsPanel.add(ccButton); 
     322            buttonsPanel.add(gButton); 
     323        } 
     324         
     325     
     326        if(!simplifiedVersion){ 
     327            _frame.getContentPane().add(_userSpeech); 
     328            _frame.getContentPane().add(caseBox); 
     329            _frame.getContentPane().add(timeBox); 
     330            _frame.getContentPane().add(locationBox); 
     331            _frame.getContentPane().add(userBox);   
     332            _frame.getContentPane().add(infoBox); 
     333            _frame.getContentPane().add(queryBox); 
     334                } 
     335         
     336        _frame.getContentPane().add(inputList); 
     337    
     338        _frame.getContentPane().add(buttonsPanel); 
     339         
    319340                 
    320341                //_frame.getContentPane().add(okButton); 
    321342                //_frame.getContentPane().add(stepButton); 
    322343                _frame.setVisible(true); 
    323                   
    324                 String userOptionsFile = _world.GetUserOptionsFile() + _userOptions.getSelectedItem().toString() + ".txt"; 
    325                 _previousUser = _userOptions.getSelectedItem().toString(); 
     344                 
     345                String userOptionsFile = ""; 
     346                 
     347                 
     348                if(!simplifiedVersion){ 
     349                        userOptionsFile = _world.GetUserOptionsFile() + _userOptions.getSelectedItem().toString() + ".txt"; 
     350                        _previousUser = _userOptions.getSelectedItem().toString(); 
     351                }else{ 
     352                        userOptionsFile = _world.GetUserOptionsFile() + ".txt"; 
     353                }        
    326354                 
    327355                // Read user input options from a text file 
     
    355383                int readCharacters; 
    356384                 
     385                FileInputStream f; 
     386                 
    357387                try { 
    358                         FileInputStream f = new FileInputStream(name); 
     388                        f = new FileInputStream(name); 
    359389                        while((readCharacters=f.read(buffer))>0) { 
    360390                                data = data + new String(buffer,0,readCharacters); 
    361391                        } 
    362                         StringTokenizer st = new StringTokenizer(data,"\r\n"); 
    363                         inputList.removeAllItems(); 
    364                         while(st.hasMoreTokens()) 
    365                                 inputList.addItem(st.nextToken()); 
    366                                  
    367                 } 
    368                 catch (Exception e) { 
    369                         e.printStackTrace(); 
    370                 } 
    371                  
    372         } 
     392                }catch (FileNotFoundException e) { 
     393                        System.out.println(name + "(Error, the system cannot find this options file)"); 
     394                        System.exit(-1); 
     395                } 
     396                catch (IOException e) { 
     397                        System.out.println(name + "(Error while reading this options file)"); 
     398                        System.exit(-1); 
     399                } 
     400                 
     401                StringTokenizer st = new StringTokenizer(data,"\r\n"); 
     402                inputList.removeAllItems(); 
     403                while(st.hasMoreTokens()) 
     404                        inputList.addItem(st.nextToken()); 
     405    }    
     406         
    373407     
    374408    private Name ConvertToActionName(String action) 
  • AgentMind/branches/FAtiMA-Modular/WorldTest/src/WorldTest.java

    r802 r841  
    11import java.io.File; 
     2import java.io.IOException; 
    23import java.net.ServerSocket; 
    34import java.net.Socket; 
    45import java.util.ArrayList; 
    56 
     7import javax.xml.parsers.ParserConfigurationException; 
    68import javax.xml.parsers.SAXParser; 
    79import javax.xml.parsers.SAXParserFactory; 
     10 
     11import org.xml.sax.SAXException; 
    812 
    913import FAtiMA.Core.deliberativeLayer.plan.Step; 
     
    1115import FAtiMA.Core.util.parsers.ScenarioLoaderHandler; 
    1216import FAtiMA.Core.util.parsers.ActionsLoaderHandler; 
     17import Language.LactException; 
    1318import Language.LanguageEngine; 
     19import Language.SactException; 
    1420 
    1521 
     
    3137 */ 
    3238public class WorldTest { 
    33          
     39 
    3440        public static final String WORLD_PATH = "data/characters/minds/"; 
    35         //public static final String SCENARIOS_PATH = "data/characters/minds/Scenarios.xml"; 
     41        public static final int MINIMUM_NUM_WORLD_SIM_ARGS = 7; 
     42 
     43 
    3644        private ServerSocket _ss; 
    3745        private ArrayList<sObject> _objects; 
     
    3947        private String _scenery; 
    4048        private ArrayList<Step> _actions; 
    41         private LanguageEngine agentLanguage; 
    42         private LanguageEngine userLanguage; 
     49        private LanguageEngine _agentLanguage; 
     50        private LanguageEngine _userLanguage; 
    4351        private UserInterface _userInterface; 
    4452        private String _userOptionsFile; 
    4553        private GretaAgent _ga; 
    46          
    47         static public void main(String args[]) throws Exception { 
     54 
     55 
     56        static public void main(String args[]) throws Exception{ 
    4857                int i; 
    4958                ArrayList<String> objects = new ArrayList<String>(); 
    50                  
    51                  
    52                 //Load the arguments from the scenario definition present in scenarios.xml 
     59 
    5360                if (args.length == 2){ 
    54                         ScenarioLoaderHandler scenHandler = new ScenarioLoaderHandler(args[1]); 
    55                         SAXParserFactory factory = SAXParserFactory.newInstance(); 
    56                         SAXParser parser = factory.newSAXParser(); 
    57                         parser.parse(new File(WORLD_PATH + args[0]), scenHandler); 
    58                          
    59                         scenHandler.checkScenario(); 
    60                         args = scenHandler.getWorldSimArguments(); 
    61                          
    62                         if (args.length < 6) { 
     61 
     62                        args = loadArgumentsFromScenarioDefinition(args[0],args[1]); 
     63 
     64                        if (args.length < MINIMUM_NUM_WORLD_SIM_ARGS) { 
    6365                                System.out.println("Wrong number of arguments in the scenario definition!"); 
    6466                                return; 
    6567                        }                        
    66                         for(i = 6; i < args.length; i++) { 
     68                        for(i = MINIMUM_NUM_WORLD_SIM_ARGS; i < args.length; i++) { 
    6769                                objects.add(args[i]); 
    6870                        } 
     71 
     72                        boolean simplifiedVersion = false; 
     73                        if(args[6] != null){ 
     74                                simplifiedVersion = new Boolean(args[6]); 
     75                        } 
    6976                         
    70                          
    71                         WorldTest wt = new WorldTest(new Integer(args[0]).intValue(),args[1],args[2], args[3], args[4],args[5],objects); 
     77                        WorldTest wt = new WorldTest(new Integer(args[0]).intValue(),args[1],args[2], args[3], args[4],args[5],simplifiedVersion,objects); 
    7278                        wt.run(); 
    7379                } 
     
    7783                }                        
    7884        } 
    79          
    80         public WorldTest(int port, String scenery, String actionsFile, String agentLanguageFile, String userLanguageFile, String userOptionsFile, ArrayList<String> objects) { 
     85 
     86 
     87 
     88 
     89        public WorldTest(int port, String scenery, String actionsFile, String agentLanguageFile, String userLanguageFile, String userOptionsFile, boolean simplifiedVersion, ArrayList<String> objects) throws IOException { 
    8190                _scenery = scenery; 
    8291                _agents = new ArrayList<RemoteAgent>(); 
    8392                _objects = new ArrayList<sObject>(); 
    8493                _userOptionsFile = userOptionsFile; 
    85                 _userInterface = new UserInterface(this); 
    8694                 
     95                _userInterface = new UserInterface(this,simplifiedVersion); 
     96 
    8797                for(String objName : objects) 
    8898                { 
    8999                        _objects.add(sObject.ParseFile(objName)); 
    90100                } 
     101 
     102                try{ 
     103                         
     104                        if(agentLanguageFile != null){ 
     105                                _agentLanguage = this.initializeLanguageEngine("name", "Victim", "M", agentLanguageFile); 
     106                        } 
     107                         
     108                        if(userLanguageFile != null){ 
     109                                _userLanguage = this.initializeLanguageEngine("name", "User", "M", userLanguageFile); 
     110                        } 
     111                         
     112                        _userInterface.WriteLine("Finished ALE initialization!"); 
    91113                 
    92                 _userInterface.WriteLine("Initializing Agent Language Engine(ALE)... "); 
    93                 _userInterface.WriteLine("Language File: " + agentLanguageFile); 
    94                 _userInterface.WriteLine("Sex: M"); 
    95                 _userInterface.WriteLine("Role: Victim"); 
    96                 try 
    97                 { 
    98                         this.agentLanguage = new LanguageEngine("name","M","Victim",new File(agentLanguageFile)); 
    99                         _userInterface.WriteLine("Finished ALE initialization!"); 
    100                 } 
    101                 catch (Exception e) 
    102                 { 
    103                         e.printStackTrace(); 
    104                 } 
    105                  
    106                 _userInterface.WriteLine("Initializing User Language Engine(ULE)... "); 
    107                 _userInterface.WriteLine("Language File: " + userLanguageFile); 
    108                 _userInterface.WriteLine("Sex: M"); 
    109                 _userInterface.WriteLine("Role: Victim"); 
    110                 try 
    111                 { 
    112                         this.userLanguage = new LanguageEngine("name","M","User",new File(userLanguageFile)); 
    113                         _userInterface.WriteLine("Finished ALE initialization!"); 
    114                 } 
    115                 catch (Exception e) 
    116                 { 
    117                         e.printStackTrace(); 
    118                 } 
    119                  
    120                                          
    121                 try { 
    122114                        ActionsLoaderHandler op = LoadOperators(actionsFile, "[SELF]"); 
    123115                        this._actions = op.getOperators(); 
    124116                        _ss = new ServerSocket(port); 
    125                          
    126                         //_ssToGreta = new ServerSocket(100);    
    127                 } 
    128                 catch (Exception e){ 
     117                        //_ssToGreta = new ServerSocket(100); 
     118 
     119                }catch(Exception e){ 
    129120                        e.printStackTrace(); 
    130                 } 
     121                        System.exit(-1); 
     122                } 
     123 
     124        } 
     125 
     126        private LanguageEngine initializeLanguageEngine(String name, String role, String sex, String languageFile) throws SactException, LactException{ 
    131127                 
     128                if(role.equals("User")){ 
     129                        _userInterface.WriteLine("Initializing User Language Engine(ALE)... ");          
     130                }else{ 
     131                        _userInterface.WriteLine("Initializing Agent Language Engine(ALE)... ");                         
     132                } 
     133                _userInterface.WriteLine("Language File: " + languageFile); 
     134                _userInterface.WriteLine("Sex: " + sex); 
     135                _userInterface.WriteLine("Role: " + role); 
     136                return new LanguageEngine(name,sex,role,new File(languageFile)); 
     137        } 
     138         
     139        private static String[] loadArgumentsFromScenarioDefinition(String scenarioFilename, String scenarioName) throws SAXException, IOException, ParserConfigurationException { 
     140                ScenarioLoaderHandler scenHandler = new ScenarioLoaderHandler(scenarioName); 
     141                SAXParserFactory factory = SAXParserFactory.newInstance(); 
     142                SAXParser parser = factory.newSAXParser(); 
     143                parser.parse(new File(WORLD_PATH + scenarioFilename), scenHandler); 
     144                scenHandler.checkScenario(); 
     145                return  scenHandler.getWorldSimArguments(); 
     146        } 
     147         
     148 
     149        private ActionsLoaderHandler LoadOperators(String xmlFile, String self) throws ParserConfigurationException, SAXException, IOException  
     150        { 
     151                _userInterface.WriteLine("Loaded actions from: " + xmlFile); 
     152                ActionsLoaderHandler op = new ActionsLoaderHandler(null); 
    132153                 
    133         } 
    134          
    135         private ActionsLoaderHandler LoadOperators(String xmlFile, String self)  throws Exception 
    136         { 
    137                 _userInterface.WriteLine("LOAD: " + xmlFile); 
    138                 //com.sun.xml.parser.Parser parser; 
    139                 //parser = new com.sun.xml.parser.Parser(); 
    140                 ActionsLoaderHandler op = new ActionsLoaderHandler(null); 
    141                 //parser.setDocumentHandler(op); 
    142                 try  
    143                 { 
    144                         SAXParserFactory factory = SAXParserFactory.newInstance(); 
    145                         SAXParser parser = factory.newSAXParser(); 
    146                         parser.parse(new File(xmlFile), op); 
    147                         //InputSource input = Resolver.createInputSource(new File(xmlFile)); 
    148                         //parser.parse(input); 
    149                         return op; 
    150                 } 
    151                 catch (Exception ex)  
    152                 { 
    153                         throw new Exception("Error parsing the actions file.",ex); 
    154                 }        
    155         } 
    156          
     154                SAXParserFactory factory = SAXParserFactory.newInstance(); 
     155                SAXParser parser = factory.newSAXParser(); 
     156                parser.parse(new File(xmlFile), op); 
     157                return op;               
     158        } 
     159 
    157160        public void run() { 
    158161                Socket s2; 
    159162                RemoteAgent ra;          
    160                  
     163 
    161164                while(true) { 
    162165                        try { 
     
    165168                                _ga.start(); 
    166169                                _ga.Send("Connected!");*/ 
    167                                  
     170 
    168171                                s2 = _ss.accept(); 
    169172                                ra = new RemoteAgent(this,s2); 
    170173                                ra.start(); 
    171174                                _agents.add(ra); 
    172                                  
     175 
    173176                                //hack for Mac 
    174177                                Thread.sleep(150); 
    175                                  
     178 
    176179                                _userInterface.WriteLine(ra.Name() + " enters the " + _scenery); 
    177180                                NotifyEntityAdded(ra.Name()); 
     
    184187                } 
    185188        } 
    186          
     189 
    187190        public void NotifyEntityAdded(String entityName) { 
    188          
     191 
    189192                String msg = "ENTITY-ADDED " + entityName; 
    190                  
     193 
    191194                for(RemoteAgent ag : _agents) 
    192195                { 
     
    196199                } 
    197200        } 
    198          
     201 
    199202        public void PerceiveEntities(RemoteAgent agent) { 
    200                  
     203 
    201204                String entities = "AGENTS"; 
    202                  
     205 
    203206                for(RemoteAgent ag : _agents) 
    204207                { 
    205208                        entities = entities + " " + ag.Name(); 
    206209                } 
    207                  
     210 
    208211                for(sObject obj : _objects) 
    209212                { 
    210213                        entities = entities + " " + obj.Name(); 
    211214                } 
    212                  
     215 
    213216                agent.Send(entities); 
    214217        } 
    215          
     218 
    216219        public void SendPerceptionToAll(String perception) { 
    217                  
     220 
    218221                for(RemoteAgent ag : _agents) 
    219222                { 
     
    221224                } 
    222225        } 
    223          
     226 
    224227        public String GetPropertiesList(String target) { 
    225                  
     228 
    226229                for(RemoteAgent ag : _agents) 
    227230                { 
     
    230233                        } 
    231234                } 
    232                  
     235 
    233236                for(sObject obj : _objects) 
    234237                { 
     
    237240                        } 
    238241                } 
    239                  
     242 
    240243                return null; 
    241244        } 
    242          
     245 
    243246        public ArrayList<Step> GetActions() 
    244247        { 
    245248                return this._actions; 
    246249        } 
    247          
     250 
    248251        public String Say(String speech) 
    249252        { 
     
    251254                String aux; 
    252255                String[] aux2; 
    253                  
     256 
    254257                //System.out.println("Generating SpeechAct:" + speech); 
    255                 if(this.agentLanguage!= null) 
     258                if(this._agentLanguage!= null) 
    256259                { 
    257260                        try 
    258261                        { 
    259                                 aux = this.agentLanguage.Say(speech); 
     262                                aux = this._agentLanguage.Say(speech); 
    260263                                aux2 = aux.split("<Utterance>"); 
    261264                                if(aux2.length > 1){ 
    262                                  utterance = aux2[1].split("</Utterance>")[0]; 
    263                                  return utterance; 
     265                                        utterance = aux2[1].split("</Utterance>")[0]; 
     266                                        return utterance; 
    264267                                } 
    265268                        } 
     
    271274                return null; 
    272275        } 
    273          
     276 
    274277        public String ProcessInput(String user,String target, String text) 
    275278        { 
    276279                GetUserInterface().WriteLine(user + " says to " + target + "; " + text); 
    277                 //System.out.println("Generating SpeechAct:" + speech); 
    278                  
     280 
    279281                SpeechAct userSpeech = new SpeechAct(); 
    280282                userSpeech.setReceiver(target); 
     
    282284                userSpeech.setUtterance(text); 
    283285                userSpeech.setActionType(SpeechAct.UserSpeech); 
    284                  
    285                 if(this.userLanguage!= null) 
     286 
     287                if(this._userLanguage!= null) 
    286288                { 
    287289                        try 
    288290                        { 
    289                                 String speech = this.userLanguage.Input(userSpeech.toLanguageEngine()); 
     291                                String speech = this._userLanguage.Input(userSpeech.toLanguageEngine()); 
    290292                                userSpeech = (SpeechAct) SpeechAct.ParseFromXml(speech); 
    291293                                userSpeech.setActionType(SpeechAct.UserSpeech); 
    292294                                String perception = "ACTION-FINISHED " + user + " UserSpeech " + target + " " + userSpeech.toXML(); 
    293295                                this.SendPerceptionToAll(perception); 
    294                                  
     296 
    295297                        } 
    296298                        catch (Exception e) 
     
    301303                return null; 
    302304        } 
    303          
     305 
    304306        public UserInterface GetUserInterface(){ 
    305307                return _userInterface; 
    306308        } 
    307          
     309 
    308310        public void ChangeTime( String time ){ 
    309311                for( int i = 0, limit = _agents.size(); i != limit; ++i ){ 
     
    311313                } 
    312314        } 
    313          
     315 
    314316        public void ChangePlace( String location ){ 
    315317                for( int i = 0, limit = _agents.size(); i != limit; ++i ){ 
     
    318320                } 
    319321        } 
    320          
     322 
    321323        // Meiyii 11/03/09  
    322324        public void ChangeUser( String previousUser, String user ){ 
     
    334336                                } 
    335337                        } 
    336                          
     338 
    337339                        if(user.equalsIgnoreCase("LukePaulie")) 
    338340                        { 
     
    346348                } 
    347349        } 
    348                  
     350 
    349351        // Meiyii 06/04/09  
    350352        public void ChangeExperimentCase( String expCase ){ 
    351          
     353 
    352354                if(_scenery.equals("AmyHouse")) 
    353355                { 
     
    390392                } 
    391393        } 
    392          
     394 
     395 
    393396        public void ReadyForNextStep(){ 
    394397                //SendPerceptionToAll( "READY-FOR-NEXT-STEP" ); 
    395398                SendPerceptionToAll( "IDENTIFY-USER Amy Pixota" ); 
    396399        } 
    397          
     400 
    398401        String knownInfo = ""; 
    399402        public void AddKnownInfo( String info ){ 
    400403                knownInfo = knownInfo + info + "*"; 
    401404        } 
    402          
     405 
    403406        public void CCMemory(){ 
    404407                SendPerceptionToAll("AdvancedMemory CC-MEMORY"); 
    405408        } 
    406          
     409 
    407410        public void SAMemory(String question){ 
    408411                SendPerceptionToAll("AdvancedMemory SA-MEMORY " + question + "$" + knownInfo ); 
    409412                knownInfo = ""; 
    410413        } 
    411          
     414 
    412415        String gAttributes = ""; 
    413416        public void AddGAttributes( String attribute ){ 
    414417                gAttributes = gAttributes + attribute + "*"; 
    415418        } 
    416          
     419 
    417420        public void GMemory(){ 
    418421                SendPerceptionToAll("AdvancedMemory G-MEMORY " + gAttributes); 
     
    420423                gAttributes = ""; 
    421424        } 
    422                  
     425 
    423426        public synchronized void removeAgent(RemoteAgent ra){ 
    424427                _agents.remove(ra); 
     
    430433                _ga = null; 
    431434        } 
    432          
     435 
    433436        public GretaAgent GetGreta(){ 
    434437                return _ga; 
    435438        } 
    436          
     439 
    437440        public String GetUserOptionsFile() { 
    438441                return this._userOptionsFile; 
Note: See TracChangeset for help on using the changeset viewer.