/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library 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 Lesser General Public License for more
* details.
*/
package com.liferay.document.library.repository.cmis.internal;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
/**
* Implements the logic for CMIS repository vendor and version detection.
*
* @author Iván Zaera
*/
public class CMISRepositoryDetector {
/**
* Creates a detector for the given CMIS repository. The detection routines
* are run once and cached inside the object for future reference.
*
* @param repositoryInfo the repository description
*/
public CMISRepositoryDetector(RepositoryInfo repositoryInfo) {
_detectVendor(repositoryInfo);
}
public boolean isNuxeo() {
return _nuxeo;
}
public boolean isNuxeo5_4() {
return _nuxeo5_4;
}
public boolean isNuxeo5_5OrHigher() {
return _nuxeo5_5OrHigher;
}
public boolean isNuxeo5_8OrHigher() {
return _nuxeo5_8OrHigher;
}
/**
* Detects the version number for the Nuxeo repository.
*
* @param repositoryInfo the repository description
*/
protected void detectNuxeo(RepositoryInfo repositoryInfo) {
String productVersion = repositoryInfo.getProductVersion();
String[] versionParts = StringUtil.split(
productVersion, StringPool.PERIOD);
int major = GetterUtil.getInteger(versionParts[0]);
int minor = GetterUtil.getInteger(versionParts[1]);
if (major > 5) {
_nuxeo5_8OrHigher = true;
_nuxeo5_5OrHigher = true;
}
else if (major == 5) {
if (minor >= 8) {
_nuxeo5_8OrHigher = true;
}
if (minor >= 5) {
_nuxeo5_5OrHigher = true;
}
if (minor == 4) {
_nuxeo5_4 = true;
}
}
}
/**
* Detects the vendor's name for the CMIS repository.
*
* @param repositoryInfo the repository description
*/
private void _detectVendor(RepositoryInfo repositoryInfo) {
String productName = repositoryInfo.getProductName();
if (productName.contains(_NUXEO_ID)) {
_nuxeo = true;
detectNuxeo(repositoryInfo);
}
}
private static final String _NUXEO_ID = "Nuxeo";
private boolean _nuxeo;
private boolean _nuxeo5_4;
private boolean _nuxeo5_5OrHigher;
private boolean _nuxeo5_8OrHigher;
}