com.danlvse.weebo.model.Comment.java Source code

Java tutorial

Introduction

Here is the source code for com.danlvse.weebo.model.Comment.java

Source

/*
 * Copyright (C) 2010-2013 The SINA WEIBO Open Source Project
 *
 * 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.danlvse.weebo.model;

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

import org.json.JSONException;
import org.json.JSONObject;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 *
 * @author SINA
 * @since 2013-11-24
 */
public class Comment implements Parcelable {

    private static Pattern mpattern;
    private static Matcher mmatcher;

    /**
     * 
     */
    public String created_at;
    /**
     *  ID
     */
    public String id;
    /**
     * 
     */
    public String text;
    /**
     * ??
     */
    public String source;
    /**
     * ?
     */
    public User user;
    /**
     *  MID
     */
    public String mid;
    /**
     *  ID
     */
    public String idstr;
    /**
     * ??
     */
    public Feed status;
    /**
     * ????
     */
    public Comment reply_comment;

    public static Comment parse(JSONObject jsonObject) {
        if (null == jsonObject) {
            return null;
        }

        Comment comment = new Comment();
        comment.created_at = jsonObject.optString("created_at");
        comment.id = jsonObject.optString("id");
        comment.text = jsonObject.optString("text");
        comment.source = jsonObject.optString("source");
        comment.source = getSource(jsonObject.optString("source"));
        comment.user = User.parse(jsonObject.optJSONObject("user"));
        comment.mid = jsonObject.optString("mid");
        comment.idstr = jsonObject.optString("idstr");
        comment.status = Feed.parse(jsonObject.optJSONObject("status"));
        comment.reply_comment = Comment.parse(jsonObject.optJSONObject("reply_comment"));

        return comment;
    }

    public static Comment parse(String jsonString) {
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            return Comment.parse(jsonObject);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    private static String getSource(String string) {
        mpattern = Pattern.compile("<(.*?)>(.*?)</a>");
        mmatcher = mpattern.matcher(string);
        if (mmatcher.find()) {
            return mmatcher.group(2);
        } else {
            return string;
        }
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.created_at);
        dest.writeString(this.id);
        dest.writeString(this.text);
        dest.writeString(this.source);
        dest.writeParcelable(this.user, flags);
        dest.writeString(this.mid);
        dest.writeString(this.idstr);
        dest.writeParcelable(this.status, flags);
        dest.writeParcelable(this.reply_comment, flags);
    }

    public Comment() {
    }

    protected Comment(Parcel in) {
        this.created_at = in.readString();
        this.id = in.readString();
        this.text = in.readString();
        this.source = in.readString();
        this.user = in.readParcelable(User.class.getClassLoader());
        this.mid = in.readString();
        this.idstr = in.readString();
        this.status = in.readParcelable(Feed.class.getClassLoader());
        this.reply_comment = in.readParcelable(Comment.class.getClassLoader());
    }

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

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