// Copyright 2008 Google Inc. All Rights Reserved.
//
// 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 androidx.gdata.contacts.xml;
import androidx.gdata.contacts.Contact;
import androidx.gdata.contacts.ContactFeed;
import androidx.gdata.Author;
import androidx.gdata.xml.ThingWithLinksDeserializer;
import androidx.gdata.xml.GeneratorDeserializer;
import androidx.gdata.xml.CategoryDeserializer;
import androidx.gdata.xml.AuthorDeserializer;
import androidx.gdata.LinkUrl;
import androidx.gdata.Generator;
import androidx.gdata.OpenSearch;
import androidx.gdata.Category;
import org.w3c.dom.Node;
import java.util.List;
/**
* @author jennings
* Date: Nov 7, 2008
*/
public class ContactFeedDeserializer extends ThingWithLinksDeserializer<ContactFeed> {
private ContactDeserializer contactBuilder = new ContactDeserializer();
private AuthorDeserializer authorBuilder = new AuthorDeserializer();
private GeneratorDeserializer generatorBuilder = new GeneratorDeserializer();
private CategoryDeserializer categoryBuilder = new CategoryDeserializer();
public ContactFeed build(Node feedNode) {
node = feedNode;
String id = getText("id");
String updated = getText("updated");
Node categoryNode = getChildNode("category");
Category category = categoryBuilder.build(categoryNode);
String title = getText("title");
String totalResults = getText("openSearch:totalResults");
String startIndex = getText("openSearch:startIndex");
String itemsPerPage = getText("openSearch:itemsPerPage");
OpenSearch openSearch = new OpenSearch(totalResults, startIndex, itemsPerPage);
Node authorNode = getChildNode("author");
Author author = authorBuilder.build(authorNode);
Node generatorNode = getChildNode("generator");
Generator generator = generatorBuilder.build(generatorNode);
List<Node> entryNodes = getChildNodes("entry");
Contact[] contacts = new Contact[entryNodes.size()];
int i = 0;
for (Node entryNode : entryNodes) {
Contact contact = contactBuilder.build(entryNode);
contacts[i++] = contact;
}
LinkUrl[] links = getLinks();
return new ContactFeed(id, updated, category, title, links, contacts,
author, generator, openSearch);
}
}
|