Ignore:
Timestamp:
07/07/11 11:04:27 (13 years ago)
Author:
sherbold
Message:
  • URI of web sessions is not parsed and split into path and GET parameters; of the GET parameters only the name is used to define the type
Location:
trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/WeblogParser.java

    r78 r111  
    33import java.io.FileNotFoundException; 
    44import java.io.IOException; 
     5import java.net.URI; 
     6import java.net.URISyntaxException; 
    57import java.text.ParseException; 
    68import java.text.SimpleDateFormat; 
     
    4749        } 
    4850         
    49         public void parseFile(String filename) throws IOException, FileNotFoundException, ParseException { 
     51        public void parseFile(String filename) throws IOException, FileNotFoundException, ParseException, URISyntaxException { 
    5052                String[] lines = FileTools.getLinesFromFile(filename); 
    5153                 
     
    6668                        String dateString = values[1]; 
    6769                        long timestamp = dateFormat.parse(dateString).getTime(); 
    68                         String uri = values[2]; 
     70                        String uriString = values[2]; 
    6971                        // String ref = values[3]; // referer is not yet used! 
    7072                        String agent; 
     
    7779                        List<String> postedVars = new ArrayList<String>(); 
    7880                        if( values.length==6 ) { // post vars found 
    79                                 for( String postVar : values[5].split(" ") ) { 
     81                                for( String postVar : values[5].trim().split(" ") ) { 
    8082                                        postedVars.add(postVar); 
    8183                                } 
    8284                        } 
    8385                        if( !isRobot(agent) ) { 
    84                                 WebEvent event = new WebEvent(uri, timestamp, postedVars); 
     86                                URI uri = new URI(uriString); 
     87                                 
     88                                String path = uri.getPath();                             
     89                                List<String> getVars = extractGetVarsFromUri(uri); 
     90                                 
     91                                WebEvent event = new WebEvent(path, timestamp, postedVars, getVars); 
    8592                                 
    8693                                // find session and add event 
     
    141148                return agent.matches(robotRegex); 
    142149        } 
     150         
     151        private List<String> extractGetVarsFromUri(URI uri) { 
     152                List<String> getVars = new ArrayList<String>(); 
     153                String query = uri.getQuery(); 
     154                if( query!=null ) { 
     155                        String[] paramPairs = query.split("&"); 
     156                        for( String paramPair : paramPairs ) { 
     157                                String[] paramSplit = paramPair.split("="); 
     158                                getVars.add(paramSplit[0]); 
     159                        } 
     160                } 
     161                return getVars; 
     162        } 
    143163} 
  • trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/commands/CMDloadSessionsFromClickstream.java

    r84 r111  
    33import java.io.FileNotFoundException; 
    44import java.io.IOException; 
     5import java.net.URISyntaxException; 
    56import java.security.InvalidParameterException; 
    67import java.text.ParseException; 
     
    4142                        Console.println("Invalid format of date stamps."); 
    4243                        Console.println(e.getMessage()); 
     44                } catch (URISyntaxException e) { 
     45                        Console.println("Invalid URI!"); 
     46                        Console.println(e.getMessage()); 
    4347                } 
    4448                 
  • trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebEvent.java

    r87 r111  
    88 
    99        /** 
     10         * <p> 
    1011         * Id for object serialization. 
     12         * </p> 
    1113         */ 
    1214        private static final long serialVersionUID = 1L; 
    1315         
    1416        private final long timestamp; 
    15         private String uri; 
     17                 
    1618         
    17         private final static String makeType(String uri, List<String> postVars) { 
    18                 String type = uri; 
     19        private final static String makeType(String path, List<String> postVars, List<String> getVars) { 
     20                String type = path; 
     21                if( getVars!=null && !getVars.isEmpty() ) { 
     22                        type += "+GET"+getVars.toString().replace(" ", ""); 
     23                } 
    1924                if( postVars!=null && !postVars.isEmpty() ) { 
    20                         type += postVars.toString().replace(" ", ""); 
     25                        type += "+POST"+postVars.toString().replace(" ", ""); 
    2126                } 
    2227                return type; 
    2328        } 
    2429         
    25         public WebEvent(String uri, long timestamp, List<String> postVars) { 
    26                 super(makeType(uri, postVars)); 
     30        public WebEvent(String path, long timestamp, List<String> postVars, List<String> getVars) { 
     31                super(makeType(path, postVars, getVars)); 
    2732                this.timestamp = timestamp; 
    28                 this.uri = uri; 
    29                 addReplayEvent(new WebRequest(uri, postVars)); 
     33                addReplayEvent(new WebRequest(path, postVars, getVars)); 
    3034        } 
    3135         
  • trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/data/WebRequest.java

    r90 r111  
    1414 
    1515        List<String> postVars; 
     16        List<String> getVars; 
    1617         
    1718        String targetUri; 
    1819         
    19         public WebRequest(String uri, List<String> postVars) { 
     20        public WebRequest(String uri, List<String> postVars, List<String> getVars) { 
    2021                targetUri = uri; 
    2122                this.postVars = new ArrayList<String>(postVars); // defensive copy 
     23                this.getVars = new ArrayList<String>(getVars); 
    2224        } 
    2325         
     
    3335                return null; 
    3436        } 
     37         
     38        @Override 
     39        public boolean equals(Object other) { 
     40                if( this==other ) { 
     41                        return true; 
     42                } 
     43                if( other instanceof WebRequest ) { 
     44                        return targetUri.equals(((WebRequest) other).targetUri) && postVars.equals(((WebRequest) other).postVars); 
     45                } 
     46                return false; 
     47        } 
     48         
     49        @Override 
     50        public int hashCode() { 
     51                int multiplier = 17; 
     52                int hash = 42; 
     53 
     54                hash = multiplier * hash + targetUri.hashCode(); 
     55                hash = multiplier * hash + postVars.hashCode(); 
     56 
     57                return hash; 
     58        } 
    3559 
    3660} 
Note: See TracChangeset for help on using the changeset viewer.