/******************************************************************************* * Copyright (c) 2013 Ericsson * * 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: * Matthew Khouzam - Initial API and implementation *******************************************************************************/ package fr.inria.linuxtools.internal.tmf.ui.project.wizards.importtrace; import java.io.File; /** * File and name internal helper class <br> * it has the file, a name to display, whether the name is conflicting and a * reference to the configuration element defining its trace type. * * @author Matthew Khouzam * @since 2.0 */ class FileAndName implements Comparable<FileAndName> { final private File fFile; private String fTraceTypeId; private String fName; private boolean fConflict; // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ /** * A file and name * * @param f * the file, can only be set here * @param n * the name, can be renamed * */ public FileAndName(File f, String n) { fFile = f; fName = n; fTraceTypeId = null; } // ------------------------------------------------------------------------ // Getter / Setter // ------------------------------------------------------------------------ /** * Get the name * * @return the name */ public String getName() { return fName; } /** * Set the name * * @param name * the name to set */ public void setName(String name) { this.fName = name; } /** * Sets the configuration element of the * * @param elem * the element */ public void setTraceTypeId(String elem) { fTraceTypeId = elem; } /** * Gets the configuration element canonical name * * @return gets the configuration element canonical name */ public String getTraceTypeId() { return fTraceTypeId; } /** * Get the file * * @return the file */ public File getFile() { return fFile; } /** * Set that the name is conflicting or not * * @param conflict * if the name is conflicting or not */ public void setConflictingName(boolean conflict) { fConflict = conflict; } /** * Is the name conflicting? * * @return is the name conflicting? */ public boolean isConflictingName() { return fConflict; } /** * Is the fileAndName renamed * * @return true if the name does not match the filename */ public boolean isRenamed() { return !fName.equals(fFile.getName()); } // ------------------------------------------------------------------------ // Comparator & Equals // ------------------------------------------------------------------------ @Override public int compareTo(FileAndName o) { int retVal = getFile().compareTo(o.getFile()); if (retVal == 0) { if (getTraceTypeId() != null) { if (getTraceTypeId() != null) { if (o.getTraceTypeId() != null) { retVal = getTraceTypeId().compareTo(o.getTraceTypeId()); } } } } return retVal; } @Override public int hashCode() { // do not take "name" into account since it can change on the fly. final int prime = 31; int result = 1; result = prime * result + ((fTraceTypeId == null) ? 0 : fTraceTypeId.hashCode()); result = prime * result + ((fFile == null) ? 0 : fFile.hashCode()); return result; } @Override public boolean equals(Object obj) { // do not take "name" into account since it can change on the fly. if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof FileAndName)) { return false; } FileAndName other = (FileAndName) obj; if (fTraceTypeId == null) { if (other.fTraceTypeId != null) { return false; } } else if (!fTraceTypeId.equals(other.fTraceTypeId)) { return false; } if (fFile == null) { if (other.fFile != null) { return false; } } else if (!fFile.equals(other.fFile)) { return false; } return true; } }