Android Open Source - hubblog Organization Repositories






From Project

Back to project page hubblog.

License

The source code is released under:

MIT License

If you think the Android project hubblog 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

/*
 * Copyright 2012 GitHub Inc.//  w ww  .jav  a 2s .  co  m
 *
 * 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.github.mobile.Persistence;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;

import com.github.mobile.Accounts.GitHubAccount;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.assistedinject.Assisted;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import org.eclipse.egit.github.core.Repository;
import org.eclipse.egit.github.core.User;
import org.eclipse.egit.github.core.service.RepositoryService;
import org.eclipse.egit.github.core.service.WatcherService;

/**
 * Cache of repositories under a given organization
 */
public class OrganizationRepositories implements
        PersistableResource<Repository> {

    /**
     * Creation factory
     */
    public interface Factory {

        /**
         * Get repositories under given organization
         *
         * @param org
         * @return repositories
         */
        OrganizationRepositories under(User org);
    }

    private final User org;

    private final RepositoryService repos;

    private final WatcherService watcher;

    private final Provider<GitHubAccount> accountProvider;

    /**
     * Create repositories cache for a given organization
     *
     * @param orgs
     * @param repos
     * @param watcher
     * @param accountProvider
     */
    @Inject
    public OrganizationRepositories(@Assisted User orgs,
            RepositoryService repos, WatcherService watcher,
            Provider<GitHubAccount> accountProvider) {
        this.org = orgs;
        this.repos = repos;
        this.watcher = watcher;
        this.accountProvider = accountProvider;
    }

    @Override
    public Cursor getCursor(SQLiteDatabase readableDatabase) {
        SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
        builder.setTables("repos JOIN users ON (repos.ownerId = users.id)");
        return builder.query(readableDatabase, new String[] {
                "repos.repoId, repos.name", "users.id", "users.name",
                "users.avatarurl", "repos.private", "repos.fork",
                "repos.description", "repos.forks", "repos.watchers",
                "repos.language", "repos.hasIssues", "repos.mirrorUrl" },
                "repos.orgId=?",
                new String[] { Integer.toString(org.getId()) }, null, null,
                null);
    }

    @Override
    public Repository loadFrom(Cursor cursor) {
        Repository repo = new Repository();
        repo.setId(cursor.getLong(0));
        repo.setName(cursor.getString(1));

        User owner = new User();
        owner.setId(cursor.getInt(2));
        owner.setLogin(cursor.getString(3));
        owner.setAvatarUrl(cursor.getString(4));
        repo.setOwner(owner);

        repo.setPrivate(cursor.getInt(5) == 1);
        repo.setFork(cursor.getInt(6) == 1);
        repo.setDescription(cursor.getString(7));
        repo.setForks(cursor.getInt(8));
        repo.setWatchers(cursor.getInt(9));
        repo.setLanguage(cursor.getString(10));
        repo.setHasIssues(cursor.getInt(11) == 1);
        repo.setMirrorUrl(cursor.getString(12));

        return repo;
    }

    @Override
    public void store(SQLiteDatabase db, List<Repository> repos) {
        db.delete("repos", "orgId=?",
                new String[] { Integer.toString(org.getId()) });
        if (repos.isEmpty())
            return;

        ContentValues values = new ContentValues(12);
        for (Repository repo : repos) {
            values.clear();

            User owner = repo.getOwner();
            values.put("repoId", repo.getId());
            values.put("name", repo.getName());
            values.put("orgId", org.getId());
            values.put("ownerId", owner.getId());
            values.put("private", repo.isPrivate() ? 1 : 0);
            values.put("fork", repo.isFork() ? 1 : 0);
            values.put("description", repo.getDescription());
            values.put("forks", repo.getForks());
            values.put("watchers", repo.getWatchers());
            values.put("language", repo.getLanguage());
            values.put("hasIssues", repo.isHasIssues() ? 1 : 0);
            values.put("mirrorUrl", repo.getMirrorUrl());
            db.replace("repos", null, values);

            values.clear();

            values.put("id", owner.getId());
            values.put("name", owner.getLogin());
            values.put("avatarurl", owner.getAvatarUrl());
            db.replace("users", null, values);
        }
    }

    @Override
    public List<Repository> request() throws IOException {
        if (isAuthenticatedUser()) {
            Set<Repository> all = new TreeSet<Repository>(
                    new Comparator<Repository>() {

                        @Override
                        public int compare(final Repository repo1,
                                final Repository repo2) {
                            final long id1 = repo1.getId();
                            final long id2 = repo2.getId();
                            if (id1 > id2)
                                return 1;
                            if (id1 < id2)
                                return -1;
                            return 0;
                        }
                    });
            all.addAll(repos.getRepositories());
            all.addAll(watcher.getWatched());
            return new ArrayList<Repository>(all);
        } else
            return repos.getOrgRepositories(org.getLogin());
    }

    private boolean isAuthenticatedUser() {
        return org.getLogin().equals(accountProvider.get().getUsername());
    }

    @Override
    public String toString() {
        return getClass().getSimpleName() + '[' + org.getLogin() + ']';
    }
}




Java Source Code List

com.donskifarrell.Hubblog.BindingModule.java
com.donskifarrell.Hubblog.Activities.HubblogActivity.java
com.donskifarrell.Hubblog.Activities.LoginActivity.java
com.donskifarrell.Hubblog.Activities.StartupActivity.java
com.donskifarrell.Hubblog.Activities.Adapters.ArticleWebViewAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.ArticlesAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.MetadataAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.SidebarAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.TabsAdapter.java
com.donskifarrell.Hubblog.Activities.Dialogs.AboutDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.AddSiteDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.DeleteArticleDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.EditArticleTitleDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.LightAlertDialog.java
com.donskifarrell.Hubblog.Activities.Dialogs.LightProgressDialog.java
com.donskifarrell.Hubblog.Activities.Dialogs.NotificationDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.SelectSiteDialogFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.BasePageFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.CommitArticleFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.EditArticleFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.EditMarkdownFragment.java
com.donskifarrell.Hubblog.Interfaces.ActivityDataListener.java
com.donskifarrell.Hubblog.Interfaces.ArticleWebViewJsInterface.java
com.donskifarrell.Hubblog.Interfaces.DataProvider.java
com.donskifarrell.Hubblog.Interfaces.DialogListener.java
com.donskifarrell.Hubblog.Interfaces.MetadataTagListener.java
com.donskifarrell.Hubblog.Interfaces.OnSidebarListItemSelected.java
com.donskifarrell.Hubblog.Providers.DatabaseHelper.java
com.donskifarrell.Hubblog.Providers.DatabaseProvider.java
com.donskifarrell.Hubblog.Providers.FileSystemProvider.java
com.donskifarrell.Hubblog.Providers.GitHubProvider.java
com.donskifarrell.Hubblog.Providers.HubblogDataProvider.java
com.donskifarrell.Hubblog.Providers.SharedPreferencesProvider.java
com.donskifarrell.Hubblog.Providers.Data.Account.java
com.donskifarrell.Hubblog.Providers.Data.Article.java
com.donskifarrell.Hubblog.Providers.Data.MetadataTag.java
com.donskifarrell.Hubblog.Providers.Data.Site.java
com.github.kevinsawicki.wishlist.ActivityUtils.java
com.github.kevinsawicki.wishlist.AsyncLoader.java
com.github.kevinsawicki.wishlist.CursorAdapter.java
com.github.kevinsawicki.wishlist.DatabaseHelper.java
com.github.kevinsawicki.wishlist.DecodeBitmapTask.java
com.github.kevinsawicki.wishlist.EditTextUtils.java
com.github.kevinsawicki.wishlist.Gestures.java
com.github.kevinsawicki.wishlist.ImageViewBitmapTask.java
com.github.kevinsawicki.wishlist.Keyboard.java
com.github.kevinsawicki.wishlist.LightDialog.java
com.github.kevinsawicki.wishlist.LocationUtils.java
com.github.kevinsawicki.wishlist.MultiTypeAdapter.java
com.github.kevinsawicki.wishlist.OnDoubleTapAdapter.java
com.github.kevinsawicki.wishlist.SectionFinder.java
com.github.kevinsawicki.wishlist.SectionMultiTypeAdapter.java
com.github.kevinsawicki.wishlist.SectionSingleTypeAdapter.java
com.github.kevinsawicki.wishlist.SingleTypeAdapter.java
com.github.kevinsawicki.wishlist.SingleTypeCursorAdapter.java
com.github.kevinsawicki.wishlist.Toaster.java
com.github.kevinsawicki.wishlist.TypeAdapter.java
com.github.kevinsawicki.wishlist.TypefaceUtils.java
com.github.kevinsawicki.wishlist.ViewFinder.java
com.github.kevinsawicki.wishlist.ViewUpdater.java
com.github.kevinsawicki.wishlist.ViewUtils.java
com.github.mobile.Accounts.AccountAuthenticatorService.java
com.github.mobile.Accounts.AccountAuthenticator.java
com.github.mobile.Accounts.AccountClient.java
com.github.mobile.Accounts.AccountConstants.java
com.github.mobile.Accounts.AccountScope.java
com.github.mobile.Accounts.AccountUtils.java
com.github.mobile.Accounts.AuthenticatedUserLoader.java
com.github.mobile.Accounts.AuthenticatedUserTask.java
com.github.mobile.Accounts.DefaultClient.java
com.github.mobile.Accounts.GitHubAccount.java
com.github.mobile.Accounts.ScopeBase.java
com.github.mobile.Accounts.TwoFactorAuthActivity.java
com.github.mobile.Accounts.TwoFactorAuthClient.java
com.github.mobile.Accounts.TwoFactorAuthException.java
com.github.mobile.Persistence.AccountDataManager.java
com.github.mobile.Persistence.CacheHelper.java
com.github.mobile.Persistence.DatabaseCache.java
com.github.mobile.Persistence.OrganizationLoader.java
com.github.mobile.Persistence.OrganizationRepositories.java
com.github.mobile.Persistence.Organizations.java
com.github.mobile.Persistence.PersistableResource.java
com.github.mobile.Requests.RequestCodes.java
com.github.mobile.Requests.RequestFuture.java
com.github.mobile.Requests.RequestReader.java
com.github.mobile.Requests.RequestWriter.java
com.github.mobile.Utils.IssueFilter.java
com.github.mobile.Utils.ToastUtils.java
com.github.mobile.Utils.UserComparator.java
com.viewpagerindicator.CirclePageIndicator.java
com.viewpagerindicator.IconPageIndicator.java
com.viewpagerindicator.IconPagerAdapter.java
com.viewpagerindicator.IcsLinearLayout.java
com.viewpagerindicator.LinePageIndicator.java
com.viewpagerindicator.PageIndicator.java
com.viewpagerindicator.TabPageIndicator.java
com.viewpagerindicator.TitlePageIndicator.java
com.viewpagerindicator.UnderlinePageIndicator.java