/** * Aptana Studio * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions). * Please see the license.html included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package com.aptana.ide.syncing.ui.old.views; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import com.aptana.core.logging.IdeLog; import com.aptana.core.util.FileUtil; import com.aptana.ide.syncing.core.old.ISyncResource; import com.aptana.ide.syncing.core.old.SyncState; import com.aptana.ide.syncing.ui.SyncingUIPlugin; public class SyncExporter { /** * Exports a sync state to a log file. * * @param logFile * File to export the log into. * @param items * Synchronized resources */ @SuppressWarnings("nls") public void export(File logFile, ISyncResource[] items) { DateFormat df = new SimpleDateFormat(); String date = df.format(new Date()); Writer writer = null; try { if (!logFile.exists()) { logFile.createNewFile(); } writer = new FileWriter(logFile, true); StringBuilder builder = new StringBuilder(); builder.append("File Transfer Log: " + date + FileUtil.NEW_LINE); for (ISyncResource iSyncResource : items) { if (iSyncResource.isSkipped()) { builder.append(" " + iSyncResource.getPath().toString() + ": Skipped"); } else { builder.append(" " + iSyncResource.getPath().toString() + ": " + getSyncState(iSyncResource.getSyncState())); } builder.append('\n'); } writer.write(builder.toString()); } catch (IOException e) { IdeLog.logError(SyncingUIPlugin.getDefault(), e); } finally { try { if (writer != null) { writer.close(); } } catch (IOException e) { // ignore } } } /** * Return the string associated with the item sync state. * * @param state * @return */ public static String getSyncState(int state) { switch (state) { case SyncState.Ignore: return "Ignore"; //$NON-NLS-1$ case SyncState.ItemsMatch: return "Items Match"; //$NON-NLS-1$ case SyncState.CRCMismatch: return "CRC Mismatch"; //$NON-NLS-1$ case SyncState.ClientItemIsNewer: return "Uploaded"; //$NON-NLS-1$ case SyncState.ServerItemIsNewer: return "Downloaded"; //$NON-NLS-1$ case SyncState.ClientItemOnly: return "Uploaded"; //$NON-NLS-1$ case SyncState.ServerItemOnly: return "Downloaded"; //$NON-NLS-1$ case SyncState.IncompatibleFileTypes: return "Incompatible File Types"; //$NON-NLS-1$ case SyncState.ClientItemDeleted: return "Deleted on Client"; //$NON-NLS-1$ case SyncState.ServerItemDeleted: return "Deleted on Server"; //$NON-NLS-1$ default: return "Unknown"; //$NON-NLS-1$ } } }