public void process(Resource resource, int index, byte[] data)
   {
      CostRateTable result = new CostRateTable();

      if (data != null)
      {
         for (int i = 16; i + 44 <= data.length; i += 44)
         {
            Rate standardRate = new Rate(MPPUtility.getDouble(data, i), TimeUnit.HOURS);
            TimeUnit standardRateFormat = getFormat(MPPUtility.getShort(data, i + 8));
            Rate overtimeRate = new Rate(MPPUtility.getDouble(data, i + 16), TimeUnit.HOURS);
            TimeUnit overtimeRateFormat = getFormat(MPPUtility.getShort(data, i + 24));
            Double costPerUse = NumberHelper.getDouble(MPPUtility.getDouble(data, i + 32) / 100.0);
            Date endDate = MPPUtility.getTimestampFromTenths(data, i + 40);
            CostRateTableEntry entry = new CostRateTableEntry(standardRate, standardRateFormat, overtimeRate, overtimeRateFormat, costPerUse, endDate);
            result.add(entry);
         }
         Collections.sort(result);
      }
      else
      {
         //
         // MS Project economises by not actually storing the first cost rate
         // table if it doesn't need to, so we take this into account here.
         //
         if (index == 0)
         {
            Rate standardRate = resource.getStandardRate();
            Rate overtimeRate = resource.getOvertimeRate();
            Number costPerUse = resource.getCostPerUse();
            CostRateTableEntry entry = new CostRateTableEntry(standardRate, standardRate.getUnits(), overtimeRate, overtimeRate.getUnits(), costPerUse, CostRateTableEntry.DEFAULT_ENTRY.getEndDate());
            result.add(entry);
         }
         else
         {
            result.add(CostRateTableEntry.DEFAULT_ENTRY);
         }
      }

      resource.setCostRateTable(index, result);
   }
public void process ( Resource resource , int index , byte [ ] data ) { CostRateTable result = new CostRateTable ( ) ; if ( data != null ) { for ( int i = 16 ; i + 44 <= data . length ; i += 44 ) { Rate standardRate = new Rate ( MPPUtility . getDouble ( data , i ) , TimeUnit . HOURS ) ; TimeUnit standardRateFormat = getFormat ( MPPUtility . getShort ( data , i + 8 ) ) ; Rate overtimeRate = new Rate ( MPPUtility . getDouble ( data , i + 16 ) , TimeUnit . HOURS ) ; TimeUnit overtimeRateFormat = getFormat ( MPPUtility . getShort ( data , i + 24 ) ) ; Double costPerUse = NumberHelper . getDouble ( MPPUtility . getDouble ( data , i + 32 ) / 100.0 ) ; Date endDate = MPPUtility . getTimestampFromTenths ( data , i + 40 ) ; CostRateTableEntry entry = new CostRateTableEntry ( standardRate , standardRateFormat , overtimeRate , overtimeRateFormat , costPerUse , endDate ) ; result . add ( entry ) ; } Collections . sort ( result ) ; } else { if ( index == 0 ) { Rate standardRate = resource . getStandardRate ( ) ; Rate overtimeRate = resource . getOvertimeRate ( ) ; Number costPerUse = resource . getCostPerUse ( ) ; CostRateTableEntry entry = new CostRateTableEntry ( standardRate , standardRate . getUnits ( ) , overtimeRate , overtimeRate . getUnits ( ) , costPerUse , CostRateTableEntry . DEFAULT_ENTRY . getEndDate ( ) ) ; result . add ( entry ) ; } else { result . add ( CostRateTableEntry . DEFAULT_ENTRY ) ; } } resource . setCostRateTable ( index , result ) ; }
Creates a CostRateTable instance from a block of data.

@param resource parent resource
@param index cost rate table index
@param data data block