net.naonedbus.bean.InfoTrafic.java Source code

Java tutorial

Introduction

Here is the source code for net.naonedbus.bean.InfoTrafic.java

Source

/**
 * Copyright (C) 2013 Romain Guefveneu.
 *   
 *  This file is part of naonedbus.
 *   
 *  Naonedbus is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *  
 *  Naonedbus is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package net.naonedbus.bean;

import java.util.ArrayList;
import java.util.List;

import net.naonedbus.widget.item.SectionItem;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import android.os.Parcel;
import android.os.Parcelable;

public class InfoTrafic implements Parcelable, SectionItem {

    private static final DateTimeFormatter sFullDateParser = DateTimeFormat.forPattern("dd/MM/yyyy").withZoneUTC();
    private static final DateTimeFormatter sSimpleDateParser = DateTimeFormat.forPattern("MM/yyyy").withZoneUTC();
    private static final DateTimeFormatter sTimeParser = DateTimeFormat.forPattern("HH:mm").withZoneUTC();

    private String mCode;
    private String mIntitule;
    private String mResume;
    private String mTexteVocal;
    private String mDateDebutString;
    private String mDateFinString;
    private String mHeureDebutString;
    private String mHeureFinString;
    private boolean mPerturbationTerminee;
    private String mTroncons;

    private List<String> mLignes = new ArrayList<String>();

    private Object mSection;

    private DateTime mDateDebut;
    private DateTime mDateFin;
    private String mDateFormated;

    public InfoTrafic() {

    }

    public InfoTrafic(final Parcel in) {
        mCode = in.readString();
        mDateDebutString = in.readString();
        mDateFinString = in.readString();
        mDateFormated = in.readString();
        mHeureDebutString = in.readString();
        mHeureFinString = in.readString();
        mIntitule = in.readString();
        mPerturbationTerminee = in.readInt() == 1;
        mResume = in.readString();
        mTexteVocal = in.readString();
        mTroncons = in.readString();
        in.readList(mLignes, Ligne.class.getClassLoader());
    }

    public String getCode() {
        return mCode;
    }

    public String getIntitule() {
        return mIntitule;
    }

    public String getResume() {
        return mResume;
    }

    public void setResume(final String resume) {
        mResume = resume;
    }

    public String getTexteVocal() {
        return mTexteVocal;
    }

    public DateTime getDateDebut() {
        if (mDateDebut == null) {
            mDateDebut = parseDate(mDateDebutString, mHeureDebutString);
        }
        return mDateDebut;
    }

    public DateTime getDateFin() {
        if (mDateFin == null) {
            mDateFin = parseDate(mDateFinString, mHeureFinString);
        }
        return mDateFin;
    }

    public String getDateFormated() {
        return mDateFormated;
    }

    public void setDateFormated(final String dateFormated) {
        mDateFormated = dateFormated;
    }

    public boolean isPerturbationTerminee() {
        return mPerturbationTerminee;
    }

    public String getTroncons() {
        return mTroncons;
    }

    public void addLignes(final String ligne) {
        mLignes.add(ligne);
    }

    public List<String> getLignes() {
        return mLignes;
    }

    public void setSection(final Object section) {
        mSection = section;
    }

    public void setCode(final String code) {
        mCode = code;
    }

    public void setIntitule(final String intitule) {
        mIntitule = intitule;
    }

    public void setTexteVocal(final String texteVocal) {
        mTexteVocal = texteVocal;
    }

    public void setDateDebutString(final String dateDebutString) {
        mDateDebutString = dateDebutString;
    }

    public void setDateFinString(final String dateFinString) {
        mDateFinString = dateFinString;
    }

    public void setHeureDebutString(final String heureDebutString) {
        mHeureDebutString = heureDebutString;
    }

    public void setHeureFinString(final String heureFinString) {
        mHeureFinString = heureFinString;
    }

    public void setPerturbationTerminee(final boolean perturbationTerminee) {
        mPerturbationTerminee = perturbationTerminee;
    }

    public void setTroncons(final String troncons) {
        mTroncons = troncons;
    }

    public void setLignes(final List<String> lignes) {
        mLignes = lignes;
    }

    public void setDateDebut(final DateTime dateDebut) {
        mDateDebut = dateDebut;
    }

    public void setDateFin(final DateTime dateFin) {
        mDateFin = dateFin;
    }

    @Override
    public Object getSection() {
        return mSection;
    }

    @Override
    public InfoTrafic clone() {
        final InfoTrafic clone = new InfoTrafic();
        clone.mCode = mCode;
        clone.mDateDebut = mDateDebut;
        clone.mDateDebutString = mDateDebutString;
        clone.mDateFin = mDateFin;
        clone.mDateFinString = mDateFinString;
        clone.mDateFormated = mDateFormated;
        clone.mHeureDebutString = mHeureDebutString;
        clone.mHeureFinString = mHeureFinString;
        clone.mIntitule = mIntitule;
        clone.mLignes = mLignes;
        clone.mPerturbationTerminee = mPerturbationTerminee;
        clone.mResume = mResume;
        clone.mTexteVocal = mTexteVocal;
        clone.mTroncons = mTroncons;
        return clone;
    }

    @Override
    public String toString() {
        return new StringBuilder("[").append(mCode).append(";").append(mIntitule).append(";").append(mSection)
                .append("]").toString();
    }

    /**
     * Parser une date selon les diffrents formats possibles : jj/mm/aaaa ou
     * mm/aaaa et ventuellement une heure.
     * 
     * @param date
     * @param heure
     * @return le DateTime correspondant
     */
    private static final DateTime parseDate(final String date, final String heure) {
        DateTime dateTime = null;
        if (date.length() == 10) {
            dateTime = sFullDateParser.parseDateTime(date);
        } else if (date.length() == 7) {
            dateTime = sSimpleDateParser.parseDateTime(date);
        }
        if (dateTime != null && heure != null && heure.length() == 5) {
            dateTime = dateTime.plusMinutes(sTimeParser.parseDateTime(heure).minuteOfDay().get());
        }
        return dateTime;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(final Parcel dest, final int flags) {
        dest.writeString(mCode);
        dest.writeString(mDateDebutString);
        dest.writeString(mDateFinString);
        dest.writeString(mDateFormated);
        dest.writeString(mHeureDebutString);
        dest.writeString(mHeureFinString);
        dest.writeString(mIntitule);
        dest.writeInt(mPerturbationTerminee ? 1 : 0);
        dest.writeString(mResume);
        dest.writeString(mTexteVocal);
        dest.writeString(mTroncons);
        dest.writeList(mLignes);
    }

    public static final Parcelable.Creator<InfoTrafic> CREATOR = new Parcelable.Creator<InfoTrafic>() {
        @Override
        public InfoTrafic createFromParcel(final Parcel in) {
            return new InfoTrafic(in);
        }

        @Override
        public InfoTrafic[] newArray(final int size) {
            return new InfoTrafic[size];
        }
    };

}