/*
 * Copyright 2009-2011 the original author or authors.
 *
 * 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.powertac.common.msg;

import org.powertac.common.Broker;
import org.powertac.common.state.Domain;
import org.powertac.common.state.StateChange;
import org.powertac.common.xml.BrokerConverter;
import org.powertac.common.IdGenerator;
import com.thoughtworks.xstream.annotations.*;

/**
 * Represents a response from server to broker to publication or update
 * of a tariff.
 * @author jcollins
 */
@Domain
@XStreamAlias("tariff-status")
public class TariffStatus //implements Serializable
{
  public enum Status {success, noSuchTariff, noSuchUpdate, illegalOperation,
    invalidTariff, invalidUpdate}

  @XStreamAsAttribute
  private long id = IdGenerator.createId();

  @XStreamConverter(BrokerConverter.class)
  private Broker broker;

  @XStreamAsAttribute
  private long tariffId;
  
  @XStreamAsAttribute
  private long updateId;
  
  private String message;
  
  @XStreamAsAttribute
  private Status status = Status.success;
  
  public TariffStatus (Broker broker, long tariffId, 
                       long updateId, Status status)
  {
    super();
    this.broker = broker;
    this.tariffId = tariffId;
    this.updateId = updateId;
    this.status = status;
  }

  public String getMessage ()
  {
    return message;
  }

  @StateChange
  public TariffStatus withMessage (String message)
  {
    this.message = message;
    return this;
  }

  public long getId ()
  {
    return id;
  }

  public Broker getBroker ()
  {
    return broker;
  }

  public long getTariffId ()
  {
    return tariffId;
  }

  public long getUpdateId ()
  {
    return updateId;
  }

  public Status getStatus ()
  {
    return status;
  }
}

@@ -675,24 +675,66 @@
 mon.Broker;%0A
+import org.powertac.common.TariffMessage;%0A
 import org.p
@@ -812,96 +812,8 @@
 ge;%0A
-import org.powertac.common.xml.BrokerConverter;%0Aimport org.powertac.common.IdGenerator;%0A
 impo
@@ -1041,32 +1041,28 @@
 tus 
-//implements Serializabl
+extends TariffMessag
 e%0A%7B%0A
@@ -1177,144 +1177,8 @@
 e%7D%0A%0A
-  @XStreamAsAttribute%0A  private long id = IdGenerator.createId();%0A%0A  @XStreamConverter(BrokerConverter.class)%0A  private Broker broker;%0A%0A
   @X
@@ -1494,35 +1494,15 @@
 per(
-);%0A    this.broker = 
 broker
+)
 ;%0A  
@@ -1773,112 +1773,8 @@
  %7D%0A%0A
-  public long getId ()%0A  %7B%0A    return id;%0A  %7D%0A%0A  public Broker getBroker ()%0A  %7B%0A    return broker;%0A  %7D%0A%0A
   pu

make TariffStatus be a kind of TariffMessage