mirror of https://github.com/balkian/SOJA.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
348 lines
6.8 KiB
Java
348 lines
6.8 KiB
Java
package es.upm.dit.gsi.sojason.beans;
|
|
|
|
import jason.asSyntax.Literal;
|
|
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
|
|
import es.upm.dit.gsi.jason.utils.NotationUtils;
|
|
import es.upm.dit.gsi.sojason.services.nlu.NLUModel;
|
|
|
|
public class NLUTravel implements Perceptable {
|
|
|
|
/** */
|
|
public final static String TRAVEL_DOMAIN = "travel";
|
|
|
|
/** The departure date. */
|
|
private String departureDate = null;
|
|
/** The return date. It may be null. */
|
|
private String returnDate = null;
|
|
|
|
/** The maximum price the user is willing to pay */
|
|
private double priceMin = -1;
|
|
/** The minimum price */
|
|
private double priceMax = -1;
|
|
/** The currency */
|
|
private String currency = null;
|
|
|
|
/** The departure location */
|
|
private String locationFrom = null;
|
|
/** The destination location */
|
|
private String locationTo = null;
|
|
|
|
/** The preferred departure Time */
|
|
private String departureTime = null;
|
|
/** the preferred return Time*/
|
|
private String returnTime = null;
|
|
|
|
/** the number of people is traveling */
|
|
private int number = 1;
|
|
|
|
/** */
|
|
private TravelType type = null;
|
|
/** */
|
|
private boolean scales = false;
|
|
|
|
/** The unique id for the dialog. It is used to group dialog entries */
|
|
private String queryId = null;
|
|
|
|
/**
|
|
* @return the departureDate
|
|
*/
|
|
public String getDepartureDate() {
|
|
return departureDate;
|
|
}
|
|
|
|
/**
|
|
* @param departureDate the departureDate to set
|
|
*/
|
|
public void setDepartureDate(String departureDate) {
|
|
this.departureDate = departureDate;
|
|
}
|
|
|
|
/**
|
|
* @return the returnDate
|
|
*/
|
|
public String getReturnDate() {
|
|
return returnDate;
|
|
}
|
|
|
|
/**
|
|
* @param returnDate the returnDate to set
|
|
*/
|
|
public void setReturnDate(String returnDate) {
|
|
this.returnDate = returnDate;
|
|
}
|
|
|
|
/**
|
|
* @return the priceMin
|
|
*/
|
|
public double getPriceMin() {
|
|
return priceMin;
|
|
}
|
|
|
|
/**
|
|
* @param priceMin the priceMin to set
|
|
*/
|
|
public void setPriceMin(double priceMin) {
|
|
this.priceMin = priceMin;
|
|
}
|
|
|
|
/**
|
|
* @param priceMax the priceMax to set
|
|
*/
|
|
public void setPriceMin(String priceMin) {
|
|
if (priceMin == null){ return; }
|
|
|
|
try{
|
|
this.priceMin = Double.parseDouble(priceMin);
|
|
}
|
|
catch (NumberFormatException nfe){
|
|
// Do nothing
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return the priceMax
|
|
*/
|
|
public double getPriceMax() {
|
|
return priceMax;
|
|
}
|
|
|
|
/**
|
|
* @param priceMax the priceMax to set
|
|
*/
|
|
public void setPriceMax(double priceMax) {
|
|
this.priceMax = priceMax;
|
|
}
|
|
|
|
/**
|
|
* @param priceMax the priceMax to set
|
|
*/
|
|
public void setPriceMax(String priceMax) {
|
|
if (priceMax == null){ return; }
|
|
|
|
try{
|
|
this.priceMax = Double.parseDouble(priceMax);
|
|
}
|
|
catch (NumberFormatException nfe){
|
|
// Do nothing
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return the currency
|
|
*/
|
|
public String getCurrency() {
|
|
return currency;
|
|
}
|
|
|
|
/**
|
|
* @param currency the currency to set
|
|
*/
|
|
public void setCurrency(String currency) {
|
|
this.currency = currency;
|
|
}
|
|
|
|
/**
|
|
* @return the locationFrom
|
|
*/
|
|
public String getLocationFrom() {
|
|
return locationFrom;
|
|
}
|
|
|
|
/**
|
|
* @param locationFrom the locationFrom to set
|
|
*/
|
|
public void setLocationFrom(String locationFrom) {
|
|
this.locationFrom = locationFrom;
|
|
}
|
|
|
|
/**
|
|
* @return the locationTo
|
|
*/
|
|
public String getLocationTo() {
|
|
return locationTo;
|
|
}
|
|
|
|
/**
|
|
* @param locationTo the locationTo to set
|
|
*/
|
|
public void setLocationTo(String locationTo) {
|
|
this.locationTo = locationTo;
|
|
}
|
|
|
|
/**
|
|
* @return the departureTime
|
|
*/
|
|
public String getDepartureTime() {
|
|
return departureTime;
|
|
}
|
|
|
|
/**
|
|
* @param departureTime the departureTime to set
|
|
*/
|
|
public void setDepartureTime(String departureTime) {
|
|
this.departureTime = departureTime;
|
|
}
|
|
|
|
/**
|
|
* @return the returnReturn
|
|
*/
|
|
public String getReturnTime() {
|
|
return returnTime;
|
|
}
|
|
|
|
/**
|
|
* @param returnReturn the returnReturn to set
|
|
*/
|
|
public void setReturnTime(String returnTime) {
|
|
this.returnTime = returnTime;
|
|
}
|
|
|
|
/**
|
|
* @return the type
|
|
*/
|
|
public TravelType getType() {
|
|
return type;
|
|
}
|
|
|
|
/**
|
|
* @param type the type to set
|
|
*/
|
|
public void setType(TravelType type) {
|
|
this.type = type;
|
|
}
|
|
|
|
/**
|
|
* @return the scales
|
|
*/
|
|
public boolean isScales() {
|
|
return scales;
|
|
}
|
|
|
|
/**
|
|
* @param scales the scales to set
|
|
*/
|
|
public void setScales(boolean scales) {
|
|
this.scales = scales;
|
|
}
|
|
|
|
/**
|
|
* @return the number
|
|
*/
|
|
public int getNumber() {
|
|
return number;
|
|
}
|
|
|
|
/**
|
|
* @param number the number to set
|
|
*/
|
|
public void setNumber(int number) {
|
|
this.number = number;
|
|
}
|
|
|
|
public void setNumber(String number){
|
|
if(number == null){ return; }
|
|
try{
|
|
this.number = Integer.parseInt(number);
|
|
}
|
|
catch(NumberFormatException nfe){
|
|
// Ok
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return the queryId
|
|
*/
|
|
public String getQueryId() {
|
|
return queryId;
|
|
}
|
|
|
|
/**
|
|
* @param queryId the queryId to set
|
|
*/
|
|
public void setQueryId(String queryId) {
|
|
this.queryId = queryId;
|
|
}
|
|
|
|
|
|
public String toString() {
|
|
|
|
String toString = queryId + number;
|
|
toString += "ticket(s) from: ";
|
|
toString += locationFrom;
|
|
toString += " to: ";
|
|
toString += locationTo;
|
|
toString += " the day ";
|
|
toString += departureDate;
|
|
toString += " at ";
|
|
toString += departureTime;
|
|
toString += " returning the day ";
|
|
toString += returnTime;
|
|
toString += " at ";
|
|
toString += returnTime;
|
|
toString += " for ";
|
|
toString += priceMax + "->" + priceMin;
|
|
toString += " ";
|
|
toString += currency;
|
|
return toString;
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public List<Literal> toPercepts() {
|
|
|
|
List<Literal> list = new LinkedList<Literal>();
|
|
|
|
if(departureDate != null){
|
|
list.add(NLUModel.getLiteralDateDeparture(queryId, TRAVEL_DOMAIN, "03", "04", "2012"));
|
|
}
|
|
|
|
if(returnDate != null){
|
|
list.add(NLUModel.getLiteralDateReturn(queryId, TRAVEL_DOMAIN, "03", "04", "2012"));
|
|
}
|
|
|
|
if(departureTime != null){
|
|
list.add(NLUModel.getLiteralTimeDeparture(queryId, TRAVEL_DOMAIN, "09", "00"));
|
|
}
|
|
|
|
if(returnTime != null){
|
|
list.add(NLUModel.getLiteralTimeReturn(queryId, TRAVEL_DOMAIN, "09", "00"));
|
|
}
|
|
|
|
if(priceMax >= 0){
|
|
list.add(NLUModel.getLiteralPriceMax(queryId, TRAVEL_DOMAIN, priceMax));
|
|
}
|
|
|
|
if(priceMin >= 0){
|
|
list.add(NLUModel.getLiteralPriceMin(queryId, TRAVEL_DOMAIN, priceMin));
|
|
}
|
|
|
|
if(currency != null){
|
|
list.add(NLUModel.getLiteralCurrency(queryId, TRAVEL_DOMAIN, NotationUtils.compact(currency)));
|
|
}
|
|
|
|
if(locationFrom != null){
|
|
list.add(NLUModel.getLiteralLocationFrom(queryId, TRAVEL_DOMAIN, NotationUtils.compact(locationFrom)));
|
|
}
|
|
|
|
if(locationTo != null){
|
|
list.add(NLUModel.getLiteralLocationTo(queryId, TRAVEL_DOMAIN, NotationUtils.compact(locationTo)));
|
|
}
|
|
|
|
if(scales){
|
|
list.add(Literal.parseLiteral("scales[query(" + queryId + "), domain(" + TRAVEL_DOMAIN + ")]"));
|
|
}
|
|
else{
|
|
list.add(Literal.parseLiteral("~scales[query(" + queryId + "), domain(" + TRAVEL_DOMAIN + ")]"));
|
|
}
|
|
|
|
list.add(Literal.parseLiteral("done[query(" + queryId + "), domain(" + TRAVEL_DOMAIN + ")]"));
|
|
|
|
return list;
|
|
}
|
|
|
|
}
|