package com.vistatec.ocelot.xliff.freme.helper;
/**
* Factory class for XLIFF Helper classes. Depending on the XLIFF version, this
* class provides the proper helper object.
*/
public class FremeXliffHelperFactory {
/** XLIFF 1.2 version constant. */
private static final String XLIFF_1_2_VERSION = "1.2";
/** XLIFF 2.0 version constant. */
private static final String XLIFF_2_0_VERSION = "2.0";
/**
* Creates the proper helper depending on the version.
*
* @param version
* the version
* @return the helper object
* @throws UnsupportedVersionException
* exception raised if the requested version is not supported.
*/
public static FremeXliffHelper createHelper(final String version)
throws UnsupportedVersionException {
FremeXliffHelper helper = null;
if (version != null) {
switch (version) {
case XLIFF_1_2_VERSION:
helper = new FremeXliff1_2Helper();
break;
case XLIFF_2_0_VERSION:
helper = new FremeXliff2_0Helper();
break;
default:
throw new UnsupportedVersionException(version);
}
}
return helper;
}
/**
* Exception raised when a request is received for an unsupported XLIFF
* version.
*/
public static class UnsupportedVersionException extends Exception {
/** The serial version UID. */
private static final long serialVersionUID = 1L;
/**
* Constructor.
*
* @param unsupportedVersion
* the unsupported version.
*/
public UnsupportedVersionException(String unsupportedVersion) {
super(buildMessage(unsupportedVersion));
}
/**
* Builds the error message.
*
* @param unsupportedVersion
* the unsupported version
* @return the error message.
*/
private static String buildMessage(String unsupportedVersion) {
return "Unsupported XLIFF version: " + unsupportedVersion + ".";
}
}
}