/*
* Eoulsan development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public License version 2.1 or
* later and CeCILL-C. This should be distributed with the code.
* If you do not have a copy, see:
*
* http://www.gnu.org/licenses/lgpl-2.1.txt
* http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt
*
* Copyright for this code is held jointly by the Genomic platform
* of the Institut de Biologie de l'École normale supérieure and
* the individual authors. These should be listed in @author doc
* comments.
*
* For more information on the Eoulsan project and its aims,
* or to join the Eoulsan Google group, visit the home page
* at:
*
* http://outils.genomique.biologie.ens.fr/eoulsan
*
*/
package fr.ens.biologie.genomique.eoulsan.data;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import fr.ens.biologie.genomique.eoulsan.checkers.Checker;
import fr.ens.biologie.genomique.eoulsan.core.Module;
/**
* This class define an abstract data format.
* @since 1.0
* @author Laurent Jourdren
*/
abstract class AbstractDataFormat implements DataFormat {
@Override
public String getDescription() {
return getName() + " description.";
}
@Override
public List<String> getExtensions() {
return Collections.singletonList(getDefaultExtension());
}
@Override
public boolean isGenerator() {
return false;
}
@Override
public boolean isChecker() {
return false;
}
@Override
public Module getGenerator() {
return null;
}
@Override
public Checker getChecker() {
return null;
}
@Override
public String getContentType() {
return "text/plain";
}
@Override
public int getMaxFilesCount() {
return 1;
}
@Override
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof DataFormat)) {
return false;
}
final DataFormat that = (DataFormat) o;
return Objects.equals(this.getName(), that.getName())
&& Objects.equals(this.getDescription(), that.getDescription())
&& Objects.equals(this.getContentType(), that.getContentType())
&& Objects.equals(this.getDefaultExtension(),
that.getDefaultExtension())
&& Objects.equals(this.getExtensions(), that.getExtensions())
&& Objects.equals(this.isGenerator(), that.isGenerator())
&& Objects.equals(this.isChecker(), that.isChecker())
&& ((this.getGenerator() == null && that.getGenerator() == null)
|| (this.getGenerator() != null
&& that.getGenerator() != null
&& Objects.equals(this.getGenerator().getClass().getName(),
that.getGenerator().getClass().getName())))
&& ((this.getChecker() == null && that.getChecker() == null)
|| (this.getChecker() != null
&& that.getChecker() != null
&& Objects.equals(this.getChecker().getClass().getName(),
that.getChecker().getClass().getName())))
&& Objects.equals(this.getMaxFilesCount(), that.getMaxFilesCount());
}
@Override
public int hashCode() {
final Integer extensionsHashCode =
getExtensions() == null ? null : getExtensions().hashCode();
final Integer generatorHashCode =
isGenerator() ? getGenerator().getClass().hashCode() : null;
final Integer checkerHashCode =
isChecker() ? getChecker().getClass().hashCode() : null;
return Objects.hash(getName(), getDescription(), getContentType(),
getDefaultExtension(), extensionsHashCode, isGenerator(), isChecker(),
generatorHashCode, checkerHashCode, getMaxFilesCount());
}
@Override
public String toString() {
final Module generator = getGenerator();
final Checker checker = getChecker();
return com.google.common.base.Objects.toStringHelper(this)
.add("name", getName()).add("description", getDescription())
.add("contentType", getContentType())
.add("defaultExtension", getDefaultExtension())
.add("extensions", getExtensions())
.add("generatorClassName",
generator != null ? generator.getClass().getCanonicalName() : null)
.add("checkerClassName",
checker != null ? checker.getClass().getCanonicalName() : null)
.add("maxFilesCount", getMaxFilesCount()).toString();
}
}