/* Copyright (c) 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package mashups.eventpub;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/**
* Bean object to store event information used for synchronization
*
*
*/
public class Event implements Serializable {
public static final long serialVersionUID = 1L;
private String title;
private String description;
private String website;
private Date startDate;
private Date endDate;
private URL baseUrl = null;
private URL calendarUrl = null;
private URL ssEditUrl = null;
public int ssRow = -1;
private static final Pattern DATE_PATTERN =
Pattern.compile("(\\d\\d?)/(\\d\\d?)/(\\d\\d\\d\\d)");
/**
* Constructs a new Event instance with the specified properties
*
* @param title The title of the event
* @param description The descriptin of the event
* @param website The website representing the event
* @param startDate The start date for the event in MM/DD/YYYY format
* @param endDate The end date for the event in MM/DD/YYYY format
* @param calendarUrl The edit URL for this event in Google Calendar
* @param baseUrl The edit URL for this event in Google Base
* @throws MalformedURLException
*/
public Event(String title, String description, String website,
String startDate, String endDate, String calendarUrl, String baseUrl)
throws MalformedURLException {
this.setTitle(title);
this.setDescription(description);
this.setWebsite(website);
this.setStartDate(startDate);
this.setEndDate(endDate);
this.setCalendarUrl(calendarUrl);
this.setBaseUrl(baseUrl);
}
/**
* Helper method to convert a data in MM/DD/YYYY format into
* a <code>java.util.Date</code>
*
* @param dateString The date string in MM/DD/YYYY format
* @return The <code>java.util.Date</code> representing the string
*/
private Date stringToDate(String dateString) {
Matcher m = DATE_PATTERN.matcher(dateString);
Calendar date = new GregorianCalendar();
if (!m.matches()) {
throw new NumberFormatException("Invalid date format.");
}
date.set(Integer.valueOf(m.group(3)),
Integer.valueOf(m.group(1)) - 1,
Integer.valueOf(m.group(2)),
0,
0,
0);
return date.getTime();
}
public Date getStartDate() {
return startDate;
}
/**
* Sets the start date for this event. The data is stored as a
* <code>java.util.date</code>, so this method calls a helper to
* parse the date string.
*
* @param startDate The end date for the event in MM/DD/YYYY format
*/
public void setStartDate(String startDate) {
this.startDate = stringToDate(startDate);
}
/**
* Sets the end date for this event. The data is stored as a
* <code>java.util.date</code>, so this method calls a helper to
* parse the date string.
*
* @param endDate The end date for the event in MM/DD/YYYY format
*/
public void setEndDate(String endDate) {
this.endDate = stringToDate(endDate);
}
public Date getEndDate() {
return endDate;
}
public void setTitle(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setWebsite(String website) {
this.website = website;
}
public String getWebsite() {
return website;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
/**
* Sets the Calendar edit URL for this event
*
* @param calendarUrl The edit URL for this event
* @throws MalformedURLException
*/
public void setCalendarUrl(String calendarUrl) throws MalformedURLException {
if (calendarUrl != null && ! calendarUrl.trim().equals("")) {
this.calendarUrl = new URL(calendarUrl);
}
}
public URL getCalendarUrl() {
return this.calendarUrl;
}
/**
* Sets the Base edit URL for this event
*
* @param baseUrl The edit URL for this event
* @throws MalformedURLException
*/
public void setBaseUrl(String baseUrl) throws MalformedURLException {
if (baseUrl != null && ! baseUrl.trim().equals("")) {
this.baseUrl = new URL(baseUrl);
}
}
public URL getBaseUrl() {
return this.baseUrl;
}
/**
* Sets the Spreadsheets edit URL for this event
*
* @param baseUrl The edit URL for this event
* @throws MalformedURLException
*/
public void setSsEditUrl(String ssEditUrl) throws MalformedURLException {
if (ssEditUrl != null && ! ssEditUrl.trim().equals("")) {
this.ssEditUrl = new URL(ssEditUrl);
}
}
public URL getSsEditUrl() {
return this.ssEditUrl;
}
}