/*
This file is part of Libresonic.
Libresonic is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Libresonic is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Libresonic. If not, see <http://www.gnu.org/licenses/>.
Copyright 2016 (C) Libresonic Authors
Based upon Subsonic, Copyright 2009 (C) Sindre Mehus
*/
package org.libresonic.player.domain;
import org.libresonic.player.util.StringUtil;
/**
* Contains the configuration for a transcoding, i.e., a specification of how a given media format
* should be converted to another.
* <br/>
* A transcoding may contain up to three steps. Typically you need to convert in several steps, for
* instance from OGG to WAV to MP3.
*
* @author Sindre Mehus
*/
public class Transcoding {
private Integer id;
private String name;
private String sourceFormats;
private String targetFormat;
private String step1;
private String step2;
private String step3;
private boolean defaultActive;
/**
* Creates a new transcoding specification.
*
* @param id The system-generated ID.
* @param name The user-defined name.
* @param sourceFormats The source formats, e.g., "ogg wav aac".
* @param targetFormat The target format, e.g., "mp3".
* @param step1 The command to execute in step 1.
* @param step2 The command to execute in step 2.
* @param step3 The command to execute in step 3.
* @param defaultActive Whether the transcoding should be automatically activated for all players.
*/
public Transcoding(Integer id, String name, String sourceFormats, String targetFormat, String step1,
String step2, String step3, boolean defaultActive) {
this.id = id;
this.name = name;
this.sourceFormats = sourceFormats;
this.targetFormat = targetFormat;
this.step1 = step1;
this.step2 = step2;
this.step3 = step3;
this.defaultActive = defaultActive;
}
/**
* Returns the system-generated ID.
*
* @return The system-generated ID.
*/
public Integer getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
/**
* Returns the user-defined name.
*
* @return The user-defined name.
*/
public String getName() {
return name;
}
/**
* Sets the user-defined name.
*
* @param name The user-defined name.
*/
public void setName(String name) {
this.name = name;
}
/**
* Returns the source format, e.g., "ogg wav aac".
*
* @return The source format, e.g., "ogg wav aac".
*/
public String getSourceFormats() {
return sourceFormats;
}
public String[] getSourceFormatsAsArray() {
return StringUtil.split(sourceFormats);
}
/**
* Sets the source formats, e.g., "ogg wav aac".
*
* @param sourceFormats The source formats, e.g., "ogg wav aac".
*/
public void setSourceFormats(String sourceFormats) {
this.sourceFormats = sourceFormats;
}
/**
* Returns the target format, e.g., mp3.
*
* @return The target format, e.g., mp3.
*/
public String getTargetFormat() {
return targetFormat;
}
/**
* Sets the target format, e.g., mp3.
*
* @param targetFormat The target format, e.g., mp3.
*/
public void setTargetFormat(String targetFormat) {
this.targetFormat = targetFormat;
}
/**
* Returns the command to execute in step 1.
*
* @return The command to execute in step 1.
*/
public String getStep1() {
return step1;
}
/**
* Sets the command to execute in step 1.
*
* @param step1 The command to execute in step 1.
*/
public void setStep1(String step1) {
this.step1 = step1;
}
/**
* Returns the command to execute in step 2.
*
* @return The command to execute in step 2.
*/
public String getStep2() {
return step2;
}
/**
* Sets the command to execute in step 2.
*
* @param step2 The command to execute in step 2.
*/
public void setStep2(String step2) {
this.step2 = step2;
}
/**
* Returns the command to execute in step 3.
*
* @return The command to execute in step 3.
*/
public String getStep3() {
return step3;
}
/**
* Sets the command to execute in step 3.
*
* @param step3 The command to execute in step 3.
*/
public void setStep3(String step3) {
this.step3 = step3;
}
/**
* Returns whether the transcoding should be automatically activated for all players
*/
public boolean isDefaultActive() {
return defaultActive;
}
/**
* Sets whether the transcoding should be automatically activated for all players
*/
public void setDefaultActive(boolean defaultActive) {
this.defaultActive = defaultActive;
}
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Transcoding that = (Transcoding) o;
return !(id != null ? !id.equals(that.id) : that.id != null);
}
public int hashCode() {
return (id != null ? id.hashCode() : 0);
}
}