/**
 * Copyright (C) 2009-2014 Dell, Inc.
 * See annotations for authorship information
 *
 * ====================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ====================================================================
 */

package org.dasein.cloud.admin;

import org.dasein.cloud.compute.Platform;

import java.io.Serializable;

public class Prepayment implements Serializable {
    private static final long serialVersionUID = -3570970098813092306L;
    
    private int      count;
    private String   currencyCode;
    private String   dataCenterId;
    private double   fixedFee;
    private int      periodInDays;
    private Platform platform;
    private long   periodStartTimestamp;
    private PrepaymentState prepaymentState;
    private boolean  forVLAN;
    private String   providerPrepaymentId;
    private String   size;
    private String   software;
    private double   usageFee;
    private double   hourlyFee;
    
    public Prepayment() { }

    public Prepayment(String prepaymentId, String currencyCode, int period, long periodStart, String dataCenterId, Platform platform, String size, String software, int count, double fixedFee, double usageFee, PrepaymentState state) {
      this.providerPrepaymentId = prepaymentId;
      this.count = count;
      this.currencyCode = currencyCode;
      this.dataCenterId = dataCenterId;
      periodStartTimestamp = periodStart;
      this.fixedFee = fixedFee;
      this.periodInDays = period;
      this.platform = platform;
      this.size = size;
      this.software = software;
      this.usageFee = usageFee;
      prepaymentState = state;
      this.forVLAN = false;
      this.hourlyFee = 0.0;
    }

    public Prepayment(String prepaymentId, String currencyCode, int period, long periodStart, String dataCenterId, Platform platform, String size, String software, int count, double fixedFee, double usageFee, PrepaymentState state, boolean forVlan, double hourlyFee) {
        this.providerPrepaymentId = prepaymentId;
        this.count = count;
        this.currencyCode = currencyCode;
        this.dataCenterId = dataCenterId;
        periodStartTimestamp = periodStart;
        this.fixedFee = fixedFee;
        this.periodInDays = period;
        this.platform = platform;
        this.size = size;
        this.software = software;
        this.usageFee = usageFee;
        prepaymentState = state;
        this.forVLAN = forVlan;
        this.hourlyFee = hourlyFee;
    }
    
    public int getCount() {
        return count;
    }
    
    public String getCurrencyCode() {
        return currencyCode;
    }
    
    public String getDataCenterId() {
        return dataCenterId;
    }
    
    public double getFixedFee() {
        return fixedFee;
    }
    
    public int getPeriodInDays() {
        return periodInDays;
    }
    
    public Platform getPlatform() {
        return platform;
    }
    
    public long getPeriodStartTimestamp() {
        return periodStartTimestamp;
    }
    
    public PrepaymentState getPrepaymentState() {
        return prepaymentState;
    }

    public String getProviderPrepaymentId() {
        return providerPrepaymentId;
    }
    
    public String getSize() {
        return size;
    }
    
    public String getSoftware() {
        return software;
    }
    
    public double getUsageFee() {
        return usageFee;
    }

    public boolean isForVlan() {
      return forVLAN;
    }

    public double getHourlyFee() {
      return hourlyFee;
    }
    
    public void setCount(int count) {
        this.count = count;
    }
    
    public void setCurrencyCode(String currencyCode) {
        this.currencyCode = currencyCode;
    }
    
    public void setDataCenterId(String dataCenterId) {
        this.dataCenterId = dataCenterId;
    }
    
    public void setFixedFee(double fixedFee) {
        this.fixedFee = fixedFee;
    }
    
    public void setPeriodInDays(int periodInDays) {
        this.periodInDays = periodInDays;
    }
    
    public void setPeriodStartTimestamp(long ts) {
        this.periodStartTimestamp = ts;
    }
    
    public void setPlatform(Platform platform) {
        this.platform = platform;
    }
    
    public void setPrepaymentId(String prepaymentId) {
        this.providerPrepaymentId = prepaymentId;
    }
    
    public void setPrepaymentState(PrepaymentState prepaymentState) {
        this.prepaymentState = prepaymentState;
    }
    
    public void setSize(String size) {
        this.size = size;
    }
    
    public void setSoftware(String software) {
        this.software = software;
    }
    
    public void setUsageFee(double usageFee) {
        this.usageFee = usageFee;
    }

    public void setForVlan(boolean forVlan) {
      this.forVLAN = forVlan;
    }

    public void setHourlyFee(double hrFee) {
      this.hourlyFee = hrFee;
    }
}

@@ -1394,24 +1394,58 @@
 ing   size;%0A
+    private String   utilization;%0A
     private 
@@ -5444,11 +5444,179 @@
 e;%0A    %7D
+%0A%0A    public String getUtilization() %7B%0A      return utilization;%0A    %7D%0A%0A    public void setUtilization(String utilization) %7B%0A      this.utilization = utilization;%0A    %7D
 %0A%7D%0A

Add utilization to Prepayment