package dynamic.future.events;

import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventDateTime;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class IcalToEvent {

    public static Event convertIcalToEvent(String iCal){

        Event e = new Event();

        String icalStartDate = getTagLine(iCal, "DTSTART:");
        String icalEndDate = getTagLine(iCal, "DTEND:");

        Date startDate = iCalDateToDate(icalStartDate);
        Date endDate   = iCalDateToDate(icalEndDate);

        DateTime start = new DateTime(startDate,TimeZone.getTimeZone("GMT"));
        DateTime end = new DateTime(endDate,TimeZone.getTimeZone("GMT"));

        e.setStart(new EventDateTime().setDateTime(start));
        e.setEnd(new EventDateTime().setDateTime(end));

        e.setLocation(getTagLine(iCal,"LOCATION:"));
        e.setSummary(getTagLine(iCal,"SUMMARY:"));

        return e;
    }

    static String getTagLine(String ical, String tag){

        int pos = ical.indexOf(tag);
        if(pos < 0)
            return "";
        int pos_end = ical.indexOf("\n",pos);
        if(pos_end < 0)
            return "";
        return ical.substring(pos+tag.length(), pos_end);

    }

    public static Date iCalDateToDate(String ical_date) {
        Date d = null;
        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        try {
            d = df.parse(ical_date.replaceAll("T", ""));
        } catch (ParseException e) {
        }
        return d;
    }


}
