import java.util.*;
import java.io.*;

public class Offerta implements Comparable, Serializable {

    private String offerente;
    private int offerta;

    public Offerta(String offerente, int offerta) {
        this.offerente = offerente;
        this.offerta = offerta;
    }

    public static Offerta decode(String message)
           throws OffertaError {
        StringTokenizer st =
            new StringTokenizer(message, "|");
        if (st.countTokens() < 2)
            throw new OffertaError("Offerta: " + message + " non valida.");
        else {
            try {
                String offerente = st.nextToken();
                int offerta = Integer.parseInt(st.nextToken());
                return new Offerta(offerente, offerta);
            }
            catch(RuntimeException err) {
                throw new OffertaError("Offerta: " + message + " non valida.");
            }
        }
    }

    public String encode() {
        return offerente + "|" + offerta;
    }

    public String getOfferente() {
        return offerente;
    }

    public int getOfferta() {
        return offerta;
    }

    public int compareTo(Object ob) {
        if (offerta < ((Offerta)ob).getOfferta())
            return -1;
        else if (offerta > ((Offerta)ob).getOfferta())
            return 1;
        else return 0;
    }

    public String toString() {
        return "Offerta di " + offerta +
               " euro da parte di " + offerente + ".";
    }

}
