package localsearch.parser;
import java.io.InputStream;
import javafx.data.pull.Event;
import javafx.data.pull.PullParser;
import javafx.data.xml.QName;
import localsearch.model.Category;
import localsearch.model.Rating;
import localsearch.model.Restaurant;
import localsearch.Main;
var totalResultsAvailable;
var totalResultsReturned;
var firstResultPosition;
public function processResults(is: InputStream) {
def parser = LocalSearchParser { documentType: PullParser.XML; input: is };
parser.parse();
is.close();
println(Main.restaurants);
}
class LocalSearchParser extends PullParser {
public override var onEvent = function(event: Event) {
if (event.type == PullParser.START_ELEMENT) {
processStartEvent()
} else if (event.type == PullParser.END_ELEMENT) {
processEndEvent()
}
}
var result: Restaurant;
var category: Category;
function processStartEvent() {
if (event.qname.name == "ResultSet" and event.level == 0) {
totalResultsAvailable = event.getAttributeValue(QName{name:"totalResultsAvailable"});
totalResultsReturned = event.getAttributeValue(QName{name:"totalResultsReturned"});
firstResultPosition = event.getAttributeValue(QName{name:"firstResultPosition"});
} else if (event.qname.name == "Result" and event.level == 1) {
result = Restaurant {
id: event.getAttributeValue(QName{name:"id"}) as String;
}
} else if (event.qname.name == "Rating" and event.level == 2) {
result.rating = Rating {}
} else if (event.qname.name == "Category" and event.level == 3) {
category = Category {}
category.id = event.getAttributeValue(QName{name:"id"}) as String;
}
}
function processEndEvent() {
if (event.qname.name == "Result" and event.level == 1) {
insert result into Main.restaurants;
Main.showRestaurantDetails(0, true);
} else if (event.qname.name == "Title" and event.level == 2) {
result.title = event.text
} else if (event.qname.name == "Address" and event.level == 2) {
result.address = event.text
} else if (event.qname.name == "City" and event.level == 2) {
result.city = event.text
} else if (event.qname.name == "State" and event.level == 2) {
result.state = event.text
} else if (event.qname.name == "Phone" and event.level == 2) {
result.phone = event.text
} else if (event.qname.name == "Latitude" and event.level == 2) {
result.latitude = event.text
} else if (event.qname.name == "Longitude" and event.level == 2) {
result.longitude = event.text
} else if (event.qname.name == "AverageRating" and event.level == 3) {
result.rating.averageRating = event.text
} else if (event.qname.name == "TotalRatings" and event.level == 3) {
result.rating.totalRatings = event.text
} else if (event.qname.name == "TotalReviews" and event.level == 3) {
result.rating.totalReviews = event.text
} else if (event.qname.name == "LastReviewDate" and event.level == 3) {
result.rating.lastReviewDate = event.text
} else if (event.qname.name == "LastReviewIntro" and event.level == 3) {
result.rating.lastReviewIntro = event.text
} else if (event.qname.name == "Distance" and event.level == 2) {
result.distance = event.text
} else if (event.qname.name == "Url" and event.level == 2) {
result.url = event.text
} else if (event.qname.name == "ClickUrl" and event.level == 2) {
result.clickUrl = event.text
} else if (event.qname.name == "MapUrl" and event.level == 2) {
result.mapUrl = event.text
} else if (event.qname.name == "BusinessUrl" and event.level == 2) {
result.businessUrl = event.text
} else if (event.qname.name == "BusinessClickUrl" and event.level == 2) {
result.businessClickUrl = event.text
} else if (event.qname.name == "Category" and event.level == 3) {
category.value = event.text;
insert category into result.categories;
}
}
}