Java tutorial
/* * 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.abdera2.ext.thread; import java.util.Calendar; import java.util.Date; import javax.activation.MimeType; import org.joda.time.DateTime; import org.apache.abdera2.factory.Factory; import org.apache.abdera2.model.Entry; import org.apache.abdera2.model.Link; import org.apache.abdera2.model.Source; import org.apache.abdera2.common.date.DateTimes; import org.apache.abdera2.common.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 DateTime 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) ? DateTime.parse(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, DateTimes.format(when)); } public static void setUpdated(Link link, Calendar when) { link.setAttributeValue(ThreadConstants.THRUPDATED, DateTimes.format(when)); } public static void setUpdated(Link link, long when) { link.setAttributeValue(ThreadConstants.THRUPDATED, DateTimes.format(when)); } public static void setUpdated(Link link, String when) { link.setAttributeValue(ThreadConstants.THRUPDATED, DateTimes.format(when)); } 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); } public static Iterable<InReplyTo> getInReplyTos(Entry entry) { return entry.getExtensions(ThreadConstants.IN_REPLY_TO); } public static InReplyTo newInReplyTo(Factory factory) { return new InReplyTo(factory); } public static Total newTotal(Factory factory) { return new Total(factory); } }