Package de.timefinder.core.io

Source Code of de.timefinder.core.io.ImportJavaOne

/*
* This file is part of the TimeFinder project.
*  Visit http://www.timefinder.de for more information.
*  Copyright (c) 2009 the original author or authors.
*
*  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 de.timefinder.core.io;

import de.timefinder.data.CalendarSettings;
import de.timefinder.data.ICalendarSettings;
import de.timefinder.data.JavaOneInterval;
import de.timefinder.planner.TimeFinderPlanner;
import org.joda.time.DateTime;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.swing.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
* @author Peter Karich, peat_hal ‘at’ users ‘dot’ sourceforge ‘dot’ net
*/
public class ImportJavaOne {

    public static void main(String[] args) throws Exception {
        String file = "C:\\Users\\btn417\\Documents\\sessions_catalog.j1";
//        String file = "/home/peterk/sessions_catalog.j1";
        final List list = new ImportJavaOne().parse(
                new FileInputStream(file));
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                JFrame frame = new JFrame("TimeFinder Planner");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                CalendarSettings settings = new CalendarSettings();
                ImportJavaOne.overwriteSettings(settings);
                TimeFinderPlanner planner = new TimeFinderPlanner(settings);
                planner.addAllInterval(list);

                frame.setContentPane(planner);
                frame.setSize(1000, 640);
                frame.setVisible(true);
            }
        });
    }

    public static void overwriteSettings(ICalendarSettings settings) {
        // track every 10 minutes:
        settings.setMillisPerTimeslot(10 * 60 * 1000);

        // 14 hours
        settings.setTimeslotsPerDay(6 * 16);

        settings.setNumberOfDays(5);

        settings.setStartDate(new DateTime(2009, 6, 1, 8, 0, 0, 0));
    }

    public List<JavaOneInterval> parse(InputStream is) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(false);
        factory.setNamespaceAware(false);
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(is);
        return parse(doc);
    }

    public List<JavaOneInterval> parse(Document doc) {
        List<JavaOneInterval> eventList = new ArrayList<JavaOneInterval>();
        NodeList nl = doc.getElementsByTagName("tr");
        for (int i = 0; i < nl.getLength(); i++) {
            if (nl.item(i).getNodeType() != Node.ELEMENT_NODE) {
                continue;
            }
            Element el = (Element) nl.item(i);
            NodeList columnNodeList = el.getElementsByTagName("td");
            JavaOneInterval event = new JavaOneInterval();
            eventList.add(event);
            for (int jj = 0; jj < columnNodeList.getLength(); jj++) {
                if (columnNodeList.item(jj).getNodeType() != Node.ELEMENT_NODE) {
                    continue;
                }
                Element columnElement = (Element) columnNodeList.item(jj);
                switch (jj) {
                    case 0:
                        event.setId(columnElement.getTextContent().trim());
                        break;
                    case 1:
                        event.setDescription(columnElement.getTextContent().trim());
                        break;
                    case 2:
                        event.setType(columnElement.getTextContent().trim());
                        break;
                    case 3:
                        event.setSpeakers(columnElement.getTextContent().trim());
                        break;
                    case 4:
                        NodeList timeNodes = columnElement.getChildNodes();
                        for (int j = 0; j < timeNodes.getLength(); j++) {
                            if (timeNodes.item(j) != null) {
                                String dateStr = timeNodes.item(j).getTextContent().trim();

                                if (dateStr.contains("June")) {

                                    int day = Integer.parseInt(dateStr.split("      ")[1]);

                                    String timeStrs[] = timeNodes.item(j + 2).getTextContent().trim().split(" - ");
                                    String startStr = timeStrs[0];
                                    String endStr = timeStrs[1];
                                    int index = startStr.indexOf(":");
                                    int index2 = startStr.indexOf(" ");
                                    int startHour = Integer.parseInt(startStr.substring(0, index));
                                    int startMinute = Integer.parseInt(startStr.substring(index + 1, index2));

                                    index = endStr.indexOf(":");
                                    index2 = endStr.indexOf(" ");
                                    int endHour = Integer.parseInt(endStr.substring(0, index));
                                    int endMinute = Integer.parseInt(endStr.substring(index + 1, index2));

                                    if (timeStrs[0].endsWith("PM")) {
                                        if (startHour != 12) {
                                            startHour += 12;
                                        }
                                    }

                                    if (timeStrs[1].endsWith("PM")) {
                                        if (endHour != 12) {
                                            endHour += 12;
                                        }
                                    }

                                    DateTime start = new DateTime(2009, 6, day, startHour, startMinute, 0, 0);
                                    DateTime end = new DateTime(2009, 6, day, endHour, endMinute, 0, 0);
                                    event.setStartDateTime(start);
                                    event.setEndDateTime(end);
                                }
                            }
                        }
                        break;
                    default:
                        System.out.println("error");
                }
            }
        }

//        System.out.println("events: " + eventList.size());
//        for (JavaOneEvent ev : eventList) {
//            System.out.println(ev);
//        }
        return eventList;
    }
}
TOP

Related Classes of de.timefinder.core.io.ImportJavaOne

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.