Repository: openmeetings Updated Branches: refs/heads/master 3e74e1f6a -> 220e729a0
[OPENMEETINGS-1720] OM version is saved/restored during backup/restore Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/220e729a Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/220e729a Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/220e729a Branch: refs/heads/master Commit: 220e729a0a702801d7d63cc3067f081d562223f3 Parents: 3e74e1f Author: Maxim Solodovnik <[email protected]> Authored: Fri Oct 13 10:34:04 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Fri Oct 13 10:34:04 2017 +0700 ---------------------------------------------------------------------- .../core/converter/BaseConverter.java | 3 +- .../openmeetings/core/ldap/LdapOptions.java | 3 +- .../db/dao/basic/ConfigurationDao.java | 3 +- .../db/entity/file/BaseFileItem.java | 8 +- openmeetings-install/pom.xml | 7 + .../openmeetings/backup/BackupExport.java | 108 +++++++------- .../openmeetings/backup/BackupImport.java | 8 +- .../openmeetings/backup/BackupVersion.java | 143 +++++++++++++++++++ .../openmeetings/backup/IntegerTransform.java | 5 +- .../openmeetings/backup/LongTransform.java | 5 +- .../backup/converter/AppointmentConverter.java | 7 +- .../AppointmentReminderTypeConverter.java | 7 +- .../backup/converter/BaseFileItemConverter.java | 7 +- .../backup/converter/GroupConverter.java | 7 +- .../backup/converter/OmCalendarConverter.java | 7 +- .../backup/converter/OmConverter.java | 56 -------- .../backup/converter/PollTypeConverter.java | 7 +- .../converter/RecordingStatusConverter.java | 3 +- .../backup/converter/RoomConverter.java | 7 +- .../backup/converter/RoomTypeConverter.java | 7 +- .../backup/converter/SalutationConverter.java | 7 +- .../backup/converter/UserConverter.java | 7 +- .../openmeetings/backup/TestBackupVersion.java | 52 +++++++ 23 files changed, 321 insertions(+), 153 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java index fabf270..439f3d7 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.core.converter; +import static org.apache.commons.lang3.math.NumberUtils.toInt; import static org.apache.openmeetings.core.data.record.listener.async.BaseStreamWriter.TIME_TO_WAIT_FOR_FRAME; import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV; import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG; @@ -412,7 +413,7 @@ public abstract class BaseConverter { while (matcher.find()) { String foundResolution = txt.substring(matcher.start(), matcher.end()); String[] resultions = foundResolution.split("x"); - return new Dimension(Integer.parseInt(resultions[0]), Integer.parseInt(resultions[1])); + return new Dimension(toInt(resultions[0]), toInt(resultions[1])); } return new Dimension(100, 100); // will return 100x100 for non-video to be able to play http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapOptions.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapOptions.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapOptions.java index f289950..8c9d542 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapOptions.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapOptions.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.core.ldap; +import static org.apache.commons.lang3.math.NumberUtils.toInt; import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey; import java.util.Properties; @@ -119,7 +120,7 @@ public class LdapOptions { // Connection URL host = config.getProperty(CONFIGKEY_LDAP_HOST); - port = Integer.parseInt(config.getProperty(CONFIGKEY_LDAP_PORT, "389")); + port = toInt(config.getProperty(CONFIGKEY_LDAP_PORT), 389); secure = "true".equals(config.getProperty(CONFIGKEY_LDAP_SECURE, "false")); // Username for LDAP SERVER himself http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java index 87f762b..4969ecd 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.db.dao.basic; +import static org.apache.commons.lang3.math.NumberUtils.toInt; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_NAME; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT; @@ -328,7 +329,7 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { } break; case CONFIG_EXT_PROCESS_TTL: - setExtProcessTtl(Integer.parseInt(value)); + setExtProcessTtl(toInt(value)); break; } return entity; http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java index 7342c6a..a1f9ab2 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.db.entity.file; +import static org.apache.commons.lang3.math.NumberUtils.toInt; import static org.apache.openmeetings.util.OmFileHelper.DOC_PAGE_PREFIX; import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG; import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4; @@ -278,12 +279,7 @@ public abstract class BaseFileItem extends HistoricalEntity { if (ext == null) { slide = 0; } else { - try { - //ext is used for slide here - slide = Integer.parseInt(ext); - } catch (Exception e) { - slide = -1; - } + slide = toInt(ext, -1); } if (slide > -1) { f = new File(d, String.format("%1$s-%2$04d.%3$s", DOC_PAGE_PREFIX, slide, EXTENSION_PNG)); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/pom.xml ---------------------------------------------------------------------- diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml index 3a49d1f..4935dc4 100644 --- a/openmeetings-install/pom.xml +++ b/openmeetings-install/pom.xml @@ -47,5 +47,12 @@ <artifactId>commons-cli</artifactId> <version>${commons-cli.version}</version> </dependency> + <dependency> + <groupId>org.apache.openmeetings</groupId> + <artifactId>openmeetings-util</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> </dependencies> </project> http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java index 82df8e4..0f92725 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java @@ -35,8 +35,9 @@ import java.net.URI; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; -import java.util.Date; +import java.util.Arrays; import java.util.List; +import java.util.function.Function; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -67,6 +68,7 @@ import org.apache.openmeetings.db.dao.user.PrivateMessageDao; import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao; import org.apache.openmeetings.db.dao.user.UserContactDao; import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.entity.HistoricalEntity; import org.apache.openmeetings.db.entity.basic.ChatMessage; import org.apache.openmeetings.db.entity.basic.Configuration; import org.apache.openmeetings.db.entity.calendar.Appointment; @@ -76,6 +78,7 @@ import org.apache.openmeetings.db.entity.record.Recording; import org.apache.openmeetings.db.entity.room.Room; import org.apache.openmeetings.db.entity.room.RoomPoll; import org.apache.openmeetings.db.entity.server.LdapConfig; +import org.apache.openmeetings.db.entity.server.OAuthServer; import org.apache.openmeetings.db.entity.user.Group; import org.apache.openmeetings.db.entity.user.PrivateMessage; import org.apache.openmeetings.db.entity.user.User; @@ -155,9 +158,9 @@ public class BackupExport { /* * ##################### Backup Groups */ - writeList(ser, zos, "organizations.xml", "organisations", groupDao.get(0, Integer.MAX_VALUE)); - progressHolder.setProgress(5); - + writeList(ser, zos, "version.xml", "version", Arrays.asList(BackupVersion.get())); + progressHolder.setProgress(2); + exportGroups(zos, progressHolder); exportUsers(zos, progressHolder); exportRoom(zos, progressHolder); exportRoomGroup(zos, progressHolder); @@ -166,7 +169,7 @@ public class BackupExport { exportAppointment(zos, progressHolder); exportMeetingMember(zos, progressHolder); exportLdap(zos, progressHolder, ser); - exportOauth(zos, progressHolder, ser); + exportOauth(zos, progressHolder); exportPrivateMsg(zos, progressHolder); exportPrivateMsgFolder(zos, progressHolder, ser); exportContacts(zos, progressHolder); @@ -196,6 +199,35 @@ public class BackupExport { log.debug("---Done"); } + private static <T extends HistoricalEntity> void bindDate(Registry registry, List<T> list) throws Exception { + bindDate(registry, list, HistoricalEntity::getInserted); + } + + private static <T> void bindDate(Registry registry, List<T> list, Function<T, ?> func) throws Exception { + if (list != null) { + for (T e : list) { + Object d = func.apply(e); + if (d != null) { + Class<?> dateClass = d.getClass(); + registry.bind(dateClass, DateConverter.class); + break; + } + } + } + } + /* + * ##################### Backup Groups + */ + private void exportGroups(ZipOutputStream zos, ProgressHolder progressHolder) throws Exception { + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer ser = new Persister(strategy); + List<Group> list = groupDao.get(0, Integer.MAX_VALUE); + bindDate(registry, list); + writeList(ser, zos, "organizations.xml", "organisations", list); + progressHolder.setProgress(5); + } + /* * ##################### Backup Users */ @@ -207,10 +239,7 @@ public class BackupExport { registry.bind(Group.class, GroupConverter.class); registry.bind(Salutation.class, SalutationConverter.class); List<User> list = userDao.getAllBackupUsers(); - if (list != null && !list.isEmpty()) { - Class<?> dateClass = list.get(0).getRegdate() != null ? list.get(0).getRegdate().getClass() : list.get(0).getInserted().getClass(); - registry.bind(dateClass, DateConverter.class); - } + bindDate(registry, list); writeList(ser, zos, "users.xml", "users", list); progressHolder.setProgress(10); @@ -226,8 +255,9 @@ public class BackupExport { registry.bind(User.class, UserConverter.class); registry.bind(Room.Type.class, RoomTypeConverter.class); - - writeList(serializer, zos, "rooms.xml", "rooms", roomDao.get()); + List<Room> list = roomDao.get(); + bindDate(registry, list); + writeList(serializer, zos, "rooms.xml", "rooms", list); progressHolder.setProgress(15); } @@ -287,20 +317,7 @@ public class BackupExport { registry.bind(User.class, UserConverter.class); registry.bind(Appointment.Reminder.class, AppointmentReminderTypeConverter.class); registry.bind(Room.class, RoomConverter.class); - if (list != null) { - for (Appointment a : list) { - Class<? extends Date> clazz = null; - if (a.getStart() != null) { - clazz = a.getStart().getClass(); - } else if (a.getInserted() != null) { - clazz = a.getInserted().getClass(); - } - if (clazz != null) { - registry.bind(clazz, DateConverter.class); - break; - } - } - } + bindDate(registry, list); writeList(serializer, zos, "appointements.xml", "appointments", list); progressHolder.setProgress(25); @@ -337,8 +354,13 @@ public class BackupExport { /* * ##################### OAuth2 servers */ - private void exportOauth(ZipOutputStream zos, ProgressHolder progressHolder, Serializer ser) throws Exception { - writeList(ser, zos, "oauth2servers.xml", "oauth2servers", auth2Dao.get(0, Integer.MAX_VALUE)); + private void exportOauth(ZipOutputStream zos, ProgressHolder progressHolder) throws Exception { + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + List<OAuthServer> list = auth2Dao.get(0, Integer.MAX_VALUE); + bindDate(registry, list); + writeList(serializer, zos, "oauth2servers.xml", "oauth2servers", list); progressHolder.setProgress(45); } @@ -353,12 +375,8 @@ public class BackupExport { registry.bind(User.class, UserConverter.class); registry.bind(Room.class, RoomConverter.class); - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); - } - - writeList(serializer, zos, "privateMessages.xml", - "privatemessages", list); + bindDate(registry, list, PrivateMessage::getInserted); + writeList(serializer, zos, "privateMessages.xml", "privatemessages", list); progressHolder.setProgress(50); } @@ -394,10 +412,7 @@ public class BackupExport { Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); - } - + bindDate(registry, list); writeList(serializer, zos, "fileExplorerItems.xml", "fileExplorerItems", list); progressHolder.setProgress(65); } @@ -411,10 +426,7 @@ public class BackupExport { Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); - } - + bindDate(registry, list); writeList(serializer, zos, "flvRecordings.xml", "flvrecordings", list); progressHolder.setProgress(70); } @@ -431,10 +443,7 @@ public class BackupExport { registry.bind(User.class, UserConverter.class); registry.bind(Room.class, RoomConverter.class); registry.bind(RoomPoll.Type.class, PollTypeConverter.class); - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getCreated().getClass(), DateConverter.class); - } - + bindDate(registry, list, RoomPoll::getCreated); writeList(serializer, zos, "roompolls.xml", "roompolls", list); progressHolder.setProgress(75); } @@ -461,10 +470,7 @@ public class BackupExport { Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getSent().getClass(), DateConverter.class); - } - + bindDate(registry, list, ChatMessage::getSent); writeList(serializer, zos, "chat_messages.xml", "chat_messages", list); progressHolder.setProgress(85); } @@ -475,9 +481,7 @@ public class BackupExport { Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); - if (list != null && !list.isEmpty() && list.get(0).getInserted() != null) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); - } + bindDate(registry, list); return serializer; } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java index b43a91c..99594f5 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java @@ -381,8 +381,9 @@ public class BackupImport { messageFolderMap.put(TRASH_FOLDER_ID, TRASH_FOLDER_ID); File f = unzip(is); - importConfigs(f); Serializer simpleSerializer = new Persister(); + BackupVersion ver = getVersion(simpleSerializer, f); + importConfigs(f); importGroups(f, simpleSerializer); Long defaultLdapId = importLdap(f, simpleSerializer); importOauth(f, simpleSerializer); @@ -412,6 +413,11 @@ public class BackupImport { FileUtils.deleteDirectory(f); } + private BackupVersion getVersion(Serializer ser, File f) throws Exception { + List<BackupVersion> list = readList(ser, f, "version.xml", "version", BackupVersion.class, true); + return list.isEmpty() ? new BackupVersion() : list.get(0); + } + /* * ##################### Import Configs */ http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java new file mode 100644 index 0000000..6b010cb --- /dev/null +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java @@ -0,0 +1,143 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.backup; + +import static org.apache.commons.lang3.math.NumberUtils.toInt; + +import java.io.Serializable; + +import org.apache.openmeetings.util.Version; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Root; + +@Root(name = "version") +public class BackupVersion implements Serializable, Comparable<BackupVersion> { + private static final long serialVersionUID = 1L; + + @Element(data = true) + private int major; + + @Element(data = true) + private int minor; + + @Element(data = true) + private int micro; + + public int getMajor() { + return major; + } + + public void setMajor(int major) { + this.major = major; + } + + public int getMinor() { + return minor; + } + + public void setMinor(int minor) { + this.minor = minor; + } + + public int getMicro() { + return micro; + } + + public void setMicro(int micro) { + this.micro = micro; + } + + public static BackupVersion get() { + String ver = Version.getVersion(); + return get(ver); + } + + public static BackupVersion get(String ver) { + BackupVersion bv = new BackupVersion(); + String[] dashParts = ver.split("-"); + if (dashParts.length == 0) { + return bv; + } + String[] dotParts = dashParts[0].split("\\."); + if (dotParts.length > 0) { + bv.major = toInt(dotParts[0]); + } + if (dotParts.length > 1) { + bv.minor = toInt(dotParts[1]); + } + if (dotParts.length > 2) { + bv.micro = toInt(dotParts[2]); + } + return bv; + } + + @Override + public int compareTo(BackupVersion o) { + if (o == null) { + return 1; + } + if (equals(o)) { + return 0; + } + if (major > o.major) { + return 1; + } + if (minor > o.minor) { + return 1; + } + if (micro > o.micro) { + return 1; + } + return -1; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + major; + result = prime * result + micro; + result = prime * result + minor; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + BackupVersion other = (BackupVersion) obj; + if (major != other.major) { + return false; + } + if (micro != other.micro) { + return false; + } + if (minor != other.minor) { + return false; + } + return true; + } +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java index 51607c0..640f4d6 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java @@ -18,13 +18,14 @@ */ package org.apache.openmeetings.backup; -import org.apache.openmeetings.backup.converter.OmConverter; +import static org.apache.commons.lang3.math.NumberUtils.toInt; + import org.simpleframework.xml.transform.Transform; public class IntegerTransform implements Transform<Integer> { @Override public Integer read(String value) throws Exception { - return OmConverter.getInt(value, 0); + return toInt(value, 0); } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java index 38bb369..ed3c62b 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java @@ -18,13 +18,14 @@ */ package org.apache.openmeetings.backup; -import org.apache.openmeetings.backup.converter.OmConverter; +import static org.apache.commons.lang3.math.NumberUtils.toLong; + import org.simpleframework.xml.transform.Transform; public class LongTransform implements Transform<Long> { @Override public Long read(String value) throws Exception { - return OmConverter.getLong(value); + return toLong(value); } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentConverter.java index 9d9cdf4..2ba97a5 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getLong; +import static org.apache.commons.lang3.math.NumberUtils.toLong; import java.util.Map; import org.apache.openmeetings.db.dao.calendar.AppointmentDao; import org.apache.openmeetings.db.entity.calendar.Appointment; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class AppointmentConverter implements OmConverter<Appointment> { +public class AppointmentConverter implements Converter<Appointment> { private AppointmentDao appointmentDao; private Map<Long, Long> idMap; @@ -42,7 +43,7 @@ public class AppointmentConverter implements OmConverter<Appointment> { @Override public Appointment read(InputNode node) throws Exception { - long oldId = getLong(node); + long oldId = toLong(node.getValue()); Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId; Appointment a = appointmentDao.getAny(newId); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentReminderTypeConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentReminderTypeConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentReminderTypeConverter.java index 7c461ba..e96de4d 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentReminderTypeConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/AppointmentReminderTypeConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getInt; +import static org.apache.commons.lang3.math.NumberUtils.toInt; import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class AppointmentReminderTypeConverter implements OmConverter<Reminder> { +public class AppointmentReminderTypeConverter implements Converter<Reminder> { @Override public Reminder read(InputNode node) throws Exception { - return Reminder.get(getInt(node)); + return Reminder.get(toInt(node.getValue())); } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/BaseFileItemConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/BaseFileItemConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/BaseFileItemConverter.java index d191a9b..5e2be4d 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/BaseFileItemConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/BaseFileItemConverter.java @@ -18,17 +18,18 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getLong; +import static org.apache.commons.lang3.math.NumberUtils.toLong; import java.util.Map; import org.apache.openmeetings.db.dao.file.FileItemDao; import org.apache.openmeetings.db.entity.file.BaseFileItem; import org.apache.openmeetings.db.entity.file.FileItem; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class BaseFileItemConverter implements OmConverter<BaseFileItem> { +public class BaseFileItemConverter implements Converter<BaseFileItem> { private FileItemDao fileDao; private Map<Long, Long> idMap; @@ -43,7 +44,7 @@ public class BaseFileItemConverter implements OmConverter<BaseFileItem> { @Override public BaseFileItem read(InputNode node) throws Exception { - long oldId = getLong(node); + long oldId = toLong(node.getValue()); long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId; BaseFileItem r = fileDao.get(newId); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/GroupConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/GroupConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/GroupConverter.java index 8bad649..3cb0b67 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/GroupConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/GroupConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getLong; +import static org.apache.commons.lang3.math.NumberUtils.toLong; import java.util.Map; import org.apache.openmeetings.db.dao.user.GroupDao; import org.apache.openmeetings.db.entity.user.Group; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class GroupConverter implements OmConverter<Group> { +public class GroupConverter implements Converter<Group> { private GroupDao groupDao; private Map<Long, Long> idMap; @@ -42,7 +43,7 @@ public class GroupConverter implements OmConverter<Group> { @Override public Group read(InputNode node) throws Exception { - long oldId = getLong(node); + long oldId = toLong(node.getValue()); long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId; Group o = groupDao.get(newId); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmCalendarConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmCalendarConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmCalendarConverter.java index 6ef026b..14db40e 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmCalendarConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmCalendarConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getLong; +import static org.apache.commons.lang3.math.NumberUtils.toLong; import java.util.Map; import org.apache.openmeetings.db.dao.calendar.OmCalendarDao; import org.apache.openmeetings.db.entity.calendar.OmCalendar; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class OmCalendarConverter implements OmConverter<OmCalendar> { +public class OmCalendarConverter implements Converter<OmCalendar> { private OmCalendarDao calendarDao; private Map<Long, Long> idMap; @@ -42,7 +43,7 @@ public class OmCalendarConverter implements OmConverter<OmCalendar> { @Override public OmCalendar read(InputNode node) throws Exception { - long oldId = getLong(node); + long oldId = toLong(node.getValue()); Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId; OmCalendar c = calendarDao.get(newId); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmConverter.java deleted file mode 100644 index 8fa168e..0000000 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/OmConverter.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License") + you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.openmeetings.backup.converter; - -import org.simpleframework.xml.convert.Converter; -import org.simpleframework.xml.stream.InputNode; - -public interface OmConverter<T> extends Converter<T> { - static long getLong(InputNode node) throws Exception { - return getLong(node.getValue()); - } - - static long getLong(String value) { - return getLong(value, 0); - } - - static long getLong(String value, long def) { - long result = def; - try { - result = Long.parseLong(value); - } catch (Exception e) { - //no op - } - return result; - } - - static int getInt(InputNode node) throws Exception { - return getInt(node.getValue(), 0); - } - - static int getInt(String value, int def) { - int result = def; - try { - result = Integer.parseInt(value); - } catch (Exception e) { - //no op - } - return result; - } -} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/PollTypeConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/PollTypeConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/PollTypeConverter.java index 54b2265..8d3c926 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/PollTypeConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/PollTypeConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getLong; +import static org.apache.commons.lang3.math.NumberUtils.toLong; import org.apache.openmeetings.db.entity.room.RoomPoll; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class PollTypeConverter implements OmConverter<RoomPoll.Type> { +public class PollTypeConverter implements Converter<RoomPoll.Type> { @Override public RoomPoll.Type read(InputNode node) throws Exception { - return RoomPoll.Type.get(getLong(node)); + return RoomPoll.Type.get(toLong(node.getValue())); } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RecordingStatusConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RecordingStatusConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RecordingStatusConverter.java index cd20ac5..de41999 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RecordingStatusConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RecordingStatusConverter.java @@ -23,11 +23,12 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKe import org.apache.openmeetings.db.entity.record.Recording; import org.apache.openmeetings.db.entity.record.Recording.Status; import org.red5.logging.Red5LoggerFactory; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; import org.slf4j.Logger; -public class RecordingStatusConverter implements OmConverter<Recording.Status> { +public class RecordingStatusConverter implements Converter<Recording.Status> { private static final Logger log = Red5LoggerFactory.getLogger(RecordingStatusConverter.class, getWebAppRootKey()); private static final String PROCESSING = "PROCESSING"; http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomConverter.java index 7b86200..282de3f 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getLong; +import static org.apache.commons.lang3.math.NumberUtils.toLong; import java.util.Map; import org.apache.openmeetings.db.dao.room.RoomDao; import org.apache.openmeetings.db.entity.room.Room; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class RoomConverter implements OmConverter<Room> { +public class RoomConverter implements Converter<Room> { private RoomDao roomDao; private Map<Long, Long> idMap; @@ -42,7 +43,7 @@ public class RoomConverter implements OmConverter<Room> { @Override public Room read(InputNode node) throws Exception { - long oldId = getLong(node); + long oldId = toLong(node.getValue()); long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId; Room r = roomDao.get(newId); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomTypeConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomTypeConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomTypeConverter.java index c451090..22511a5 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomTypeConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/RoomTypeConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getInt; +import static org.apache.commons.lang3.math.NumberUtils.toInt; import org.apache.openmeetings.db.entity.room.Room.Type; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class RoomTypeConverter implements OmConverter<Type> { +public class RoomTypeConverter implements Converter<Type> { @Override public Type read(InputNode node) throws Exception { - return Type.get(getInt(node)); + return Type.get(toInt(node.getValue())); } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/SalutationConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/SalutationConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/SalutationConverter.java index ed4dc51..02d0af6 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/SalutationConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/SalutationConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getInt; +import static org.apache.commons.lang3.math.NumberUtils.toInt; import org.apache.openmeetings.db.entity.user.User.Salutation; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class SalutationConverter implements OmConverter<Salutation> { +public class SalutationConverter implements Converter<Salutation> { @Override public Salutation read(InputNode node) throws Exception { - return Salutation.get(getInt(node)); + return Salutation.get(toInt(node.getValue())); } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/UserConverter.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/UserConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/UserConverter.java index f465624..5ba6741 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/UserConverter.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/UserConverter.java @@ -18,16 +18,17 @@ */ package org.apache.openmeetings.backup.converter; -import static org.apache.openmeetings.backup.converter.OmConverter.getLong; +import static org.apache.commons.lang3.math.NumberUtils.toLong; import java.util.Map; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.user.User; +import org.simpleframework.xml.convert.Converter; import org.simpleframework.xml.stream.InputNode; import org.simpleframework.xml.stream.OutputNode; -public class UserConverter implements OmConverter<User> { +public class UserConverter implements Converter<User> { private UserDao userDao; private Map<Long, Long> idMap; @@ -42,7 +43,7 @@ public class UserConverter implements OmConverter<User> { @Override public User read(InputNode node) throws Exception { - long oldId = getLong(node); + long oldId = toLong(node.getValue()); Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId; User u = userDao.get(newId); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/220e729a/openmeetings-install/src/test/java/org/apache/openmeetings/backup/TestBackupVersion.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/test/java/org/apache/openmeetings/backup/TestBackupVersion.java b/openmeetings-install/src/test/java/org/apache/openmeetings/backup/TestBackupVersion.java new file mode 100644 index 0000000..fbf9975 --- /dev/null +++ b/openmeetings-install/src/test/java/org/apache/openmeetings/backup/TestBackupVersion.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.backup; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import org.junit.Test; + + +public class TestBackupVersion { + @Test + public void testGet() { + BackupVersion bv = BackupVersion.get(); + assertNotEquals("Major should be set", 0, bv.getMajor()); + } + + @Test + public void testEquals() { + assertEquals(BackupVersion.get(), BackupVersion.get()); + assertNotEquals(BackupVersion.get(), null); + assertNotEquals(BackupVersion.get("3.2.1"), BackupVersion.get("3.2.0")); + assertNotEquals(BackupVersion.get("3.1.1"), BackupVersion.get("3.0.0")); + assertNotEquals(BackupVersion.get("3.1.1"), BackupVersion.get("2.0.0")); + } + + @Test + public void testCompare() { + assertEquals(0, BackupVersion.get().compareTo(BackupVersion.get())); + assertEquals(1, BackupVersion.get().compareTo(null)); + assertEquals(1, BackupVersion.get("3.2.1").compareTo(BackupVersion.get("3.2.0"))); + assertEquals(-1, BackupVersion.get("3.2.0").compareTo(BackupVersion.get("3.2.1"))); + assertEquals(1, BackupVersion.get("3.1.1").compareTo(BackupVersion.get("3.0.0"))); + assertEquals(1, BackupVersion.get("3.1.1").compareTo(BackupVersion.get("2.0.0"))); + } +}
