Changeset 663


Ignore:
Timestamp:
11/09/2010 11:07:32 AM (8 years ago)
Author:
joao.dias
Message:
 
Location:
AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/util
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/util/ConfigurationManager.java

    r654 r663  
    11package FAtiMA.util; 
     2 
     3import java.io.File; 
     4import java.io.IOException; 
     5import java.util.ArrayList; 
     6import java.util.HashMap; 
     7 
     8import javax.xml.parsers.ParserConfigurationException; 
     9import javax.xml.parsers.SAXParser; 
     10import javax.xml.parsers.SAXParserFactory; 
     11 
     12import org.xml.sax.SAXException; 
     13 
     14import FAtiMA.AgentCore; 
     15import FAtiMA.util.enumerables.AgentPlatform; 
     16import FAtiMA.util.parsers.ScenarioLoaderHandler; 
    217 
    318/* 
     
    722* 
    823*/ 
    9  
    10 public class FileLocator { 
    11         private String saveDirectory, actionsFile, goalsFile, personalityFile; 
     24public class ConfigurationManager { 
     25        private static final String PLATFORM = "platform"; 
     26        private static final String SAVE_DIRECTORY = "saveDirectory"; 
     27        private static final String HOST = "host"; 
     28        private static final String PORT = "port"; 
     29        private static final String DISPLAY_MODE = "displayMode"; 
     30        private static final String NAME = "name"; 
     31        private static final String DISPLAY_NAME = "displayName";        
     32        private static final String SEX = "sex"; 
     33        private static final String ROLE = "role"; 
     34        private static final String ACTIONS_FILE = "actionsFile";        
     35        private static final String GOALS_FILE = "goalsFile"; 
     36         
     37         
     38        private String mindPath; 
     39        private HashMap<String,String> agentConfiguration; 
     40        private HashMap<String,String> agentProperties; 
     41         
     42        //private String saveDirectory, actionsFile, goalsFile, personalityFile; 
    1243         
    1344        //singleton pattern 
    14         private FileLocator(){} 
    15         private static FileLocator soleInstance = new FileLocator(); 
     45        private ConfigurationManager(){} 
     46        private static ConfigurationManager soleInstance = new ConfigurationManager(); 
    1647         
    1748 
    18         private static FileLocator getInstance(){ 
     49        private static ConfigurationManager getInstance(){ 
    1950                return soleInstance; 
    2051        } 
    2152         
    22         public static void initialize(String mindPath, String saveDirectory, String actionsFile, String goalsFile, String role){ 
    23                 getInstance().saveDirectory = saveDirectory; 
    24                 getInstance().actionsFile = mindPath + actionsFile + ".xml"; 
    25                 getInstance().goalsFile = mindPath + goalsFile + ".xml"; 
    26                 getInstance().personalityFile = mindPath + "roles/" + role + "/" + role + ".xml"; 
     53        public static void initialize(String mindPath, String scenarioName, String agentName) throws SAXException, IOException, ParserConfigurationException{ 
     54                String scenarioFileName = mindPath + AgentCore.SCENARIO_FILENAME;        
     55                getInstance().mindPath = mindPath; 
     56                loadConfigurationFromScenarioFile(scenarioFileName,scenarioName,agentName); 
     57        } 
     58         
     59        private static void loadConfigurationFromScenarioFile(String scenarioFileName, String scenarioName, String agentName) throws SAXException, IOException, ParserConfigurationException{ 
     60                ScenarioLoaderHandler scenHandler = new ScenarioLoaderHandler(scenarioName,agentName); 
     61                SAXParserFactory factory = SAXParserFactory.newInstance(); 
     62                SAXParser parser = factory.newSAXParser(); 
     63                parser.parse(new File(scenarioFileName), scenHandler); 
     64                //side-effects 
     65                getInstance().agentProperties = scenHandler.getAgentProperties(); 
     66                getInstance().agentConfiguration = scenHandler.getAgentConfiguration(); 
     67        } 
     68         
     69        public static short getPlatform(){ 
     70                String platform = getInstance().getConfigurationValue(PLATFORM); 
     71                if(platform.equalsIgnoreCase("ION")){ 
     72                        return AgentPlatform.ION; 
     73                }else if(platform.equalsIgnoreCase("WORLDSIM")){ 
     74                        return AgentPlatform.WORLDSIM; 
     75                }else{ 
     76                        return -1; //invalid platform 
     77                } 
     78        } 
     79         
     80        public static String getSaveDirectory(){ 
     81                return getInstance().getConfigurationValue(SAVE_DIRECTORY); 
     82        } 
     83                 
     84        public static String getHost(){ 
     85                return getInstance().getConfigurationValue(HOST);                
     86        } 
     87         
     88        public static int getPort(){ 
     89                return Integer.parseInt(getInstance().getConfigurationValue(PORT)); 
     90        } 
     91         
     92        public static String getActionsFile(){ 
     93                String actionsFile = getInstance().getConfigurationValue(ACTIONS_FILE);          
     94 
     95                return getInstance().mindPath + actionsFile + ".xml"; 
     96        } 
     97         
     98        public static String getGoalsFile(){ 
     99                String goalsFile = getInstance().getConfigurationValue(GOALS_FILE);              
     100                return getInstance().mindPath + goalsFile + ".xml"; 
     101        } 
     102         
     103        public static String getRole(){  
     104                return getInstance().getConfigurationValue(ROLE);        
     105        } 
     106         
     107        public static String getSex(){  
     108                return getInstance().getConfigurationValue(SEX);         
     109        } 
     110         
     111        public static String getName(){  
     112                return getInstance().getConfigurationValue(NAME);        
     113        } 
     114         
     115        public static String getDisplayName(){  
     116                return getInstance().getConfigurationValue(DISPLAY_NAME);        
     117        } 
     118         
     119        public static boolean getDisplayMode(){  
     120                return Boolean.parseBoolean(getInstance().getConfigurationValue(DISPLAY_MODE));  
     121        } 
     122         
     123        public static String getPersonalityFile(){ 
     124                return getInstance().mindPath + "roles/" + getRole() + "/" + getRole() + ".xml"; 
     125        } 
     126 
     127        public static HashMap<String,String> getAgentProperties(){ 
     128                return getInstance().agentProperties;  
    27129        } 
    28130         
    29131         
    30         public static String getSaveDirectory(){ 
    31                 return getInstance().saveDirectory; 
     132        //Auxiliary Method To Prevent From Getting Inexistent Configurations 
     133        private String getConfigurationValue(String name){ 
     134                if(this.agentConfiguration.containsKey(name)){ 
     135                        return this.agentConfiguration.get(name); 
     136                }else{ 
     137                        throw new RuntimeException("There is no configuration with such name: " + name); 
     138                } 
    32139        } 
    33140         
    34         public static String getActionsFile(){ 
    35                 return getInstance().actionsFile; 
    36         } 
    37141         
    38         public static String getGoalsFile(){ 
    39                 return getInstance().goalsFile; 
    40         } 
    41142         
    42         public static String getPersonalityFile(){ 
    43                 return getInstance().personalityFile; 
    44         } 
    45143} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/util/parsers/ScenarioLoaderHandler.java

    r589 r663  
    22 
    33import java.util.ArrayList; 
     4import java.util.HashMap; 
    45import java.util.Iterator; 
    56 
     
    1516        private boolean _isPretendedCharacter; 
    1617        private ArrayList<String> _worldSimArgs; 
    17         private ArrayList<String> _agentArgs; 
     18        private HashMap<String,String> _agentProperties;         
     19        private HashMap<String,String> _agentConfiguration; 
     20         
    1821         
    1922        public ScenarioLoaderHandler(String scenarioName){ 
     
    2124                this._characterName = ""; 
    2225                this._worldSimArgs = new ArrayList<String>(); 
    23                 this._agentArgs = new ArrayList<String>(); 
     26                this._agentConfiguration = new HashMap<String,String>(); 
    2427                this._isPretendedScenario = false;       
    2528        }        
     
    2831                this._scenarioName = scenarioName; 
    2932                this._characterName = characterName; 
    30                 this._agentArgs = new ArrayList<String>(); 
     33                this._agentConfiguration = new HashMap<String,String>(); 
     34                this._agentProperties = new HashMap<String,String>(); 
    3135                this._worldSimArgs = new ArrayList<String>(); 
     36                this._agentConfiguration.put("saveDirectory", ""); //default value 
    3237                this._isPretendedScenario = false; 
    3338                this._isPretendedCharacter = false; 
     39                 
    3440        } 
    3541         
     
    3743                String[] result = new String[_worldSimArgs.size()];              
    3844                Iterator<String> it = _worldSimArgs.iterator(); 
    39                 int i = 0; 
    40                  
    41                 while(it.hasNext()){ 
    42                         String arg = it.next(); 
    43                         result[i] = arg; 
    44                         i++; 
    45                 } 
    46                 return result; 
    47         } 
    48          
    49         public String[] getAgentArguments(){ 
    50                 String[] result = new String[_agentArgs.size()];                 
    51                 Iterator<String> it = _agentArgs.iterator(); 
    5245                int i = 0; 
    5346                 
     
    9184                        if(_characterName.equalsIgnoreCase(attributes.getValue("name"))){ 
    9285                                this._isPretendedCharacter = true; 
    93                                 _agentArgs.add(attributes.getValue("platform")); 
    94                                 _agentArgs.add(attributes.getValue("host")); 
    95                                 _agentArgs.add(attributes.getValue("port")); 
    96                                 _agentArgs.add(attributes.getValue("saveDirectory")); 
    97                                 _agentArgs.add(attributes.getValue("name")); 
    98                                 _agentArgs.add(attributes.getValue("displayMode")); 
    99                                 _agentArgs.add(attributes.getValue("sex")); 
    100                                 _agentArgs.add(attributes.getValue("role")); 
    101                                 _agentArgs.add(attributes.getValue("displayName")); 
    102                                 _agentArgs.add(attributes.getValue("actionsFile")); 
    103                                 _agentArgs.add(attributes.getValue("goalsFile")); 
    104                                 _agentArgs.add(attributes.getValue("cultureName")); 
    105                                 if(attributes.getValue("load") == null)  
    106                                 { 
    107                                          
    108                                         _agentArgs.add("false"); 
    109                                 } 
    110                                 else 
    111                                 { 
    112                                         _agentArgs.add(attributes.getValue("load")); 
     86                                 
     87                                for(int i=0; i < attributes.getLength(); i++ ){ 
     88                                        _agentConfiguration.put(attributes.getLocalName(i), attributes.getValue(i)); 
    11389                                } 
    11490                        }else{ 
     
    12096        public void Property(Attributes attributes){ 
    12197                if(_isPretendedScenario && _isPretendedCharacter){ 
    122                         _agentArgs.add(attributes.getValue("name")+":"+attributes.getValue("value")); 
     98                         
     99                        _agentProperties.put(attributes.getValue("name"),attributes.getValue("value")); 
    123100                } 
    124101        } 
    125102         
     103        public  HashMap<String,String> getAgentProperties(){ 
     104                return this._agentProperties; 
     105        } 
     106         
     107        public HashMap<String, String> getAgentConfiguration(){ 
     108                return this._agentConfiguration; 
     109        } 
    126110} 
Note: See TracChangeset for help on using the changeset viewer.