package com.jbirdvegas.mgerrit.tasks;
/*
* Copyright (C) 2013 Android Open Kang Project (AOKP)
* Author: Evan Conway (P4R4N01D), 2013
*
* 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.
*/
import android.content.Context;
import android.content.Intent;
import com.jbirdvegas.mgerrit.database.MessageInfo;
import com.jbirdvegas.mgerrit.database.Reviewers;
import com.jbirdvegas.mgerrit.database.Revisions;
import com.jbirdvegas.mgerrit.database.UserChanges;
import com.jbirdvegas.mgerrit.objects.GerritURL;
import com.jbirdvegas.mgerrit.objects.JSONCommit;
import com.jbirdvegas.mgerrit.objects.Reviewer;
import org.jetbrains.annotations.Nullable;
import java.util.List;
class CommitProcessor extends SyncProcessor<JSONCommit> {
CommitProcessor(Context context, Intent intent, GerritURL url) {
super(context, intent, url);
}
@Override
int insert(JSONCommit commit) {
return doInsert(getContext(), commit);
}
@Override
boolean isSyncRequired(Context context) {
return true;
}
@Override
Class<JSONCommit> getType() {
return JSONCommit.class;
}
@Override
int count(JSONCommit data) {
return data == null ? 0 : 1;
}
@Nullable
protected static Reviewer[] reviewersToArray(JSONCommit commit) {
List<Reviewer> rs = commit.getReviewers();
if (rs == null) return null;
return rs.toArray(new Reviewer[rs.size()]);
}
protected static int doInsert(Context context, JSONCommit commit) {
if (commit == null) return 0;
String changeid = commit.getChangeId();
Reviewer[] reviewers = reviewersToArray(commit);
Reviewers.insertReviewers(context, changeid, reviewers);
Revisions.insertRevision(context, commit.getPatchSet());
MessageInfo.insertMessages(context, changeid, commit.getMessagesList());
UserChanges.updateChange(context, commit);
return 1;
}
}