Android Open Source - CampusUB1 Time Extractor






From Project

Back to project page CampusUB1.

License

The source code is released under:

Apache License

If you think the Android project CampusUB1 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 CampusUB1 Development Team
 *// w ww  . ja  v a 2s.c  o  m
 * 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 com.dev.campus.util;

import android.annotation.SuppressLint;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.dev.campus.event.Event;

/**
 * Utility class for analyzing and extracting information
 * about timing of events 
 * @author CampusUB1 Development Team
 *
 */
@SuppressLint("SimpleDateFormat")
public class TimeExtractor {

  public static List<String[]> parseTime(String text){

    ArrayList<String[]> dates = new ArrayList<String[]>();
    String hours = "[0-2]?[0-9]";
    String minutes = "[0-5][0-9]";
    String range = "de " + hours + "[hH:](" + minutes + ")?" 
        + " [a] " + hours + "[hH:](" + minutes + ")?";
    String time = hours + "[hH:](" + minutes + ")?";

    Pattern p = Pattern.compile(range);
    Pattern p2 = Pattern.compile(time);
    Matcher m = p.matcher(text);
    Matcher m2 = p2.matcher(text);

    if (m.find()) {
      String s = m.group();
      if (s != null) {
        s = s.toLowerCase().replace("de ", "");
        String[] tabDate = s.split("  ");
        for (int i = 0; i < tabDate.length; i++) {
          if (tabDate[i].contains("h")) {
            String s2[] = tabDate[i].split("h");
            dates.add(s2);
            
          } else {
            dates.add(tabDate[0].split(":"));
          }
        }
      }
    } else if (m2.find()) {
      String s = m2.group();
      if (s != null) {
        s = s.toLowerCase();
        // Split the time into a table to help with the management
        if (s.contains("h")) {
          String[] ss = s.split("h");
          dates.add(ss);
        } else {
          dates.add(s.split(":"));
        }
      }
    }
    return dates;
  }

  public static Date createDate(String date, String format) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.ENGLISH);
    return sdf.parse(date);
  }

  public static void getCorrectDate(String date, Event event) throws ParseException {
    List<String[]> time = parseTime(event.getDetails());
    String format = "EEE, d MMM yyyy HH:mm:ss Z";
    Date start = createDate(date, format);
    Date end = createDate(date, format);

    if(time.size() > 0) {
      if(time.get(0).length > 1) { // Means we have parsed minutes
        start.setMinutes(Integer.parseInt(time.get(0)[1]));
      } else {
        // No minutes parsed, assume the time is at the start of the specified hour
        start.setMinutes(0);
      }
      start.setHours(Integer.parseInt(time.get(0)[0]));
      if (time.size() > 1){
        if(time.get(1).length > 1) { // Means we have parsed minutes
          end.setMinutes(Integer.parseInt(time.get(1)[1]));
        } else {
          // No minutes parsed, assume the time is at the start of the specified hour
          end.setMinutes(0);
        }
        end.setHours(Integer.parseInt(time.get(1)[0]));
      } else {
        end.setMinutes(start.getMinutes());
        end.setHours(start.getHours());
      }
    } else {
      /* no time parsed in text, set time to 00:00 to avoid displaying
       * the time at which the article was posted
       */
      start.setMinutes(0);
      start.setHours(0);
      end.setMinutes(0);
      end.setHours(0);
    }
    event.setStartDate(start);
    event.setEndDate(end);
  }

  /**
   * Extracts time from strings following the format HH:MM-HH:MM
   * @param date string formatted as HH:MM-HH:MM
   * @param start reference to the start date of the corresponding event
   * @param end reference to the end date of the corresponding event
   */
  public static void getDateLabri(String date, Date start, Date end) {
    String[] tabDate = date.split("-");
    String[] tabDate2 = tabDate[0].split(":");
    String[] tabDate3 = tabDate[1].split(":");

    start.setHours(Integer.parseInt(tabDate2[0]));
    start.setMinutes(Integer.parseInt(tabDate2[1]));
    end.setHours(Integer.parseInt(tabDate3[0]));
    end.setMinutes(Integer.parseInt(tabDate3[1]));
  }


}




Java Source Code List

android.UnusedStub.java
com.dev.campus.CampusUB1App.java
com.dev.campus.LauncherActivity.java
com.dev.campus.SettingsActivity.java
com.dev.campus.directory.Contact.java
com.dev.campus.directory.DirectoryActivity.java
com.dev.campus.directory.DirectoryAdapter.java
com.dev.campus.directory.DirectoryManager.java
com.dev.campus.event.Category.java
com.dev.campus.event.EventAdapter.java
com.dev.campus.event.EventFragment.java
com.dev.campus.event.EventMultiChoiceModeListener.java
com.dev.campus.event.EventPagerAdapter.java
com.dev.campus.event.EventParser.java
com.dev.campus.event.EventViewActivity.java
com.dev.campus.event.Event.java
com.dev.campus.event.EventsActivity.java
com.dev.campus.event.Feed.java
com.dev.campus.home.HomeActivity.java
com.dev.campus.home.HomeAdapter.java
com.dev.campus.home.HomeEntryItem.java
com.dev.campus.home.HomeItem.java
com.dev.campus.home.HomeSeparatorItem.java
com.dev.campus.map.MapActivity.java
com.dev.campus.map.Position.java
com.dev.campus.schedule.Group.java
com.dev.campus.schedule.ScheduleActivity.java
com.dev.campus.schedule.ScheduleAdapter.java
com.dev.campus.schedule.ScheduleImportService.java
com.dev.campus.schedule.ScheduleParser.java
com.dev.campus.util.AboutDialog.java
com.dev.campus.util.FilterDialog.java
com.dev.campus.util.Persistence.java
com.dev.campus.util.PrefFragment.java
com.dev.campus.util.SubscribeDialog.java
com.dev.campus.util.TimeExtractor.java
com.dev.campus.util.UpcomingEventsDialog.java
com.slidingmenu.lib.CanvasTransformerBuilder.java
com.slidingmenu.lib.CustomViewAbove.java
com.slidingmenu.lib.CustomViewBehind.java
com.slidingmenu.lib.MenuInterface.java
com.slidingmenu.lib.SlidingMenu.java
com.slidingmenu.lib.app.SlidingActivityBase.java
com.slidingmenu.lib.app.SlidingActivityHelper.java
com.slidingmenu.lib.app.SlidingActivity.java
com.slidingmenu.lib.app.SlidingFragmentActivity.java
com.slidingmenu.lib.app.SlidingListActivity.java
com.slidingmenu.lib.app.SlidingMapActivity.java
com.slidingmenu.lib.app.SlidingPreferenceActivity.java