Package org.apache.abdera.ext.thread

Source Code of org.apache.abdera.ext.thread.ThreadHelper

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  The ASF licenses this file to You
* 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.  For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.abdera.ext.thread;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.activation.MimeType;

import org.apache.abdera.factory.Factory;
import org.apache.abdera.model.AtomDate;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Link;
import org.apache.abdera.model.Source;
import org.apache.abdera.i18n.iri.IRI;

public final class ThreadHelper {

  ThreadHelper() {}
 
  public static int getCount(Link link) {
    String val = link.getAttributeValue(ThreadConstants.THRCOUNT);
    return (val != null) ? Integer.parseInt(val) : 0;
  }
 
  @SuppressWarnings("deprecation")
  public static AtomDate getUpdated(Link link) {
    String val = link.getAttributeValue(ThreadConstants.THRUPDATED);
    if (val == null) // thr:when was updated to thr:updated, some old impls may still be using thr:when
      val = link.getAttributeValue(ThreadConstants.THRWHEN);
    return (val != null) ? AtomDate.valueOf(val) : null;
  }
 
  public static void setCount(
    Link link,
    int count) {
      link.setAttributeValue(
        ThreadConstants.THRCOUNT,
        String.valueOf(count).trim());
  }
 
  public static void setUpdated(
    Link link,
    Date when) {
      link.setAttributeValue(
        ThreadConstants.THRUPDATED,
        AtomDate.valueOf(when).getValue());
  }
 
  public static void setUpdated(
    Link link,
    Calendar when) {
      link.setAttributeValue(
        ThreadConstants.THRUPDATED,
        AtomDate.valueOf(when).getValue());
  }
 
  public static void setUpdated(
    Link link,
    long when) {
      link.setAttributeValue(
        ThreadConstants.THRUPDATED,
        AtomDate.valueOf(when).getValue());
  }
 
  public static void setUpdated(
    Link link,
    String when) {
      link.setAttributeValue(
        ThreadConstants.THRUPDATED,
        AtomDate.valueOf(when).getValue());
  }
 
 
  public static Total addTotal(Entry entry, int total) {
    Factory factory = entry.getFactory();
    Total totalelement =
      (Total)factory.newExtensionElement(
        ThreadConstants.THRTOTAL, entry);
    totalelement.setValue(total);
    return totalelement;
  }
 
  public static Total getTotal(Entry entry) {
    return entry.getFirstChild(ThreadConstants.THRTOTAL);
  }
 
  public static void addInReplyTo(Entry entry, InReplyTo replyTo) {
    entry.addExtension(replyTo);
  }
 
  public static InReplyTo addInReplyTo(Entry entry) {
    return entry.addExtension(ThreadConstants.IN_REPLY_TO);
  }

  public static InReplyTo addInReplyTo(Entry entry, Entry ref) {
    if (ref.equals(entry)) return null;
    InReplyTo irt = addInReplyTo(entry);
    try {
      irt.setRef(ref.getId());
      Link altlink = ref.getAlternateLink();
      if (altlink != null) {
        irt.setHref(altlink.getResolvedHref());
        if (altlink.getMimeType() != null)
          irt.setMimeType(altlink.getMimeType());
      }
      Source src = ref.getSource();
      if (src != null) {
        Link selflink = src.getSelfLink();
        if (selflink != null)
          irt.setSource(selflink.getResolvedHref());
      }
    } catch (Exception e) {}
    return irt;
  }

  public static InReplyTo addInReplyTo(Entry entry, IRI ref) {
    try {
      if (entry.getId() != null && entry.getId().equals(ref)) return null;
    } catch (Exception e) {}
    InReplyTo irt = addInReplyTo(entry);
    irt.setRef(ref);
    return irt;
  }

  public static InReplyTo addInReplyTo(Entry entry, String ref) {
    return addInReplyTo(entry, new IRI(ref));
  }

  public static InReplyTo addInReplyTo(
    Entry entry,
    IRI ref,
    IRI source,
    IRI href,
    MimeType type) {
      InReplyTo irt = addInReplyTo(entry, ref);
      if (irt != null) {
        if (source != null) irt.setSource(source);
        if (href != null) irt.setHref(href);
        if (type != null) irt.setMimeType(type);
      }
      return irt;
  }

  public static InReplyTo addInReplyTo(
    Entry entry,
    String ref,
    String source,
    String href,
    String type) {
    InReplyTo irt = addInReplyTo(entry, ref);
    if (irt != null) {
      if (source != null) irt.setSource(source);
      if (href != null) irt.setHref(href);
      if (type != null) irt.setMimeType(type);
    }
    return irt;
  }

  public static InReplyTo getInReplyTo(Entry entry) {
    return entry.getFirstChild(ThreadConstants.IN_REPLY_TO);
  }

  @SuppressWarnings("unchecked")
  public static List<InReplyTo> getInReplyTos(Entry entry) {
    List list = entry.getExtensions(ThreadConstants.IN_REPLY_TO);
    return list;
  }

  public static InReplyTo newInReplyTo(Factory factory) {
    return new InReplyTo(factory);
  }
 
  public static Total newTotal(Factory factory) {
    return new Total(factory);
  }
 
}
TOP

Related Classes of org.apache.abdera.ext.thread.ThreadHelper

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.