/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package phonetalks.entities.subscriber;
import java.io.Serializable;
import phonetalks.entities.calls.PhoneCall;
import phonetalks.exceptions.InvalidNumberException;
import phonetalks.logic.PhoneChecker;
/**
*
* @author Платон
*/
public class SubscriberEntry
extends CallsHistory
implements Serializable, Comparable<SubscriberEntry> {
private Subscriber subscriber;
private String phoneNumber = "";
private long totalTime;
public SubscriberEntry() {};
public SubscriberEntry(Subscriber subscriber, String number) {
this.subscriber = subscriber;
number = number.trim();
if (!PhoneChecker.isNumberCorrect(number)) {
throw new InvalidNumberException("Cannot create entry, number is bad-formatted.");
}
this.phoneNumber = number;
}
public boolean addCall(PhoneCall call) {
if (call == null) {
return false;
}
setTotalTime(getTotalTime() + call.getCallDuration());
add(call);
return true;
}
public boolean removeCall(PhoneCall call) {
if (call == null) {
return false;
}
PhoneCall t = poll();
if (t == null) {
return false;
}
setTotalTime(getTotalTime() - t.getCallDuration());
return true;
}
/**
* @return the subscriber
*/
public Subscriber getSubscriber() {
return subscriber;
}
/**
* @param subscriber the subscriber to set
*/
public void setSubscriber(Subscriber subscriber) {
this.subscriber = subscriber;
}
/**
* @return the phoneNumber
*/
public String getPhoneNumber() {
return phoneNumber;
}
/**
* @param phoneNumber the phoneNumber to set
*/
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
/**
* @return the totalTime
*/
public long getTotalTime() {
return totalTime;
}
/**
* @param totalTime the totalTime to set
*/
public void setTotalTime(long totalTime) {
this.totalTime = totalTime;
}
@Override
public String toString() {
String result = "";
result += getClass().getName()+
"[name="+getSubscriber().toString()+
", "+getPhoneNumber()+", totalTime="+
getTotalTime()+"]";
return result;
}
@Override
public int compareTo(SubscriberEntry o) {
return this.getPhoneNumber().compareTo(o.getPhoneNumber());
}
}