package org.develnext.jphp.ext.git.support; import org.eclipse.jgit.api.MergeResult; import org.eclipse.jgit.api.PullResult; import org.eclipse.jgit.api.Status; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.ReflogEntry; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.transport.OperationResult; import org.eclipse.jgit.transport.PushResult; import org.eclipse.jgit.transport.RemoteConfig; import org.eclipse.jgit.transport.RemoteRefUpdate; import php.runtime.Memory; import php.runtime.memory.ArrayMemory; import php.runtime.memory.LongMemory; import php.runtime.memory.ReferenceMemory; import php.runtime.memory.StringMemory; import java.util.Collection; import java.util.List; public class GitUtils { public static Memory valueOf(AnyObjectId value) { return value == null ? Memory.NULL : StringMemory.valueOf(value.getName()); } public static ArrayMemory valueOf(Ref.Storage storage) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("loose").assign(storage.isLoose()); memory.refOfIndex("packed").assign(storage.isPacked()); return memory; } public static ArrayMemory valueOf(Ref ref) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("name").assign(ref.getName()); memory.refOfIndex("peeled").assign(ref.isPeeled()); memory.refOfIndex("symbolic").assign(ref.isSymbolic()); memory.refOfIndex("objectId").assign(valueOf(ref.getObjectId())); memory.refOfIndex("storage").assign(valueOf(ref.getStorage())); return memory; } public static ArrayMemory valueOfRevCommits(Iterable<RevCommit> commits) { ArrayMemory memory = new ArrayMemory(); for (RevCommit ref : commits) { memory.add(valueOf(ref)); } return memory; } public static ArrayMemory valueOfRefs(Iterable<Ref> refs) { ArrayMemory memory = new ArrayMemory(); for (Ref ref : refs) { memory.add(valueOf(ref)); } return memory; } public static ArrayMemory valueOf(OperationResult value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("advertisedRefs").assign(valueOfRefs(value.getAdvertisedRefs())); memory.refOfIndex("messages").assign(value.getMessages()); memory.refOfIndex("peerUserAgent").assign(value.getPeerUserAgent()); memory.refOfIndex("uri").assign(value.getURI().toString()); return memory; } public static ArrayMemory valueOf(RemoteRefUpdate value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("message").assign(value.getMessage()); memory.refOfIndex("remoteName").assign(value.getRemoteName()); memory.refOfIndex("srcRef").assign(value.getSrcRef()); memory.refOfIndex("expectedOldObjectId").assign(valueOf(value.getExpectedOldObjectId())); memory.refOfIndex("newObjectId").assign(valueOf(value.getNewObjectId())); memory.refOfIndex("delete").assign(value.isDelete()); memory.refOfIndex("fastForward").assign(value.isFastForward()); memory.refOfIndex("forceUpdate").assign(value.isForceUpdate()); return memory; } public static ArrayMemory valueOfRemoteRefUpdates(Iterable<RemoteRefUpdate> values) { ArrayMemory memory = new ArrayMemory(); for (RemoteRefUpdate value : values) { memory.add(valueOf(value)); } return memory; } public static ArrayMemory valueOf(PushResult value) { ArrayMemory memory = valueOf((OperationResult) value); memory.refOfIndex("remoteUpdates").assign(valueOfRemoteRefUpdates(value.getRemoteUpdates())); return memory; } public static ArrayMemory valueOfPushResults(Iterable<PushResult> values) { ArrayMemory memory = new ArrayMemory(); for (PushResult value : values) { memory.add(valueOf(value)); } return memory; } public static ArrayMemory valueOf(RevObject value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("id").assign(valueOf(value.getId())); memory.refOfIndex("type").assign(value.getType()); return memory; } public static ArrayMemory valueOf(PersonIdent value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("name").assign(value.getName()); memory.refOfIndex("email").assign(value.getEmailAddress()); memory.refOfIndex("when").assign(value.getWhen() == null ? Memory.NULL : LongMemory.valueOf(value.getWhen().getTime())); memory.refOfIndex("timeZone").assign( value.getTimeZone() == null ? Memory.NULL : StringMemory.valueOf(value.getTimeZone().getID()) ); return memory; } public static ArrayMemory valueOf(RevCommit value) { ArrayMemory memory = valueOf((RevObject) value); memory.refOfIndex("commitTime").assign(value.getCommitTime()); memory.refOfIndex("encoding").assign(value.getEncodingName()); memory.refOfIndex("shortMessage").assign(value.getShortMessage()); memory.refOfIndex("fullMessage").assign(value.getFullMessage()); ArrayMemory parents = new ArrayMemory(); for (RevCommit revCommit : value.getParents()) { parents.add(valueOf((RevObject)revCommit)); } memory.refOfIndex("parents").assign(parents); PersonIdent authorIdent = value.getAuthorIdent(); memory.refOfIndex("author").assign(authorIdent == null ? Memory.NULL : valueOf(authorIdent)); PersonIdent committerIdent = value.getCommitterIdent(); memory.refOfIndex("committer").assign(committerIdent == null ? Memory.NULL : valueOf(committerIdent)); return memory; } public static ArrayMemory valueOf(Status value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("added").assign(ArrayMemory.ofStringCollection(value.getAdded())); memory.refOfIndex("changed").assign(ArrayMemory.ofStringCollection(value.getChanged())); memory.refOfIndex("conflicting").assign(ArrayMemory.ofStringCollection(value.getConflicting())); memory.refOfIndex("ignoredNotInIndex").assign(ArrayMemory.ofStringCollection(value.getIgnoredNotInIndex())); memory.refOfIndex("missing").assign(ArrayMemory.ofStringCollection(value.getMissing())); memory.refOfIndex("modified").assign(ArrayMemory.ofStringCollection(value.getModified())); memory.refOfIndex("removed").assign(ArrayMemory.ofStringCollection(value.getRemoved())); memory.refOfIndex("uncommittedChanges").assign(ArrayMemory.ofStringCollection(value.getUncommittedChanges())); memory.refOfIndex("untracked").assign(ArrayMemory.ofStringCollection(value.getUntracked())); memory.refOfIndex("untrackedFolders").assign(ArrayMemory.ofStringCollection(value.getUntrackedFolders())); return memory; } public static ArrayMemory valueOf(RemoteConfig value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("name").assign(value.getName()); memory.refOfIndex("receivePack").assign(value.getReceivePack()); memory.refOfIndex("uploadPack").assign(value.getUploadPack()); memory.refOfIndex("mirror").assign(value.isMirror()); memory.refOfIndex("timeout").assign(value.getTimeout()); memory.refOfIndex("tagOpt").assign(value.getTagOpt().name()); return memory; } public static ArrayMemory valueOfRemoteConfigs(Iterable<RemoteConfig> values) { ArrayMemory memory = new ArrayMemory(); for (RemoteConfig value : values) { memory.add(valueOf(value)); } return memory; } public static ArrayMemory valueOf(PullResult call) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("success").assign(call.isSuccessful()); memory.refOfIndex("fetchedFrom").assign(call.getFetchedFrom()); memory.refOfIndex("fetch").assign(valueOf(call.getFetchResult())); memory.refOfIndex("merge").assign(call.getMergeResult() == null ? Memory.NULL : valueOf(call.getMergeResult())); return memory; } public static ArrayMemory valueOf(MergeResult call) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("base").assign(valueOf(call.getBase())); memory.refOfIndex("newHead").assign(valueOf(call.getNewHead())); memory.refOfIndex("status").assign(call.getMergeStatus().name()); memory.refOfIndex("success").assign(call.getMergeStatus().isSuccessful()); memory.refOfIndex("checkoutConflicts").assign(ArrayMemory.ofStringCollection(call.getCheckoutConflicts())); return memory; } public static ArrayMemory valueOf(ReflogEntry value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("newId").assign(valueOf(value.getNewId())); memory.refOfIndex("oldId").assign(valueOf(value.getOldId())); memory.refOfIndex("who").assign(value.getWho() == null ? Memory.NULL : valueOf(value.getWho())); memory.refOfIndex("comment").assign(value.getComment()); return memory; } public static ArrayMemory valueOfReflogEntries(Iterable<ReflogEntry> values) { ArrayMemory memory = new ArrayMemory(); for (ReflogEntry value : values) { memory.add(valueOf(value)); } return memory; } public static ArrayMemory valueOf(DiffEntry value) { ArrayMemory memory = new ArrayMemory(); memory.refOfIndex("oldId").assign(value.getOldId() == null ? Memory.NULL : valueOf(value.getOldId().toObjectId())); memory.refOfIndex("oldPath").assign(value.getOldPath()); memory.refOfIndex("oldMode").assign(value.getOldMode() == null ? Memory.NULL : StringMemory.valueOf(value.getOldMode().toString())); memory.refOfIndex("newId").assign(value.getNewId() == null ? Memory.NULL : valueOf(value.getNewId().toObjectId())); memory.refOfIndex("newPath").assign(value.getNewPath()); memory.refOfIndex("newMode").assign(value.getNewMode() == null ? Memory.NULL : StringMemory.valueOf(value.getNewMode().toString())); memory.refOfIndex("score").assign(value.getScore()); memory.refOfIndex("changeType").assign(value.getChangeType().name()); return memory; } public static Memory valueOfDiffEntries(Iterable<DiffEntry> values) { ArrayMemory memory = new ArrayMemory(); for (DiffEntry value : values) { memory.add(valueOf(value)); } return memory; } }