}
public int compareCdmlibServicesVersion() throws CdmSourceException {
- int result = 0;
+
String serverVersion = cdmlibServicesVersion;
+ String serverCdmlibLastModified = cdmlibServicesLastModified;
+
+ return compareCdmlibServicesVersion(serverVersion, serverCdmlibLastModified);
+ }
+
+
+ /**
+ * @param serverVersion
+ * @param editorVersion
+ * @throws CdmSourceException
+ */
+ public static int compareCdmlibServicesVersion(String serverVersion, String serverCdmlibLastModified) throws CdmSourceException {
+
String editorVersion = CdmApplicationState.getCdmlibVersion();
+ String editorCdmlibLastModified = CdmApplicationState.getCdmlibLastModified();
+ int result = 0;
if(StringUtils.isBlank(serverVersion) || StringUtils.isBlank(editorVersion)) {
throw new CdmSourceException("cdmlib-services server or editor version is empty");
}
}
// at this point major, minor and patch versions are matching
- if(StringUtils.isBlank(cdmlibServicesLastModified) || StringUtils.isBlank(CdmApplicationState.getCdmlibLastModified())) {
+ if(StringUtils.isBlank(serverCdmlibLastModified) || StringUtils.isBlank(editorCdmlibLastModified)) {
throw new CdmSourceException("cdmlib-services server or editor version is empty");
}
String cdmServerIgnoreVersion = System.getProperty("cdm.server.version.lm.ignore");
if(StringUtils.isBlank(cdmServerIgnoreVersion) || !cdmServerIgnoreVersion.equals("true")) {
- Long serverLastModified = Long.valueOf(cdmlibServicesLastModified);
- Long editorLastModified = Long.valueOf(CdmApplicationState.getCdmlibLastModified());
+ Long serverLastModified = Long.valueOf(serverCdmlibLastModified);
+ Long editorLastModified = Long.valueOf(editorCdmlibLastModified);
return serverLastModified.compareTo(editorLastModified);
}
return 0;
-
}
+
+
public static List<CdmServerInfo> getCdmServers() {
if(cdmServerInfoList == null) {
cdmServerInfoList = new ArrayList<CdmServerInfo>();
import org.junit.Test;
import org.unitils.UnitilsJUnit4;
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.config.CdmSourceException;
import eu.etaxonomy.taxeditor.remoting.server.CDMServerException;
import eu.etaxonomy.taxeditor.remoting.source.CdmServerInfo;
import eu.etaxonomy.taxeditor.remoting.source.CdmServerInfo.CdmInstanceInfo;
Assert.assertTrue(instances != null && !instances.isEmpty());
}
+ @Test
+ public void compareCdmlibServicesVersionTest() throws CdmSourceException {
+ String editorVersion = CdmApplicationState.getCdmlibVersion();
+ String editorCdmlibLastModified = CdmApplicationState.getCdmlibLastModified();
+ Long editorCdmlibLastModifiedLong = Long.valueOf(editorCdmlibLastModified);
+
+ String[] editorVersionSplit = editorVersion.split("\\.");
+
+ Assert.assertEquals(0, CdmServerInfo.compareCdmlibServicesVersion(editorVersion, editorCdmlibLastModified));
+
+
+ int editorVersionMajor = Integer.valueOf(editorVersionSplit[0]);
+ int editorVersionMinor = Integer.valueOf(editorVersionSplit[1]);
+ int editorVersionPatch = Integer.valueOf(editorVersionSplit[2]);
+
+ String serverVersionMajorNew = String.valueOf(editorVersionMajor+1) + "." + String.valueOf(editorVersionMinor) + "." + String.valueOf(editorVersionPatch);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(serverVersionMajorNew, editorCdmlibLastModified) > 0);
+
+ String serverVersionMinorNew = String.valueOf(editorVersionMajor) + "." + String.valueOf(editorVersionMinor+1) + "." + String.valueOf(editorVersionPatch);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(serverVersionMinorNew, editorCdmlibLastModified) > 0);
+
+ String serverVersionPatchNew = String.valueOf(editorVersionMajor) + "." + String.valueOf(editorVersionMinor) + "." + String.valueOf(editorVersionPatch+1);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(serverVersionPatchNew, editorCdmlibLastModified) > 0);
+
+ String serverVersionMajorOld = String.valueOf(editorVersionMajor-1) + "." + String.valueOf(editorVersionMinor) + "." + String.valueOf(editorVersionPatch);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(serverVersionMajorOld, editorCdmlibLastModified) < 0);
+
+ String serverVersionMinorOld = String.valueOf(editorVersionMajor) + "." + String.valueOf(editorVersionMinor-1) + "." + String.valueOf(editorVersionPatch);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(serverVersionMinorOld, editorCdmlibLastModified) < 0);
+
+ String serverVersionPatchOld = String.valueOf(editorVersionMajor) + "." + String.valueOf(editorVersionMinor) + "." + String.valueOf(editorVersionPatch-1);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(serverVersionPatchOld, editorCdmlibLastModified) < 0);
+
+ String serverCdmlibLastModifiedNew = String.valueOf(editorCdmlibLastModifiedLong+1);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(editorVersion, serverCdmlibLastModifiedNew) > 0);
+
+ String serverCdmlibLastModifiedOld = String.valueOf(editorCdmlibLastModifiedLong-1);
+ Assert.assertTrue(CdmServerInfo.compareCdmlibServicesVersion(editorVersion, serverCdmlibLastModifiedOld) < 0);
+
+ }
+
@Test
public void convertToServerConfigTest() {