📄 person.java
字号:
/* Copyright (c) 2006 Google Inc. * * 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.google.gdata.data;import com.google.gdata.util.common.xml.XmlWriter;import com.google.gdata.util.Namespaces;import com.google.gdata.util.ParseException;import com.google.gdata.util.XmlParser;import org.xml.sax.Attributes;import java.io.IOException;import java.util.ArrayList;import java.util.Collection;/** * Person type used for feed and entry authors and contributors. It may also * be used by services' custom elements. * * */public class Person extends ExtensionPoint { /** * Class constructor. */ public Person() {}; /** * Constructs a new Person instance with the specified name. */ public Person(String name) { if (name == null) throw new NullPointerException("Name must have a value"); this.name = name; } /** * Constructs a new Person instance with the specified name, URI, * and email address. */ public Person(String name, String uri, String email) { this(name); this.uri = uri; this.email = email; } /** Human-readable name. */ protected String name; public String getName() { return name; } public void setName(String v) { name = v; } /** Language of name. Derived from the current state of {@code xml:lang}. */ protected String nameLang; public String getNameLang() { return nameLang; } public void setNameLang(String v) { nameLang = v; } /** URI associated with the person. */ protected String uri; public String getUri() { return uri; } public void setUri(String v) { uri = v; } /** Email address. */ protected String email; public String getEmail() { return email; } public void setEmail(String v) { email = v; } /** * Generates XML. * <p> * Designed to be used by types that reuse the standard Atom person type. * * @param extProfile * extension profile * * @param w * output writer * * @param elementNamespace * namespace for XML element * * @param elementName * name of XML element * * @param attributes * additional attributes * * @throws IOException */ public void generate(ExtensionProfile extProfile, XmlWriter w, XmlWriter.Namespace elementNamespace, String elementName, Collection<XmlWriter.Attribute> attributes) throws IOException { generateStartElement(w, elementNamespace, elementName, attributes, null); if (name != null && name.trim().length() > 0) { ArrayList<XmlWriter.Attribute> attrs; if (nameLang != null) { attrs = new ArrayList<XmlWriter.Attribute>(1); attrs.add(new XmlWriter.Attribute("xml:lang", nameLang)); } else { attrs = null; } w.simpleElement(Namespaces.atomNs, "name", attrs, name); } if (uri != null && uri.trim().length() > 0) { w.simpleElement(Namespaces.atomNs, "uri", null, uri); } if (email != null && email.trim().length() > 0) { w.simpleElement(Namespaces.atomNs, "email", null, email); } // Invoke ExtensionPoint. generateExtensions(w, extProfile); w.endElement(elementNamespace, elementName); } /** * Generates XML in the Atom format. * * @param extProfile * extension profile * * @param w * output writer * * @param elementName * Atom element name * * @throws IOException */ public void generateAtom(ExtensionProfile extProfile, XmlWriter w, String elementName) throws IOException { generate(extProfile, w, Namespaces.atomNs, elementName, null); } /** * Generates XML in the RSS format. * * @param w * output writer * * @param elementName * RSS element name * * @throws IOException */ public void generateRss(XmlWriter w, String elementName) throws IOException { String text = new String(); if (email != null) { text += email; } if (name != null) { if (email != null) { text += " ("; } text += name; if (email != null) { text += ")"; } } w.simpleElement(Namespaces.rssNs, elementName, null, text); } /** Parses XML in the Atom format. */ public class AtomHandler extends ExtensionPoint.ExtensionHandler { public AtomHandler(ExtensionProfile extProfile) throws IOException { super(extProfile, Person.class); } public XmlParser.ElementHandler getChildHandler(String namespace, String localName, Attributes attrs) throws ParseException, IOException { if (namespace.equals(Namespaces.atom)) { if (localName.equals("name")) { return new NameHandler(); } else if (localName.equals("uri")) { return new UriHandler(); } else if (localName.equals("email")) { return new EmailHandler(); } } else { return super.getChildHandler(namespace, localName, attrs); } return null; } class NameHandler extends XmlParser.ElementHandler { public void processEndElement() throws ParseException { if (name != null) { throw new ParseException("Duplicate name."); } if (value == null) { throw new ParseException("Name must have a value."); } name = value; nameLang = xmlLang; } } class UriHandler extends XmlParser.ElementHandler { public void processEndElement() throws ParseException { if (uri != null) { throw new ParseException("Duplicate URI."); } if (value == null) { throw new ParseException("URI must have a value."); } uri = value; } } class EmailHandler extends XmlParser.ElementHandler { public void processEndElement() throws ParseException { if (email != null) { throw new ParseException("Duplicate email."); } if (value == null) { throw new ParseException("Email must have a value."); } email = value; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -