diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
commit | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/java/android/content/DefaultDataHandler.java | |
parent | 076357b8567458d4b6dfdcf839ef751634cd2bfb (diff) | |
download | frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/content/DefaultDataHandler.java')
-rw-r--r-- | core/java/android/content/DefaultDataHandler.java | 262 |
1 files changed, 0 insertions, 262 deletions
diff --git a/core/java/android/content/DefaultDataHandler.java b/core/java/android/content/DefaultDataHandler.java deleted file mode 100644 index 863c9f6..0000000 --- a/core/java/android/content/DefaultDataHandler.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (C) 2008 The Android 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 android.content; - -import android.net.Uri; -import android.util.Xml; - -import org.xml.sax.Attributes; -import org.xml.sax.Locator; -import org.xml.sax.SAXException; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Stack; - -/** - * Inserts default data from InputStream, should be in XML format. - * If the provider syncs data to the server, the imported data will be synced to the server. - * <p>Samples:</p> - * <br/> - * Insert one row: - * <pre> - * <row uri="content://contacts/people"> - * <Col column = "name" value = "foo feebe "/> - * <Col column = "addr" value = "Tx"/> - * </row></pre> - * <br/> - * Delete, it must be in order of uri, select, and arg: - * <pre> - * <del uri="content://contacts/people" select="name=? and addr=?" - * arg1 = "foo feebe" arg2 ="Tx"/></pre> - * <br/> - * Use first row's uri to insert into another table, - * content://contacts/people/1/phones: - * <pre> - * <row uri="content://contacts/people"> - * <col column = "name" value = "foo feebe"/> - * <col column = "addr" value = "Tx"/> - * <row postfix="phones"> - * <col column="number" value="512-514-6535"/> - * </row> - * <row postfix="phones"> - * <col column="cell" value="512-514-6535"/> - * </row> - * </row></pre> - * <br/> - * Insert multiple rows in to same table and same attributes: - * <pre> - * <row uri="content://contacts/people" > - * <row> - * <col column= "name" value = "foo feebe"/> - * <col column= "addr" value = "Tx"/> - * </row> - * <row> - * </row> - * </row></pre> - * - * @hide - */ -public class DefaultDataHandler implements ContentInsertHandler { - private final static String ROW = "row"; - private final static String COL = "col"; - private final static String URI_STR = "uri"; - private final static String POSTFIX = "postfix"; - private final static String DEL = "del"; - private final static String SELECT = "select"; - private final static String ARG = "arg"; - - private Stack<Uri> mUris = new Stack<Uri>(); - private ContentValues mValues; - private ContentResolver mContentResolver; - - public void insert(ContentResolver contentResolver, InputStream in) - throws IOException, SAXException { - mContentResolver = contentResolver; - Xml.parse(in, Xml.Encoding.UTF_8, this); - } - - public void insert(ContentResolver contentResolver, String in) - throws SAXException { - mContentResolver = contentResolver; - Xml.parse(in, this); - } - - private void parseRow(Attributes atts) throws SAXException { - String uriStr = atts.getValue(URI_STR); - Uri uri; - if (uriStr != null) { - // case 1 - uri = Uri.parse(uriStr); - if (uri == null) { - throw new SAXException("attribute " + - atts.getValue(URI_STR) + " parsing failure"); - } - - } else if (mUris.size() > 0){ - // case 2 - String postfix = atts.getValue(POSTFIX); - if (postfix != null) { - uri = Uri.withAppendedPath(mUris.lastElement(), - postfix); - } else { - uri = mUris.lastElement(); - } - } else { - throw new SAXException("attribute parsing failure"); - } - - mUris.push(uri); - - } - - private Uri insertRow() { - Uri u = mContentResolver.insert(mUris.lastElement(), mValues); - mValues = null; - return u; - } - - public void startElement(String uri, String localName, String name, - Attributes atts) throws SAXException { - if (ROW.equals(localName)) { - if (mValues != null) { - // case 2, <Col> before <Row> insert last uri - if (mUris.empty()) { - throw new SAXException("uri is empty"); - } - Uri nextUri = insertRow(); - if (nextUri == null) { - throw new SAXException("insert to uri " + - mUris.lastElement().toString() + " failure"); - } else { - // make sure the stack lastElement save uri for more than one row - mUris.pop(); - mUris.push(nextUri); - parseRow(atts); - } - } else { - int attrLen = atts.getLength(); - if (attrLen == 0) { - // case 3, share same uri as last level - mUris.push(mUris.lastElement()); - } else { - parseRow(atts); - } - } - } else if (COL.equals(localName)) { - int attrLen = atts.getLength(); - if (attrLen != 2) { - throw new SAXException("illegal attributes number " + attrLen); - } - String key = atts.getValue(0); - String value = atts.getValue(1); - if (key != null && key.length() > 0 && value != null && value.length() > 0) { - if (mValues == null) { - mValues = new ContentValues(); - } - mValues.put(key, value); - } else { - throw new SAXException("illegal attributes value"); - } - } else if (DEL.equals(localName)){ - Uri u = Uri.parse(atts.getValue(URI_STR)); - if (u == null) { - throw new SAXException("attribute " + - atts.getValue(URI_STR) + " parsing failure"); - } - int attrLen = atts.getLength() - 2; - if (attrLen > 0) { - String[] selectionArgs = new String[attrLen]; - for (int i = 0; i < attrLen; i++) { - selectionArgs[i] = atts.getValue(i+2); - } - mContentResolver.delete(u, atts.getValue(1), selectionArgs); - } else if (attrLen == 0){ - mContentResolver.delete(u, atts.getValue(1), null); - } else { - mContentResolver.delete(u, null, null); - } - - } else { - throw new SAXException("unknown element: " + localName); - } - } - - public void endElement(String uri, String localName, String name) - throws SAXException { - if (ROW.equals(localName)) { - if (mUris.empty()) { - throw new SAXException("uri mismatch"); - } - if (mValues != null) { - insertRow(); - } - mUris.pop(); - } - } - - - public void characters(char[] ch, int start, int length) - throws SAXException { - // TODO Auto-generated method stub - - } - - public void endDocument() throws SAXException { - // TODO Auto-generated method stub - - } - - public void endPrefixMapping(String prefix) throws SAXException { - // TODO Auto-generated method stub - - } - - public void ignorableWhitespace(char[] ch, int start, int length) - throws SAXException { - // TODO Auto-generated method stub - - } - - public void processingInstruction(String target, String data) - throws SAXException { - // TODO Auto-generated method stub - - } - - public void setDocumentLocator(Locator locator) { - // TODO Auto-generated method stub - - } - - public void skippedEntity(String name) throws SAXException { - // TODO Auto-generated method stub - - } - - public void startDocument() throws SAXException { - // TODO Auto-generated method stub - - } - - public void startPrefixMapping(String prefix, String uri) - throws SAXException { - // TODO Auto-generated method stub - - } - -} |