package is.idega.idegaweb.campus.data;
import is.idega.idegaweb.campus.block.allocation.data.Contract;
import is.idega.idegaweb.campus.block.allocation.data.ContractHome;
import java.util.Collection;
import java.util.Date;
import javax.ejb.EJBException;
import javax.ejb.FinderException;
import com.idega.block.building.data.Apartment;
import com.idega.data.IDOLookup;
import com.idega.data.IDOLookupException;
import com.idega.util.IWTimestamp;
/**
* @author <a href="mailto:aron@idega.is">aron@idega.is
* @version 1.0
*/
public class ApartmentContracts {
private Apartment apartment;
private Collection contracts;
private IWTimestamp nextDate;
private String[] statuses;
public ApartmentContracts() {
this(null, null);
}
public ApartmentContracts(Apartment apartment, String[] statuses) {
this.apartment = apartment;
nextDate = IWTimestamp.RightNow();
nextDate.addYears(-2);
this.statuses = statuses;
lookupContracts();
}
public void setApartment(Apartment apartment) {
this.apartment = apartment;
}
public void addContract(Contract contract) {
contracts.add(contract);
checkAdd(contract);
}
public boolean hasContracts() {
return contracts != null;
}
public void setContracts(Collection contracts) {
contracts.addAll(contracts);
java.util.Iterator I = contracts.iterator();
while (I.hasNext()) {
Contract contract = (Contract) I.next();
checkAdd(contract);
}
}
private void checkAdd(Contract C) {
IWTimestamp date = new IWTimestamp(C.getValidTo());
if (nextDate != null && date.isLaterThan(nextDate)) {
nextDate = date;
}
}
public Apartment getApartment() {
return apartment;
}
public Collection getContracts() {
return contracts;
}
public Date getNextDate() {
return (Date) nextDate.getDate();
}
private void lookupContracts() {
if (apartment != null) {
try {
ContractHome cHome = (ContractHome) IDOLookup
.getHome(Contract.class);
if (statuses != null) {
Collection cons = cHome.findByApartmentAndStatus(
(Integer) apartment.getPrimaryKey(), statuses);
setContracts(cons);
} else {
Collection cons = cHome
.findByApartmentID((Integer) apartment
.getPrimaryKey());
setContracts(cons);
}
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (EJBException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
}
}
}