package module.mission.domain; import module.geography.domain.Country; import module.mission.domain.activity.UpdateForeignMissionDetailsActivityInformation; import module.mission.domain.activity.UpdateMissionDetailsActivityInformation; import module.workflow.util.ClassNameBundle; import org.joda.time.DateTime; import pt.ist.expenditureTrackingSystem._development.Bundle; import pt.ist.expenditureTrackingSystem.domain.util.DomainException; @ClassNameBundle(bundle = "MissionResources") public class ForeignMission extends ForeignMission_Base { public ForeignMission(final ForeignMissionProcess foreignMissionProcess, final Country country, final String location, final DateTime daparture, final DateTime arrival, final String objective, final Boolean useRequestingUnitAsPayingUnit, final Boolean grantOwnerEquivalence) { setMissionProcess(foreignMissionProcess); setCountry(country); setMissionInformation(location, daparture, arrival, objective, useRequestingUnitAsPayingUnit, grantOwnerEquivalence); } @Override public void fill(final UpdateMissionDetailsActivityInformation updateMissionDetailsActivityInformation) { super.fill(updateMissionDetailsActivityInformation); final UpdateForeignMissionDetailsActivityInformation updateForeignMissionDetailsActivityInformation = (UpdateForeignMissionDetailsActivityInformation) updateMissionDetailsActivityInformation; updateForeignMissionDetailsActivityInformation.setCountry(getCountry()); } @Override public void updateDetails(final UpdateMissionDetailsActivityInformation updateMissionDetailsActivityInformation) { super.updateDetails(updateMissionDetailsActivityInformation); final UpdateForeignMissionDetailsActivityInformation updateForeignMissionDetailsActivityInformation = (UpdateForeignMissionDetailsActivityInformation) updateMissionDetailsActivityInformation; final Country country = updateForeignMissionDetailsActivityInformation.getCountry(); setCountry(country); } @Override public void setCountry(final Country country) { if (country == null) { throw new DomainException(Bundle.EXPENDITURE, "error.mission.country.none"); } if (country == MissionSystem.getInstance().getCountry()) { throw new DomainException(Bundle.EXPENDITURE, "mission.process.exception.foreign.mission.not.allowed.inside.national.country"); } super.setCountry(country); } @Override public String getDestinationDescription() { final Country country = getCountry(); return country == null ? getLocation() : getLocation() + ", " + country.getName().getContent(); } @Deprecated public boolean hasCountry() { return getCountry() != null; } }