Ignore:
Timestamp:
01/28/13 10:18:30 (12 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/trunk/src/simulator/stats/implementation/out/StringSerializer.java

    r543 r805  
    1414import simulator.stats.implementation.ResourcePowerStats; 
    1515import simulator.stats.implementation.ResourceStats; 
     16import simulator.stats.implementation.ResourceTemperatureStats; 
    1617import simulator.stats.implementation.ResourceUsageStats; 
    1718import simulator.stats.implementation.TaskStats; 
     
    429430                return buffer.toString(); 
    430431        } 
     432         
     433        public Object visit(ResourceTemperatureStats resourceTemperatureStats) { 
     434                Map<Long, Double> resourceTemperature = resourceTemperatureStats.getHistory(); 
     435                 
     436                int mapSize = resourceTemperature.size(); 
     437                /* 
     438                 * FIXME: 
     439                 * Integer.MAX_VALUE = 2147483647. We assume, that each line contains  
     440                 * max 30 signs - this gives max 71582788 lines. If resourceUsage map 
     441                 * contains more elements then we have a problem, because content of 
     442                 * resourceUsage map will not fit in the buffer. 
     443                 * This will need further attention in the future. 
     444                 */ 
     445                int maxSize = (Integer.MAX_VALUE / 30 ) - 1; 
     446                if(mapSize >= maxSize){ 
     447                        log.error("Resource temperature data is to long to fit in the buffer."); 
     448                        return null; 
     449                } 
     450                 
     451                int size = 30 * resourceTemperature.size(); 
     452                 
     453                StringBuffer buffer = null; 
     454 
     455                if(printedHeaders.add(resourceTemperatureStats.getUsageType())) { 
     456                        buffer = new StringBuffer(size + 42); 
     457                        String[] headers = resourceTemperatureStats.getHeaders(); 
     458                        for(int i = 0; i < headers.length; i++) 
     459                        { 
     460                                buffer.append(headers[i]); 
     461                                buffer.append(fieldSeparator); 
     462                        } 
     463                        buffer.append(System.getProperty("line.separator")); 
     464                } else { 
     465                        buffer = new StringBuffer(size); 
     466                } 
     467                 
     468                 
     469                for (Long timestamp : resourceTemperature.keySet()) { 
     470                         
     471                        buffer.append(resourceTemperatureStats.getResourceName()); 
     472                        buffer.append(fieldSeparator); 
     473                        Double value = resourceTemperature.get(timestamp); 
     474                        buffer.append(timestamp); 
     475                        buffer.append(fieldSeparator); 
     476                        buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT 
     477                                        .format(value)); 
     478                        buffer.append(fieldSeparator); 
     479                        buffer.append(System.getProperty("line.separator")); 
     480 
     481                } 
     482                 
     483                if(resourceTemperature.size() > 0) { 
     484                        buffer.append("mean: "+resourceTemperatureStats.getMeanValue() + " sum: " +resourceTemperatureStats.getSumValue()); 
     485                        buffer.append(System.getProperty("line.separator"));     
     486                } 
     487 
     488                return buffer.toString(); 
     489        } 
     490 
    431491 
    432492        public Object visit(GSSAccumulatorsStats accStats) { 
Note: See TracChangeset for help on using the changeset viewer.