/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.api.git; import org.eclipse.che.api.git.shared.GitUser; import org.eclipse.che.api.git.shared.Log; import org.eclipse.che.api.git.shared.Revision; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.TimeZone; /** * @author andrew00x */ public class LogPage implements Log, InfoPage { // The same as C git does. private static final String DATE_FORMAT = "EEE MMM dd HH:mm:ss yyyy ZZZZZ"; private static final DateFormat dateFormat; protected List<Revision> commits; static { dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US); TimeZone timeZone = TimeZone.getDefault(); dateFormat.setTimeZone(timeZone); } public LogPage(List<Revision> commits) { this.commits = commits; } /** @see InfoPage#writeTo(java.io.OutputStream) */ @Override public void writeTo(OutputStream out) throws IOException { PrintWriter writer = new PrintWriter(out); DateFormat df = (DateFormat)dateFormat.clone(); for (Revision commit : commits) { writer.format("commit %s\n", commit.getId()); GitUser commiter = commit.getCommitter(); if (commiter != null) { writer.format("Author: %1$s <%2$s>\n", commiter.getName(), commiter.getEmail()); } long commitTime = commit.getCommitTime(); if (commitTime > 0) { writer.format("Date: %s\n", df.format(new Date(commitTime))); } writer.println(); // Message with indent. String[] lines = commit.getMessage().split("\n"); for (String line : lines) { writer.format(" %s\n", line); } writer.println(); } writer.flush(); } /** {@inheritDoc} */ @Override public List<Revision> getCommits() { return commits; } }