Android Open Source - android-webview-example Command Uri Matcher






From Project

Back to project page android-webview-example.

License

The source code is released under:

Apache License

If you think the Android project android-webview-example listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.significantfiles.mrcounter.db;
//w  w  w. j ava 2  s .  c om
import java.util.ArrayList;
import java.util.List;

import com.significantfiles.android.provider.table.Authority;
import com.significantfiles.android.provider.table.UriPathExt;
import com.significantfiles.android.sqlite.commands.CommandBasedContentProvider;

import android.content.ContentProvider;
import android.content.UriMatcher;
import android.net.Uri;
import android.util.Log;


public class CommandUriMatcher {

  private final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);

  private final List<ContentProviderCmd> providerList = new ArrayList<ContentProviderCmd>(
      10);

  private final String authorityStr;

  public CommandUriMatcher(final Class<? extends CommandBasedContentProvider> provider) {
    final Authority authority = extractContentUri(provider);
    this.authorityStr = authority.uri();
  }

  private Authority extractContentUri(
      final Class<? extends ContentProvider> provider) {
    final Authority authority = provider.getAnnotation(Authority.class);

    if (authority == null) {
      final String logMsg = "Couldn't create Instance. No annotation found in passed ContentProvider.class [= "
          + provider.getName() + "]";
      Log.e("sqleasy", logMsg);

      throw new IllegalStateException(logMsg);
    }

    return authority;
  }

  public void register( final ContentProviderCmd command ) {
    if( command == null ) {
      final String logMsg = "Couldn't register new command, because passed reference is NULL." ;
      Log.e( "sqleasy", logMsg);
      throw new IllegalArgumentException( logMsg );
    }
    
    final Class<? extends ContentProviderCmd> commandType = command.getClass();
    
    final int code = this.providerList.size();
    
    final UriPathExt pathExt = commandType.getAnnotation( UriPathExt.class );
    final String path = pathExt.uri();
    
    this.matcher.addURI(this.authorityStr, path, code);

    this.providerList.add( command );
  }

  public ContentProviderCmd match(final Uri uri) {
    final int cmdIdx = this.matcher.match(uri);

    if( cmdIdx < 0 ) {
      final String logMsg = "Couldn't match command for passed uri [= " + uri + "]";
      Log.e("sqleasy", logMsg );
      
      throw new IllegalArgumentException(logMsg);
    }
    
    return this.providerList.get(cmdIdx);
  }

  public ContentProviderCmd match(final String uriStr) {
    final Uri uri = Uri.parse(uriStr);
    
    return match(uri);
  }

  public String getUriPath(final Class<? extends ContentProviderCmd> commandType) {
    final UriPathExt path = commandType.getAnnotation( UriPathExt.class );
    
    if( path == null ) return "";
    
    return path.uri();
  }

}




Java Source Code List

com.significantfiles.android.db.CommandUriMatcherTestCase.java
com.significantfiles.android.db.CreditContentProviderTestCase.java
com.significantfiles.android.db.SQLiteCreateTableTestCase.java
com.significantfiles.android.db.SimpleProviderTestCase.java
com.significantfiles.android.db.TestCommandBasedContentProvider.java
com.significantfiles.android.provider.table.Authority.java
com.significantfiles.android.provider.table.ColumnMethodEnumeration.java
com.significantfiles.android.provider.table.OrderBy.java
com.significantfiles.android.provider.table.SQLiteField.java
com.significantfiles.android.provider.table.SQLiteTable.java
com.significantfiles.android.provider.table.SQLiteType.java
com.significantfiles.android.provider.table.UriPathExt.java
com.significantfiles.android.provider.table.constraint.IsPrimaryKey.java
com.significantfiles.android.provider.table.constraint.NotNull.java
com.significantfiles.android.provider.table.constraint.Unique.java
com.significantfiles.android.sqlite.DaoInvocationHandler.java
com.significantfiles.android.sqlite.GET.java
com.significantfiles.android.sqlite.InsertException.java
com.significantfiles.android.sqlite.UnsupportedUri.java
com.significantfiles.android.sqlite.commands.CommandBasedContentProvider.java
com.significantfiles.android.sqlite.commands.CreateTable.java
com.significantfiles.android.sqlite.commands.DaoManager.java
com.significantfiles.android.sqlite.commands.InsertCmd.java
com.significantfiles.android.sqlite.commands.InsertRow.java
com.significantfiles.android.sqlite.create.ColumnExtractor.java
com.significantfiles.android.sqlite.create.TableExtractor.java
com.significantfiles.android.sqlite.query.InsertTxChoice.java
com.significantfiles.android.sqlite.query.Insert.java
com.significantfiles.android.sqlite.query.QueryType.java
com.significantfiles.android.sqlite.query.Replace.java
com.significantfiles.android.sqlite.query.SQL.java
com.significantfiles.android.sqlite.types.BLOB.java
com.significantfiles.android.sqlite.types.ID.java
com.significantfiles.android.sqlite.types.INTEGER.java
com.significantfiles.android.sqlite.types.REAL.java
com.significantfiles.android.sqlite.types.TEXT.java
com.significantfiles.mrcounter.ActivityRequestCode.java
com.significantfiles.mrcounter.Constants.java
com.significantfiles.mrcounter.IndexActivity.java
com.significantfiles.mrcounter.StartActivity.java
com.significantfiles.mrcounter.WebChromeClient.java
com.significantfiles.mrcounter.WebViewClient.java
com.significantfiles.mrcounter.db.CommandUriMatcher.java
com.significantfiles.mrcounter.db.ContentProviderCmd.java
com.significantfiles.mrcounter.db.ContentResolverUtil.java
com.significantfiles.mrcounter.db.ContentValuesKeys.java
com.significantfiles.mrcounter.db.CreditByIdResult.java
com.significantfiles.mrcounter.db.CreditDao.java
com.significantfiles.mrcounter.db.CreditQuery.java
com.significantfiles.mrcounter.db.CreditSQLiteOpenHelper.java
com.significantfiles.mrcounter.db.Credit.java
com.significantfiles.mrcounter.db.Credits.java
com.significantfiles.mrcounter.db.DaoConfig.java
com.significantfiles.mrcounter.db.InsertCreditCmd.java
com.significantfiles.mrcounter.db.UnknownQueryTypeException.java
com.significantfiles.mrcounter.db.Uris.java
com.significantfiles.mrcounter.db.provider.CommandBasedCreditContentProvider.java
com.significantfiles.mrcounter.db.provider.CreditContentProvider.java
com.significantfiles.mrcounter.db.provider.CreditDaoBasedContentProvider.java
com.significantfiles.mrcounter.db.result.Converter.java
com.significantfiles.mrcounter.db.result.Credit.java
com.significantfiles.mrcounter.db.result.DefaultConverterStrategy.java
com.significantfiles.mrcounter.db.result.DefautInteger2IntConverter.java
com.significantfiles.mrcounter.db.result.QueryRef.java
com.significantfiles.mrcounter.js.CreateCreditControl.java
com.significantfiles.mrcounter.js.WebViewFacade.java