This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 3642e0b  [OPENMEETINGS-2177] more work on import
3642e0b is described below

commit 3642e0b88bbcf60fb7123984800ecf8cadf5350a
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Mar 5 12:40:19 2020 +0700

    [OPENMEETINGS-2177] more work on import
---
 .../core/converter/VideoConverter.java             |   2 +-
 .../openmeetings/core/data/file/FileProcessor.java |  16 +-
 .../org/apache/openmeetings/core/remote/KRoom.java |   2 +-
 .../org/apache/openmeetings/db/bind/Constants.java |   2 +
 .../db/bind/adapter/FileTypeAdapter.java           |  48 ++++++
 .../db/bind/adapter/RecordingStatusAdapter.java    |  55 +++++++
 .../openmeetings/db/dao/file/FileItemDao.java      |  14 +-
 .../openmeetings/db/dto/room/Whiteboard.java       |   2 +-
 .../openmeetings/db/entity/file/BaseFileItem.java  |  70 ++++++---
 .../openmeetings/db/entity/record/Recording.java   |  46 +++---
 .../db/entity/record/RecordingChunk.java           |  31 ++--
 .../org/apache/openmeetings/db/util/XmlHelper.java |   4 +
 .../apache/openmeetings/backup/BackupImport.java   |  31 ++--
 .../openmeetings/backup/converter/WbConverter.java |   6 +-
 .../web/common/tree/ConvertingErrorsDialog.java    |   4 +-
 .../web/common/tree/FileItemPanel.java             |   2 +-
 .../openmeetings/web/common/tree/FileItemTree.java |   2 +-
 .../web/common/tree/FileTreePanel.java             |  10 +-
 .../openmeetings/web/common/tree/FolderPanel.java  |  20 +--
 .../web/common/tree/OmTreeProvider.java            |   6 +-
 .../web/room/RoomPreviewResourceReference.java     |   2 +-
 .../web/room/RoomResourceReference.java            |  12 +-
 .../web/room/sidebar/UploadDialog.java             |   2 +-
 .../apache/openmeetings/web/room/wb/WbPanel.java   |  12 +-
 .../web/room/wb/WbWebSocketHelper.java             |  12 +-
 .../user/record/RecordingResourceReference.java    |   2 +-
 .../org/apache/openmeetings/backup/TestImport.java |  11 ++
 .../openmeetings/core/file/TestFileProcessor.java  |   4 +-
 .../openmeetings/webservice/TestFileService.java   |   4 +-
 .../openmeetings/webservice/TestRoomService.java   |   2 +-
 .../openmeetings/backup/file/flvRecordings.xml     | 165 +++++++++++++++++++++
 31 files changed, 462 insertions(+), 139 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
index 156e4bb..741be97 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/VideoConverter.java
@@ -49,7 +49,7 @@ public class VideoConverter extends BaseConverter {
        public void convertVideo(FileItem f, StoredFile sf, ProcessResultList 
logs, Optional<DoubleConsumer> progress) {
                try {
                        final File mp4 = f.getFile(EXTENSION_MP4);
-                       f.setType(Type.Video);
+                       f.setType(Type.VIDEO);
                        final String ext = sf.getExt();
                        String input = f.getFile(ext).getCanonicalPath();
                        boolean sameExt = EXTENSION_MP4.equals(ext);
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
index f3dcd60..901f7d0 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
@@ -76,13 +76,13 @@ public class FileProcessor {
                        log.debug("isAsIs: {}", sf.isAsIs());
 
                        if (sf.isImage()) {
-                               f.setType(Type.Image);
+                               f.setType(Type.IMAGE);
                        } else if (sf.isVideo()) {
-                               f.setType(Type.Video);
+                               f.setType(Type.VIDEO);
                        } else if (sf.isChart()) {
-                               f.setType(Type.PollChart);
+                               f.setType(Type.POLL_CHART);
                        } else if (sf.isPdf() || sf.isOffice()) {
-                               f.setType(Type.Presentation);
+                               f.setType(Type.PRESENTATION);
                        } else {
                                throw new UnsupportedFormatException("The file 
type cannot be converted :: " + f.getName());
                        }
@@ -109,22 +109,22 @@ public class FileProcessor {
                                return;
                        }
                        switch(f.getType()) {
-                               case Presentation:
+                               case PRESENTATION:
                                        log.debug("Office document: {}", file);
                                        copyFile(temp, file);
                                        // convert to pdf, thumbs, swf and 
xml-description
                                        docConverter.convertPDF(f, sf, logs, 
progress);
                                        break;
-                               case PollChart:
+                               case POLL_CHART:
                                        log.debug("uploaded chart file"); // 
NOT implemented yet
                                        break;
-                               case Image:
+                               case IMAGE:
                                        // convert it to PNG
                                        log.debug("##### convert it to PNG: ");
                                        copyFile(temp, file);
                                        imageConverter.convertImage(f, sf, 
progress);
                                        break;
-                               case Video:
+                               case VIDEO:
                                        copyFile(temp, file);
                                        videoConverter.convertVideo(f, sf, 
logs, progress);
                                        break;
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
index 9da2117..3e42b7e 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
@@ -160,7 +160,7 @@ public class KRoom {
                        recordingUser.put("started", now.getTime());
                        Long ownerId = User.Type.CONTACT == u.getType() ? 
u.getOwnerId() : u.getId();
                        rec.setInsertedBy(ownerId);
-                       rec.setType(BaseFileItem.Type.Recording);
+                       rec.setType(BaseFileItem.Type.RECORDING);
                        rec.setInterview(interview);
 
                        rec.setRoomId(roomId);
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
index 6001863..3639fe6 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
@@ -43,4 +43,6 @@ public class Constants {
        public static final String APPOINTMENT_NODE = "appointment";
        public static final String MMEMBER_LIST_NODE = "meetingmembers";
        public static final String MMEMBER_NODE = "meetingmember";
+       public static final String RECORDING_LIST_NODE = "flvrecordings";
+       public static final String RECORDING_NODE = "flvrecording";
 }
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileTypeAdapter.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileTypeAdapter.java
new file mode 100644
index 0000000..315e543
--- /dev/null
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileTypeAdapter.java
@@ -0,0 +1,48 @@
+/*
+ * 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.db.bind.adapter;
+
+import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_BEGIN;
+import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_END;
+
+import java.util.Locale;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
+import org.apache.wicket.util.string.Strings;
+
+public class FileTypeAdapter extends XmlAdapter<String, BaseFileItem.Type> {
+
+       @Override
+       public String marshal(BaseFileItem.Type v) throws Exception {
+               return CDATA_BEGIN + v.name().toUpperCase(Locale.ROOT) + 
CDATA_END;
+       }
+
+       @Override
+       public BaseFileItem.Type unmarshal(String v) throws Exception {
+               if ("PollChart".equalsIgnoreCase(v)) {
+                       return BaseFileItem.Type.POLL_CHART;
+               }
+               if ("WmlFile".equalsIgnoreCase(v)) {
+                       return BaseFileItem.Type.WML_FILE;
+               }
+               return Strings.isEmpty(v) ? null : 
BaseFileItem.Type.valueOf(v.toUpperCase(Locale.ROOT));
+       }
+}
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RecordingStatusAdapter.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RecordingStatusAdapter.java
new file mode 100644
index 0000000..48ebd92
--- /dev/null
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RecordingStatusAdapter.java
@@ -0,0 +1,55 @@
+/*
+ * 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.db.bind.adapter;
+
+import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_BEGIN;
+import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_END;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.record.Recording.Status;
+import org.apache.wicket.util.string.Strings;
+
+public class RecordingStatusAdapter extends XmlAdapter<String, 
Recording.Status> {
+
+       @Override
+       public String marshal(Recording.Status v) throws Exception {
+               return CDATA_BEGIN + (v == null
+                               ? Recording.Status.NONE.name()
+                               : v.name())
+                               + CDATA_END;
+       }
+
+       @Override
+       public Recording.Status unmarshal(String v) throws Exception {
+               if ("PROCESSING".equalsIgnoreCase(v)) {
+                       return Recording.Status.CONVERTING;
+               }
+               Recording.Status result = Status.NONE;
+               if (!Strings.isEmpty(v)) {
+                       try {
+                               result = Recording.Status.valueOf(v);
+                       } catch (Exception e) {
+                               //no-op
+                       }
+               }
+               return result;
+       }
+}
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
index 64ce52b..7c80bff 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
@@ -161,7 +161,7 @@ public class FileItemDao extends BaseFileItemDao {
                        child.setOwnerId(f.getOwnerId());
                        child.setRoomId(f.getRoomId());
                        update(child);
-                       if (Type.Folder == f.getType()) {
+                       if (Type.FOLDER == f.getType()) {
                                updateChilds(child);
                        }
                }
@@ -198,7 +198,7 @@ public class FileItemDao extends BaseFileItemDao {
                        f.setParentId(parentId);
                        f.setOwnerId(null);
                }
-               if (Type.Folder == f.getType()) {
+               if (Type.FOLDER == f.getType()) {
                        updateChilds(f);
                }
                return update(f);
@@ -206,7 +206,7 @@ public class FileItemDao extends BaseFileItemDao {
 
        public List<BaseFileItem> getAllRoomFiles(String search, long start, 
long count, Long roomId/*, Long ownerId*/, List<Group> groups) {
                return setLimits(em.createNamedQuery("getAllFileItemsForRoom", 
BaseFileItem.class)
-                                       .setParameter("folder", Type.Folder)
+                                       .setParameter("folder", Type.FOLDER)
                                        .setParameter("roomId", roomId)
                                        .setParameter("groups", 
groups.parallelStream().map(Group::getId).collect(Collectors.toList()))
                                        .setParameter("name", 
String.format("%%%s%%", search == null ? "" : search))
@@ -241,9 +241,9 @@ public class FileItemDao extends BaseFileItemDao {
                        if (f.exists()) {
                                File base = OmFileHelper.getUploadFilesDir();
                                switch (f.getType()) {
-                                       case Image:
-                                       case Presentation:
-                                       case Video:
+                                       case IMAGE:
+                                       case PRESENTATION:
+                                       case VIDEO:
                                                File tFolder = new File(base, 
f.getHash());
 
                                                if (tFolder.exists()) {
@@ -254,7 +254,7 @@ public class FileItemDao extends BaseFileItemDao {
                                                break;
                                }
                        }
-                       if (Type.Folder == f.getType()) {
+                       if (Type.FOLDER == f.getType()) {
                                for (FileItem child : getByParent(f.getId())) {
                                        size += getSize(child);
                                }
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
index eae53c1..07f7b2e 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
@@ -137,7 +137,7 @@ public class Whiteboard implements Serializable {
                JSONArray arr = new JSONArray();
                roomItems.entrySet().removeIf(e -> {
                                JSONObject o = new JSONObject(e.getValue());
-                               boolean match = 
!FileItem.Type.Presentation.name().equals(o.optString(ATTR_FILE_TYPE)) && 
o.optInt(ATTR_SLIDE, -1) == slide;
+                               boolean match = 
!FileItem.Type.PRESENTATION.name().equals(o.optString(ATTR_FILE_TYPE)) && 
o.optInt(ATTR_SLIDE, -1) == slide;
                                if (match) {
                                        arr.put(e);
                                }
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 ffda12b..68b458b 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
@@ -49,11 +49,17 @@ import javax.persistence.InheritanceType;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.FileTypeAdapter;
+import org.apache.openmeetings.db.bind.adapter.IntAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
 import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.util.OmFileHelper;
-import org.simpleframework.xml.Element;
 
 @Entity
 @NamedQuery(name = "getFileById", query = "SELECT f FROM BaseFileItem f WHERE 
f.deleted = false AND f.id = :id")
@@ -78,7 +84,13 @@ public abstract class BaseFileItem extends HistoricalEntity {
        @XmlType(namespace = "org.apache.openmeetings.file")
        public enum Type {
                // Folder need to be alphabetically first, for correct sorting
-               Folder, Image, PollChart, Presentation, Recording, Video, 
WmlFile
+               FOLDER
+               , IMAGE
+               , POLL_CHART
+               , PRESENTATION
+               , RECORDING
+               , VIDEO
+               , WML_FILE
        }
 
        @Id
@@ -87,61 +99,75 @@ public abstract class BaseFileItem extends HistoricalEntity 
{
        private Long id;
 
        @Column(name = "name")
-       @Element(name = "fileName", data = true, required = false)
+       @XmlElement(name = "fileName", required = false)
+       @XmlJavaTypeAdapter(CDATAAdapter.class)
        private String name;
 
        @Column(name = "hash")
-       @Element(name = "fileHash", data = true, required = false)
+       @XmlElement(name = "fileHash", required = false)
+       @XmlJavaTypeAdapter(CDATAAdapter.class)
        private String hash;
 
        @Column(name = "parent_item_id")
-       @Element(data = true, name = "parentFileExplorerItemId", required = 
false)
+       @XmlElement(name = "parentFileExplorerItemId", required = false)
+       @XmlJavaTypeAdapter(LongAdapter.class)
        private Long parentId;
 
        @Column(name = "room_id")
-       @Element(data = true, required = false, name = "room_id")
+       @XmlElement(name = "room_id", required = false)
+       @XmlJavaTypeAdapter(LongAdapter.class)
        private Long roomId;
 
        // OwnerID => only set if its directly root in Owner Directory, other 
Folders and Files
        // maybe are also in a Home directory but just because their parent is
        @Column(name = "owner_id")
-       @Element(data = true, required = false)
+       @XmlElement(name = "ownerId", required = false)
+       @XmlJavaTypeAdapter(LongAdapter.class)
        private Long ownerId;
 
        @Column(name = "inserted_by")
-       @Element(data = true, required = false)
+       @XmlElement(name = "insertedBy", required = false)
+       @XmlJavaTypeAdapter(LongAdapter.class)
        private Long insertedBy;
 
        @Column(name = "width")
-       @Element(data = true, required = false)
+       @XmlElement(name = "width", required = false)
+       @XmlJavaTypeAdapter(IntAdapter.class)
        private Integer width;
 
        @Column(name = "height")
-       @Element(data = true, required = false)
+       @XmlElement(name = "height", required = false)
+       @XmlJavaTypeAdapter(IntAdapter.class)
        private Integer height;
 
        @Column(name = "type")
-       @Element(data = true, required = false)
        @Enumerated(EnumType.STRING)
+       @XmlElement(name = "type", required = false)
+       @XmlJavaTypeAdapter(FileTypeAdapter.class)
        private Type type;
 
        @Column(name = "group_id")
-       @Element(data = true, required = false)
+       @XmlElement(name = "groupId", required = false)
+       @XmlJavaTypeAdapter(LongAdapter.class)
        private Long groupId;
 
        @Column(name = "page_count", nullable = false)
-       @Element(data = true, required = false)
+       @XmlElement(name = "count", required = false)
+       @XmlJavaTypeAdapter(value = IntAdapter.class, type = int.class)
        private int count = 1;
 
        @Column(name = "external_type")
-       @Element(data = true, required = false)
+       @XmlElement(name = "externalType", required = false)
+       @XmlJavaTypeAdapter(CDATAAdapter.class)
        private String externalType;
 
        // Not Mapped
        @Transient
+       @XmlTransient
        private List<FileItemLog> log;
 
        @Transient
+       @XmlTransient
        private boolean readOnly;
 
        @Override
@@ -279,10 +305,10 @@ public abstract class BaseFileItem extends 
HistoricalEntity {
                if (!isDeleted() && getHash() != null) {
                        File d = new File(getUploadFilesDir(), getHash());
                        switch (getType()) {
-                               case WmlFile:
+                               case WML_FILE:
                                        f = new File(getUploadWmlDir(), 
String.format(FILE_NAME_FMT, getHash(), ext == null ? EXTENSION_WML : ext));
                                        break;
-                               case Image:
+                               case IMAGE:
                                        if (ext == null) {
                                                f = new File(d, 
String.format(FILE_NAME_FMT, getHash(), EXTENSION_PNG));
                                                if (!f.exists()) {
@@ -292,13 +318,13 @@ public abstract class BaseFileItem extends 
HistoricalEntity {
                                                f = new File(d, 
String.format(FILE_NAME_FMT, getHash(), ext));
                                        }
                                        break;
-                               case Recording:
+                               case RECORDING:
                                        f = new File(getStreamsHibernateDir(), 
String.format(FILE_NAME_FMT, getHash(), ext == null ? EXTENSION_MP4 : ext));
                                        break;
-                               case Video:
+                               case VIDEO:
                                        f = new File(d, 
String.format(FILE_NAME_FMT, getHash(), ext == null ? EXTENSION_MP4 : ext));
                                        break;
-                               case Presentation:
+                               case PRESENTATION:
                                        int slide;
                                        if (ext == null) {
                                                slide = 0;
@@ -311,8 +337,8 @@ public abstract class BaseFileItem extends HistoricalEntity 
{
                                                f = new File(d, 
String.format(FILE_NAME_FMT, getHash(), ext == null ? EXTENSION_PDF : ext));
                                        }
                                        break;
-                               case PollChart:
-                               case Folder:
+                               case POLL_CHART:
+                               case FOLDER:
                                default:
                        }
                }
@@ -385,7 +411,7 @@ public abstract class BaseFileItem extends HistoricalEntity 
{
                OriginalFilter() {
                        exclusions.add(EXTENSION_PNG);
                        exclusions.add("swf");
-                       if (Type.Presentation == getType()) {
+                       if (Type.PRESENTATION == getType()) {
                                exclusions.add(EXTENSION_PDF);
                        }
                }
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
index 72d9c0c..913bb37 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.entity.record;
 
+import static org.apache.openmeetings.db.bind.Constants.RECORDING_NODE;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OmFileHelper.RECORDING_FILE_NAME;
 
@@ -33,15 +34,18 @@ import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
+import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.DateAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
+import org.apache.openmeetings.db.bind.adapter.RecordingStatusAdapter;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.ElementList;
-import org.simpleframework.xml.Root;
 
 /**
  * An item in the file explorer in the recording section. Can be either:
@@ -87,9 +91,7 @@ import org.simpleframework.xml.Root;
                + "    OR r.ownerId IN (SELECT gu.user.id FROM GroupUser gu 
WHERE gu.group.id = :groupId)"
                + "    OR r.roomId IN (SELECT rg.room.id FROM RoomGroup rg 
WHERE rg.group.id = :groupId)"
                + "  ) order by r.inserted ASC")
-@Root(name = "flvrecording")
-@XmlRootElement
-@XmlAccessorType(XmlAccessType.FIELD)
+@XmlRootElement(name = RECORDING_NODE)
 public class Recording extends BaseFileItem {
        private static final long serialVersionUID = 1L;
 
@@ -103,47 +105,55 @@ public class Recording extends BaseFileItem {
        }
 
        @Column(name = "comment")
-       @Element(data = true, required = false)
+       @XmlElement(name = "comment", required = false)
+       @XmlJavaTypeAdapter(CDATAAdapter.class)
        private String comment;
 
        @Column(name = "record_start")
-       @Element(data = true, required = false)
+       @XmlElement(name = "recordStart", required = false)
+       @XmlJavaTypeAdapter(DateAdapter.class)
        private Date recordStart;
 
        @Column(name = "record_end")
-       @Element(data = true, required = false)
+       @XmlElement(name = "recordEnd", required = false)
+       @XmlJavaTypeAdapter(DateAdapter.class)
        private Date recordEnd;
 
        @Column(name = "duration")
-       @Element(data = true, required = false)
+       @XmlElement(name = "duration", required = false)
+       @XmlJavaTypeAdapter(CDATAAdapter.class)
        private String duration;
 
        @Column(name = "is_interview")
-       @Element(data = true, required = false)
+       @XmlElement(name = "interview", required = false)
+       @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
        private boolean interview = false;
 
        @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "recording_id")
-       @ElementList(name = "flvrecordingmetadatas", required = false)
+       @XmlElementWrapper(name = "flvrecordingmetadatas", required = false)
+       @XmlElement(name = "flvrecordingmetadata", required = false)
        private List<RecordingChunk> chunks;
 
        @Column(name = "status")
        @Enumerated(value = EnumType.STRING)
-       @Element(data = true, required = false)
+       @XmlElement(name = "status", required = false)
+       @XmlJavaTypeAdapter(RecordingStatusAdapter.class)
        private Status status = Status.NONE;
 
        @Column(name = "notified")
-       @Element(data = true, required = false)
+       @XmlElement(name = "notified", required = false)
+       @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
        private boolean notified = false;
 
        @Override
-       @Element(data = true, name = "flvRecordingId")
        public Long getId() {
                return super.getId();
        }
 
        @Override
-       @Element(data = true, name = "flvRecordingId")
+       @XmlElement(name = "flvRecordingId")
+       @XmlJavaTypeAdapter(LongAdapter.class)
        public void setId(Long id) {
                super.setId(id);
        }
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
index 94d8f60..b22f150 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
@@ -32,12 +32,17 @@ import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.DateAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
 import org.apache.openmeetings.db.entity.HistoricalEntity;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
 
 /**
  * contains data about each stream, for example if it is a screen sharing or
@@ -55,7 +60,7 @@ import org.simpleframework.xml.Root;
                + "AND c.type <> :screen AND c.streamStatus <> :none")
 @NamedQuery(name = "getScreenChunkByRecording", query = "SELECT c FROM 
RecordingChunk c WHERE c.recording.id = :recordingId AND c.type = :screen")
 @Table(name = "recording_chunk")
-@Root(name = "flvrecordingmetadata")
+@XmlRootElement(name = "flvrecordingmetadata")
 public class RecordingChunk extends HistoricalEntity {
        private static final long serialVersionUID = 1L;
        @XmlType(namespace="org.apache.openmeetings.record.chunk")
@@ -76,41 +81,47 @@ public class RecordingChunk extends HistoricalEntity {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
-       @Element(name = "flvRecordingMetaDataId", data = true, required = false)
+       @XmlElement(name = "flvRecordingMetaDataId", required = false)
+       @XmlJavaTypeAdapter(LongAdapter.class)
        private Long id;
 
        @ManyToOne(fetch = FetchType.EAGER)
        @JoinColumn(name = "recording_id", nullable = true)
        @ForeignKey(enabled = true)
+       @XmlTransient
        private Recording recording;
 
        @Column(name = "start")
-       @Element(name = "recordStart", data = true)
+       @XmlElement(name = "recordStart")
+       @XmlJavaTypeAdapter(DateAdapter.class)
        private Date start;
 
        @Column(name = "end")
-       @Element(name = "recordEnd", data = true, required = false)
+       @XmlElement(name = "recordEnd", required = false)
+       @XmlJavaTypeAdapter(DateAdapter.class)
        private Date end;
 
        @Column(name = "stream_name")
-       @Element(data = true)
+       @XmlElement(name = "streamName")
+       @XmlJavaTypeAdapter(CDATAAdapter.class)
        private String streamName;
 
        @Column(name = "sid")
-       @Element(data = true, required = false)
+       @XmlElement(name = "sid", required = false)
+       @XmlJavaTypeAdapter(CDATAAdapter.class)
        private String sid;
 
        @Column(name = "type")
-       @Element(data = true, required = false)
        @Enumerated(EnumType.STRING)
+       @XmlElement(name = "type", required = false)
        private Type type;
 
        /**
         * this is only STOPPED when the asynchronous stream writer's have 
completed to write packets to the file.
         */
        @Column(name = "stream_status")
-       @Element(data = true, required = false)
        @Enumerated(EnumType.STRING)
+       @XmlElement(name = "streamStatus", required = false)
        private Status streamStatus = Status.NONE;
 
        @Override
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/XmlHelper.java 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/XmlHelper.java
index 38b3b94..61b59d7 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/XmlHelper.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/XmlHelper.java
@@ -20,7 +20,9 @@ package org.apache.openmeetings.db.util;
 
 import static javax.xml.stream.XMLInputFactory.IS_NAMESPACE_AWARE;
 import static javax.xml.stream.XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES;
+import static javax.xml.stream.XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES;
 import static javax.xml.stream.XMLInputFactory.IS_VALIDATING;
+import static javax.xml.stream.XMLInputFactory.SUPPORT_DTD;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -48,6 +50,8 @@ public class XmlHelper {
                inputFactory.setProperty(IS_REPLACING_ENTITY_REFERENCES, false);
                inputFactory.setProperty(IS_VALIDATING, false);
                inputFactory.setProperty(IS_NAMESPACE_AWARE, false);
+               inputFactory.setProperty(IS_SUPPORTING_EXTERNAL_ENTITIES, 
false);
+               inputFactory.setProperty(SUPPORT_DTD, false);
                return inputFactory;
        }
 }
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 e7ee2f6..4595d7d 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
@@ -33,6 +33,8 @@ import static 
org.apache.openmeetings.db.bind.Constants.MMEMBER_LIST_NODE;
 import static org.apache.openmeetings.db.bind.Constants.MMEMBER_NODE;
 import static org.apache.openmeetings.db.bind.Constants.OAUTH_LIST_NODE;
 import static org.apache.openmeetings.db.bind.Constants.OAUTH_NODE;
+import static org.apache.openmeetings.db.bind.Constants.RECORDING_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.RECORDING_NODE;
 import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_LIST_NODE;
 import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_NODE;
 import static org.apache.openmeetings.db.bind.Constants.ROOM_LIST_NODE;
@@ -156,7 +158,6 @@ import org.apache.commons.text.WordUtils;
 import org.apache.openmeetings.backup.converter.BaseFileItemConverter;
 import org.apache.openmeetings.backup.converter.DateConverter;
 import org.apache.openmeetings.backup.converter.PollTypeConverter;
-import org.apache.openmeetings.backup.converter.RecordingStatusConverter;
 import org.apache.openmeetings.backup.converter.RoomConverter;
 import org.apache.openmeetings.backup.converter.UserConverter;
 import org.apache.openmeetings.backup.converter.WbConverter;
@@ -452,11 +453,11 @@ public class BackupImport {
                                if (bfi.isDeleted()) {
                                        continue;
                                }
-                               if (BaseFileItem.Type.Presentation == 
bfi.getType()) {
+                               if (BaseFileItem.Type.PRESENTATION == 
bfi.getType()) {
                                        convertOldPresentation((FileItem)bfi);
                                        fileItemDao.updateBase(bfi);
                                }
-                               if (BaseFileItem.Type.WmlFile == bfi.getType()) 
{
+                               if (BaseFileItem.Type.WML_FILE == 
bfi.getType()) {
                                        try {
                                                Whiteboard wb = 
WbConverter.convert((FileItem)bfi);
                                                wb.save(bfi.getFile().toPath());
@@ -837,8 +838,7 @@ public class BackupImport {
        }
 
        private <T extends BaseFileItem> void saveTree(
-                       Serializer ser
-                       , File baseDir
+                       File baseDir
                        , String fileName
                        , String listNodeName
                        , String nodeName
@@ -848,7 +848,7 @@ public class BackupImport {
                        )
        {
                TreeMap<Long, T> items = new TreeMap<>();
-               readList(null, baseDir, fileName, listNodeName, nodeName, 
clazz, f -> {
+               readList(baseDir, fileName, listNodeName, nodeName, clazz, f -> 
{
                        items.put(f.getId(), f);
                }, false);
                FileTree<T> tree = new FileTree<>();
@@ -875,19 +875,10 @@ public class BackupImport {
        /*
         * ##################### Import Recordings
         */
-       private void importRecordings(File base) throws Exception {
+       void importRecordings(File base) throws Exception {
                log.info("Meeting members import complete, starting recordings 
server import");
-               Registry registry = new Registry();
-               Strategy strategy = new RegistryStrategy(registry);
-               RegistryMatcher matcher = new RegistryMatcher();
-               Serializer ser = new Persister(strategy, matcher);
-
-               matcher.bind(Long.class, LongTransform.class);
-               matcher.bind(Integer.class, IntegerTransform.class);
-               registry.bind(Date.class, DateConverter.class);
-               registry.bind(Recording.Status.class, 
RecordingStatusConverter.class);
                final Map<Long, Long> folders = new HashMap<>();
-               saveTree(ser, base, "flvRecordings.xml", "flvrecordings", 
"flvrecording", Recording.class, folders, r -> {
+               saveTree(base, "flvRecordings.xml", RECORDING_LIST_NODE, 
RECORDING_NODE, Recording.class, folders, r -> {
                        Long recId = r.getId();
                        r.setId(null);
                        if (r.getChunks() != null) {
@@ -905,7 +896,7 @@ public class BackupImport {
                        }
                        checkHash(r, recordingDao);
                        r = recordingDao.update(r);
-                       if (BaseFileItem.Type.Folder == r.getType()) {
+                       if (BaseFileItem.Type.FOLDER == r.getType()) {
                                folders.put(recId, r.getId());
                        }
                        fileItemMap.put(recId, r.getId());
@@ -1010,13 +1001,13 @@ public class BackupImport {
                matcher.bind(Integer.class, IntegerTransform.class);
                registry.bind(Date.class, DateConverter.class);
                final Map<Long, Long> folders = new HashMap<>();
-               saveTree(null, base, "fileExplorerItems.xml", 
"fileExplorerItems", "fileExplorerItem", FileItem.class, folders, file -> {
+               saveTree(base, "fileExplorerItems.xml", "fileExplorerItems", 
"fileExplorerItem", FileItem.class, folders, file -> {
                        Long fId = file.getId();
                        // We need to reset this as openJPA reject to store 
them otherwise
                        file.setId(null);
                        checkHash(file, fileItemDao);
                        file = fileItemDao.update(file);
-                       if (BaseFileItem.Type.Folder == file.getType()) {
+                       if (BaseFileItem.Type.FOLDER == file.getType()) {
                                folders.put(fId, file.getId());
                        }
                        result.add(file);
diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
index 028869e..a6cf301 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
@@ -225,7 +225,7 @@ public class WbConverter {
                }
                add(wb, init(wb, props)
                                .put(ATTR_TYPE, TYPE_IMAGE)
-                               .put(ATTR_FILE_TYPE, 
BaseFileItem.Type.Image.name())
+                               .put(ATTR_FILE_TYPE, 
BaseFileItem.Type.IMAGE.name())
                                .put(ATTR_FILE_ID, fileId));
        }
 
@@ -239,7 +239,7 @@ public class WbConverter {
                }
                add(wb, init(wb, props, false)
                                .put(ATTR_TYPE, TYPE_IMAGE)
-                               .put(ATTR_FILE_TYPE, 
BaseFileItem.Type.Presentation.name())
+                               .put(ATTR_FILE_TYPE, 
BaseFileItem.Type.PRESENTATION.name())
                                .put(ATTR_FILE_ID, fileId));
        }
 
@@ -249,7 +249,7 @@ public class WbConverter {
                }
                add(wb, init(wb, props)
                                .put(ATTR_TYPE, TYPE_IMAGE)
-                               .put(ATTR_FILE_TYPE, 
BaseFileItem.Type.Video.name())
+                               .put(ATTR_FILE_TYPE, 
BaseFileItem.Type.VIDEO.name())
                                .put(ATTR_FILE_ID, props.get(1)));
        }
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
index cd8b0de..473da66 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
@@ -86,7 +86,7 @@ public class ConvertingErrorsDialog extends 
Modal<BaseFileItem> {
        @Override
        public Modal<BaseFileItem> show(IPartialPageRequestHandler handler) {
                BaseFileItem f = getModelObject();
-               headerLabel.setDefaultModel(new ResourceModel(f.getType() == 
BaseFileItem.Type.Recording ? "887" : "convert.errors.file"));
+               headerLabel.setDefaultModel(new ResourceModel(f.getType() == 
BaseFileItem.Type.RECORDING ? "887" : "convert.errors.file"));
 
                List<FileItemLog> logs = fileLogDao.get(f);
                if (f.getHash() == null) {
@@ -94,7 +94,7 @@ public class ConvertingErrorsDialog extends 
Modal<BaseFileItem> {
                        message.setDefaultModelObject(getString("888"));
                } else if (!f.exists()) {
                        message.setVisible(true);
-                       message.setDefaultModelObject(getString(f.getType() == 
BaseFileItem.Type.Recording ? "1595" : "convert.errors.file.missing"));
+                       message.setDefaultModelObject(getString(f.getType() == 
BaseFileItem.Type.RECORDING ? "1595" : "convert.errors.file.missing"));
                } else {
                        message.setVisible(false);
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
index a212b88..b236482 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
@@ -41,7 +41,7 @@ public class FileItemPanel extends FolderPanel {
                BaseFileItem f = model.getObject();
                long errorCount = fileLogDao.countErrors(f);
                boolean visible = errorCount != 0;
-               if (BaseFileItem.Type.Recording == f.getType()) {
+               if (BaseFileItem.Type.RECORDING == f.getType()) {
                        Recording r = (Recording)f;
                        visible |= (Status.RECORDING != r.getStatus() && 
Status.CONVERTING != r.getStatus() && !f.exists());
                } else {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
index 52614d4..508f965 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
@@ -53,7 +53,7 @@ public class FileItemTree extends 
DefaultNestedTree<BaseFileItem> {
        @Override
        protected Component newContentComponent(String id, IModel<BaseFileItem> 
lm) {
                BaseFileItem r = lm.getObject();
-               return Type.Folder == r.getType() || r.getId() == null
+               return Type.FOLDER == r.getType() || r.getId() == null
                                ? new FolderPanel(id, lm, treePanel)
                                : new FileItemPanel(id, lm, treePanel);
        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 25ca161..09a1a47 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -158,7 +158,7 @@ public abstract class FileTreePanel extends Panel {
 
                public void onDownlownClick(AjaxRequestTarget target, String 
ext) {
                        BaseFileItem fi = getLastSelected();
-                       File f = ext == null && (Type.Image == fi.getType() || 
Type.Presentation == fi.getType())
+                       File f = ext == null && (Type.IMAGE == fi.getType() || 
Type.PRESENTATION == fi.getType())
                                        ? fi.getOriginal() : fi.getFile(ext);
                        if (f != null && f.exists()) {
                                dwnldFile = f;
@@ -359,11 +359,11 @@ public abstract class FileTreePanel extends Panel {
                f.setHash(randomUUID().toString());
                f.setInsertedBy(getUserId());
                f.setInserted(new Date());
-               f.setType(Type.Folder);
+               f.setType(Type.FOLDER);
                f.setOwnerId(p.getOwnerId());
                f.setGroupId(p.getGroupId());
                f.setRoomId(p.getRoomId());
-               f.setParentId(Type.Folder == p.getType() ? p.getId() : null);
+               f.setParentId(Type.FOLDER == p.getType() ? p.getId() : null);
                if (isRecording) {
                        recDao.update((Recording)f);
                } else {
@@ -399,7 +399,7 @@ public abstract class FileTreePanel extends Panel {
 
        void updateNode(AjaxRequestTarget target, BaseFileItem fi) {
                if (fi != null && !fi.isDeleted() && target != null) {
-                       if (Type.Folder == fi.getType()) {
+                       if (Type.FOLDER == fi.getType()) {
                                tree.updateBranch(fi, target);
                        } else {
                                tree.updateNode(fi, target);
@@ -429,7 +429,7 @@ public abstract class FileTreePanel extends Panel {
        }
 
        private static boolean isDownloadable(BaseFileItem f) {
-               return !f.isReadOnly() && (f.getType() == Type.Presentation || 
f.getType() == Type.Image);
+               return !f.isReadOnly() && (f.getType() == Type.PRESENTATION || 
f.getType() == Type.IMAGE);
        }
 
        public void select(BaseFileItem fi, AjaxRequestTarget target, boolean 
shift, boolean ctrl) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
index 8391cc5..9ba67ab 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
@@ -79,7 +79,7 @@ public class FolderPanel extends Panel implements 
IDraggableListener, IDroppable
                final BaseFileItem f = (BaseFileItem)getDefaultModelObject();
                boolean editable = treePanel.isEditable() && !f.isReadOnly();
                final String selector = JQueryWidget.getSelector(this);
-               if (f.getType() == Type.Folder && editable) {
+               if (f.getType() == Type.FOLDER && editable) {
                        add(new DroppableBehavior(
                                        selector
                                        , new Options()
@@ -171,7 +171,7 @@ public class FolderPanel extends Panel implements 
IDraggableListener, IDroppable
                        ctrl = o.optBoolean(PARAM_CTRL);
                }
                treePanel.select(f, target, shift, ctrl);
-               if (Type.Folder == f.getType() && treePanel.tree.getState(f) == 
State.COLLAPSED) {
+               if (Type.FOLDER == f.getType() && treePanel.tree.getState(f) == 
State.COLLAPSED) {
                        treePanel.tree.expand(f);
                } else {
                        treePanel.update(target, f);
@@ -185,24 +185,24 @@ public class FolderPanel extends Panel implements 
IDraggableListener, IDroppable
                if (f.getId() == null) {
                        
style.append(CSS_CLASS_FILE).append(f.getHash().indexOf("my") > -1 ? "my " : 
"public ");
                } else {
-                       if (BaseFileItem.Type.Folder != f.getType() && 
!f.exists()) {
+                       if (BaseFileItem.Type.FOLDER != f.getType() && 
!f.exists()) {
                                style.append("broken ");
                        }
                        switch(f.getType()) {
-                               case Folder:
+                               case FOLDER:
                                        
style.append(CSS_CLASS_FILE).append(open ? "folder-open " : "folder ");
                                        break;
-                               case Image:
+                               case IMAGE:
                                        
style.append(CSS_CLASS_FILE).append("image ");
                                        break;
-                               case PollChart:
+                               case POLL_CHART:
                                        
style.append(CSS_CLASS_FILE).append("chart ");
                                        break;
-                               case WmlFile:
+                               case WML_FILE:
                                        
style.append(CSS_CLASS_FILE).append("wml ");
                                        break;
-                               case Video:
-                               case Recording:
+                               case VIDEO:
+                               case RECORDING:
                                {
                                        style.append("recording ");
                                        if (f instanceof Recording) {
@@ -213,7 +213,7 @@ public class FolderPanel extends Panel implements 
IDraggableListener, IDroppable
                                        }
                                }
                                        break;
-                               case Presentation:
+                               case PRESENTATION:
                                        
style.append(CSS_CLASS_FILE).append("doc ");
                                        break;
                                default:
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
index 24cc33e..e8e9351 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
@@ -45,7 +45,7 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
 
 public class OmTreeProvider implements ITreeProvider<BaseFileItem> {
        private static final long serialVersionUID = 1L;
-       private static final List<Type> VIDEO_TYPES = 
Arrays.asList(Type.Folder, Type.Video);
+       private static final List<Type> VIDEO_TYPES = 
Arrays.asList(Type.FOLDER, Type.VIDEO);
        public static final String RECORDINGS_MY = "recordings-my";
        public static final String RECORDINGS_PUBLIC = "recordings-public";
        public static final String RECORDINGS_GROUP = "recordings-group-%s";
@@ -121,7 +121,7 @@ public class OmTreeProvider implements 
ITreeProvider<BaseFileItem> {
 
        static BaseFileItem createRoot(String name, String hash, boolean rec) {
                BaseFileItem f = rec ? new Recording() : new FileItem();
-               f.setType(Type.Folder);
+               f.setType(Type.FOLDER);
                f.setName(name);
                f.setHash(hash);
                return f;
@@ -181,7 +181,7 @@ public class OmTreeProvider implements 
ITreeProvider<BaseFileItem> {
 
        @Override
        public boolean hasChildren(BaseFileItem node) {
-               return node.getId() == null || Type.Folder == node.getType();
+               return node.getId() == null || Type.FOLDER == node.getType();
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
index 4405ef2..b0bbae9 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPreviewResourceReference.java
@@ -46,7 +46,7 @@ public class RoomPreviewResourceReference extends 
RoomResourceReference {
        @Override
        protected FileItem getFileItem(Attributes attr) {
                FileItem f = super.getFileItem(attr);
-               if (f != null && FileItem.Type.Video == f.getType()) {
+               if (f != null && FileItem.Type.VIDEO == f.getType()) {
                        return f;
                }
                return null;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index 2d73204..1e81778 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -73,16 +73,16 @@ public class RoomResourceReference extends 
FileItemResourceReference<FileItem> {
        protected String getMimeType(FileItem r) {
                String mime;
                switch (r.getType()) {
-                       case WmlFile:
-                               mime = "application/xml";
+                       case WML_FILE:
+                               mime = "application/json";
                                break;
-                       case Image:
+                       case IMAGE:
                                mime = PNG_MIME_TYPE;
                                break;
-                       case Presentation:
+                       case PRESENTATION:
                                mime = PNG_MIME_TYPE;
                                break;
-                       case Video:
+                       case VIDEO:
                                mime = MP4_MIME_TYPE;
                                break;
                        default:
@@ -140,7 +140,7 @@ public class RoomResourceReference extends 
FileItemResourceReference<FileItem> {
 
        @Override
        protected File getFile(FileItem f, Attributes attr) {
-               String ext = f.getType() == FileItem.Type.Presentation
+               String ext = f.getType() == FileItem.Type.PRESENTATION
                                ? 
attr.getParameters().get(ATTR_SLIDE).toString() : null;
                return getFile(f, ext);
        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
index c147201..10668c0 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
@@ -248,7 +248,7 @@ public class UploadDialog extends Modal<String> {
                                        f.setOwnerId(parent.getOwnerId());
                                        f.setGroupId(parent.getGroupId());
                                        if (parent.getId() != null) {
-                                               
f.setParentId(BaseFileItem.Type.Folder == parent.getType() ? parent.getId() : 
parent.getParentId());
+                                               
f.setParentId(BaseFileItem.Type.FOLDER == parent.getType() ? parent.getId() : 
parent.getParentId());
                                        }
                                }
                                f.setInsertedBy(getUserId());
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index 6b25e65..4d9b78f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -252,7 +252,7 @@ public class WbPanel extends AbstractWbPanel {
                                        Whiteboard wb = entry.getValue();
                                        for (JSONObject o : wb.list()) {
                                                String ft = 
o.optString(ATTR_FILE_TYPE);
-                                               if 
(BaseFileItem.Type.Recording.name().equals(ft) || 
BaseFileItem.Type.Video.name().equals(ft)) {
+                                               if 
(BaseFileItem.Type.RECORDING.name().equals(ft) || 
BaseFileItem.Type.VIDEO.name().equals(ft)) {
                                                        JSONObject status = 
o.optJSONObject(PARAM_STATUS);
                                                        if (status == null) {
                                                                continue;
@@ -530,10 +530,10 @@ public class WbPanel extends AbstractWbPanel {
                                return;
                        }
                        switch (fi.getType()) {
-                               case Folder:
+                               case FOLDER:
                                        //do nothing
                                        break;
-                               case WmlFile:
+                               case WML_FILE:
                                {
                                        File f = fi.getFile();
                                        if (f.exists() && f.isFile()) {
@@ -555,7 +555,7 @@ public class WbPanel extends AbstractWbPanel {
                                        }
                                }
                                        break;
-                               case PollChart:
+                               case POLL_CHART:
                                        break;
                                default:
                                {
@@ -571,7 +571,7 @@ public class WbPanel extends AbstractWbPanel {
                                                        .put("uid", wuid)
                                                        .put(ATTR_SLIDE, 
wb.getSlide())
                                                        ;
-                                       if (FileItem.Type.Video == fi.getType() 
|| FileItem.Type.Recording == fi.getType()) {
+                                       if (FileItem.Type.VIDEO == fi.getType() 
|| FileItem.Type.RECORDING == fi.getType()) {
                                                file.put(ATTR_OMTYPE, "Video");
                                                file.put(PARAM_STATUS, new 
JSONObject()
                                                                .put("paused", 
true)
@@ -639,7 +639,7 @@ public class WbPanel extends AbstractWbPanel {
        public String saveWb(Long roomId, Long wbId, String name) {
                Whiteboard wb = wbm.get(roomId).get(wbId);
                FileItem f = new FileItem();
-               f.setType(BaseFileItem.Type.WmlFile);
+               f.setType(BaseFileItem.Type.WML_FILE);
                f.setRoomId(roomId);
                f.setHash(randomUUID().toString());
                f.setName(name);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index f2c271a..16a7f4b 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -108,17 +108,17 @@ public class WbWebSocketHelper extends WebSocketHelper {
                }
                file.put("deleted", !fi.exists());
                switch (fi.getType()) {
-                       case Video:
+                       case VIDEO:
                                ref = new RoomResourceReference();
                                file.put(PARAM__SRC, urlFor(ref, pp));
                                file.put(PARAM__POSTER, urlFor(new 
RoomPreviewResourceReference(), pp));
                                break;
-                       case Recording:
+                       case RECORDING:
                                ref = new Mp4RecordingResourceReference();
                                file.put(PARAM__SRC, urlFor(ref, pp));
                                file.put(PARAM__POSTER, urlFor(new 
PngRecordingResourceReference(), pp));
                                break;
-                       case Presentation:
+                       case PRESENTATION:
                                ref = new RoomResourceReference();
                                file.put(PARAM__SRC, urlFor(ref, pp));
                                break;
@@ -142,15 +142,15 @@ public class WbWebSocketHelper extends WebSocketHelper {
        private static JSONObject patchUrls(BaseFileItem fi, Client c, 
JSONObject _f) {
                JSONObject f = new JSONObject(_f.toString()); // deep copy to 
ensure thread safety
                switch (fi.getType()) {
-                       case Video:
+                       case VIDEO:
                                f.put(PARAM__SRC, 
patchUrl(f.getString(PARAM__SRC), c));
                                f.put(PARAM__POSTER, 
patchUrl(f.getString(PARAM__POSTER), c));
                                break;
-                       case Recording:
+                       case RECORDING:
                                f.put(PARAM__SRC, 
patchUrl(f.getString(PARAM__SRC), c));
                                f.put(PARAM__POSTER, 
patchUrl(f.getString(PARAM__POSTER), c));
                                break;
-                       case Presentation:
+                       case PRESENTATION:
                                f.put(PARAM__SRC, 
patchUrl(f.getString(PARAM__SRC), c));
                                break;
                        default:
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
index a682ccb..b39faca 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
@@ -92,7 +92,7 @@ public abstract class RecordingResourceReference extends 
FileItemResourceReferen
        private Recording getRecording(Long id, String ruid, String uid) {
                log.debug("Recording with id {} is requested", id);
                Recording r = recDao.get(id);
-               if (r == null || r.getType() == Type.Folder || r.isDeleted()) {
+               if (r == null || r.getType() == Type.FOLDER || r.isDeleted()) {
                        return null;
                }
                if (id.equals(getRecordingId())) {
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java 
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
index e202355..0fdaae1 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import java.io.File;
 
 import org.apache.openmeetings.db.dao.basic.ChatDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.server.LdapConfigDao;
 import org.apache.openmeetings.db.dao.server.OAuth2Dao;
 import org.apache.openmeetings.db.entity.basic.Configuration;
@@ -38,6 +39,8 @@ public class TestImport extends AbstractTestImport {
        private OAuth2Dao oauthDao;
        @Autowired
        private ChatDao chatDao;
+       @Autowired
+       private RecordingDao recDao;
 
        @Test
        public void importVersionNE() throws Exception {
@@ -100,4 +103,12 @@ public class TestImport extends AbstractTestImport {
                backupImport.importChat(chats.getParentFile());
                assertEquals(chatCount + 3, chatDao.get(0, 
Integer.MAX_VALUE).size(), "Chat messages should be added");
        }
+
+       @Test
+       public void importRecordings() throws Exception {
+               long recCount = recDao.get().size();
+               File recs = new 
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/file/flvRecordings.xml").toURI());
+               backupImport.importRecordings(recs.getParentFile());
+               assertEquals(recCount + 4, recDao.get().size(), "Recordings 
should be added");
+       }
 }
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
index 2de540c..3670c99 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
@@ -49,11 +49,11 @@ public class TestFileProcessor extends 
AbstractJUnitDefaults {
                        FileItem f = new FileItemDTO()
                                        .setName(String.format(FILE_NAME_FMT, 
FILE_NAME, ext))
                                        .setHash(randomUUID().toString())
-                                       
.setType(BaseFileItem.Type.Recording).get();
+                                       
.setType(BaseFileItem.Type.RECORDING).get();
                        try (InputStream is = new 
FileInputStream(getDefaultProfilePicture())) {
                                ProcessResultList result = 
processor.processFile(f, is, Optional.empty());
                                assertFalse(result.hasError(), "Conversion 
should be successful");
-                               assertEquals(BaseFileItem.Type.Image, 
f.getType(), "Type should be image");
+                               assertEquals(BaseFileItem.Type.IMAGE, 
f.getType(), "Type should be image");
                        }
                }
        }
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java
index abb2277..e106ada 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java
@@ -49,8 +49,8 @@ public class TestFileService extends AbstractWebServiceTest {
                        Graphics g = image.getGraphics();
                        g.drawString("Hello World!!!", 10, 20);
                        ImageIO.write(image, "jpg", img);
-                       CallResult<FileItemDTO> cr = createVerifiedFile(img, 
"test.txt", BaseFileItem.Type.Presentation);
-                       assertEquals(BaseFileItem.Type.Image, 
cr.getObj().getType(), "Type should be Image");
+                       CallResult<FileItemDTO> cr = createVerifiedFile(img, 
"test.txt", BaseFileItem.Type.PRESENTATION);
+                       assertEquals(BaseFileItem.Type.IMAGE, 
cr.getObj().getType(), "Type should be Image");
                        assertEquals(width, cr.getObj().getWidth(), "Width 
should be determined");
                        assertEquals(height, cr.getObj().getHeight(), "Height 
should be Image");
                } finally {
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRoomService.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRoomService.java
index 3cb09d3..520cbdc 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRoomService.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRoomService.java
@@ -121,7 +121,7 @@ public class TestRoomService extends AbstractWebServiceTest 
{
        @Test
        public void testCreateWithFiles2() throws IOException {
                //lets create real file
-               CallResult<FileItemDTO> fileCall = 
createVerifiedFile(getDefaultProfilePicture(), "img.png", 
BaseFileItem.Type.Image);
+               CallResult<FileItemDTO> fileCall = 
createVerifiedFile(getDefaultProfilePicture(), "img.png", 
BaseFileItem.Type.IMAGE);
 
                Room.Type type = Room.Type.PRESENTATION;
                String name = "Unit Test Ext Room4";
diff --git 
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/file/flvRecordings.xml
 
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/file/flvRecordings.xml
new file mode 100644
index 0000000..aca316d
--- /dev/null
+++ 
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/file/flvRecordings.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+
+-->
+<!-- ###############################################
+This File is auto-generated by the Backup Tool 
+you should use the BackupPanel to modify or change this file 
+see http://openmeetings.apache.org/Upgrade.html for Details 
+###############################################
+ --><root>
+   <flvrecordings>
+      <flvrecording>
+         <fileName><![CDATA[Recording 2017.08.11 11:45:30]]></fileName>
+         <fileHash><![CDATA[flvRecording_1.flv]]></fileHash>
+         <insertedBy><![CDATA[1]]></insertedBy>
+         <inserted class="java.util.Date"><![CDATA[1502426730324]]></inserted>
+         <updated class="java.util.Date"><![CDATA[1502427106022]]></updated>
+         <deleted><![CDATA[false]]></deleted>
+         <flvWidth><![CDATA[1440]]></flvWidth>
+         <flvHeight><![CDATA[816]]></flvHeight>
+         <previewImage><![CDATA[flvRecording_1.jpg]]></previewImage>
+         <type><![CDATA[Recording]]></type>
+         <flvRecordingId><![CDATA[1]]></flvRecordingId>
+         <alternateDownload><![CDATA[flvRecording_1.avi]]></alternateDownload>
+         <comment><![CDATA[]]></comment>
+         <recordStart 
class="java.util.Date"><![CDATA[1502426730323]]></recordStart>
+         <recordEnd 
class="java.util.Date"><![CDATA[1502426951792]]></recordEnd>
+         <width><![CDATA[1440]]></width>
+         <height><![CDATA[816]]></height>
+         <duration><![CDATA[00:03:41.469]]></duration>
+         <interview><![CDATA[false]]></interview>
+         <progressPostProcessing><![CDATA[0]]></progressPostProcessing>
+         <flvrecordingmetadatas 
class="org.apache.openjpa.util.java$util$ArrayList$proxy">
+            <flvrecordingmetadata>
+               <flvRecordingMetaDataId><![CDATA[3]]></flvRecordingMetaDataId>
+               <recordStart 
class="java.util.Date"><![CDATA[1502426829302]]></recordStart>
+               <recordEnd 
class="java.util.Date"><![CDATA[1502426951583]]></recordEnd>
+               
<streamName><![CDATA[rec_1_stream_2_2017_08_11_11_47_09]]></streamName>
+               <freeTextUserName><![CDATA[James Bond]]></freeTextUserName>
+               <isAudioOnly><![CDATA[false]]></isAudioOnly>
+               <isVideoOnly><![CDATA[false]]></isVideoOnly>
+               <isScreenData><![CDATA[false]]></isScreenData>
+               <inserted 
class="java.util.Date"><![CDATA[1502426829303]]></inserted>
+               
<wavAudioData><![CDATA[rec_1_stream_2_2017_08_11_11_47_09_WAVE.wav]]></wavAudioData>
+               <audioIsValid><![CDATA[false]]></audioIsValid>
+               <interiewPodId><![CDATA[-1]]></interiewPodId>
+            </flvrecordingmetadata>
+            <flvrecordingmetadata>
+               <flvRecordingMetaDataId><![CDATA[2]]></flvRecordingMetaDataId>
+               <recordStart 
class="java.util.Date"><![CDATA[1502426734208]]></recordStart>
+               <recordEnd 
class="java.util.Date"><![CDATA[1502426951733]]></recordEnd>
+               
<streamName><![CDATA[rec_1_stream_c846c7d3-4746-4aa6-b989-9982e77ed436_2017_08_11_11_45_30]]></streamName>
+               <freeTextUserName><![CDATA[Vasiliy 
Degtyarev]]></freeTextUserName>
+               <isAudioOnly><![CDATA[false]]></isAudioOnly>
+               <isVideoOnly><![CDATA[false]]></isVideoOnly>
+               <isScreenData><![CDATA[true]]></isScreenData>
+               <inserted 
class="java.util.Date"><![CDATA[1502426730719]]></inserted>
+               
<fullWavAudioData><![CDATA[rec_1_stream_c846c7d3-4746-4aa6-b989-9982e77ed436_2017_08_11_11_45_30_FINAL_WAVE.wav]]></fullWavAudioData>
+               <audioIsValid><![CDATA[false]]></audioIsValid>
+            </flvrecordingmetadata>
+            <flvrecordingmetadata>
+               <flvRecordingMetaDataId><![CDATA[1]]></flvRecordingMetaDataId>
+               <recordStart 
class="java.util.Date"><![CDATA[1502426730803]]></recordStart>
+               <recordEnd 
class="java.util.Date"><![CDATA[1502426951779]]></recordEnd>
+               
<streamName><![CDATA[rec_1_stream_1_2017_08_11_11_45_30]]></streamName>
+               <freeTextUserName><![CDATA[Vasiliy 
Degtyarev]]></freeTextUserName>
+               <isAudioOnly><![CDATA[false]]></isAudioOnly>
+               <isVideoOnly><![CDATA[false]]></isVideoOnly>
+               <isScreenData><![CDATA[false]]></isScreenData>
+               <inserted 
class="java.util.Date"><![CDATA[1502426730443]]></inserted>
+               
<wavAudioData><![CDATA[rec_1_stream_1_2017_08_11_11_45_30_WAVE.wav]]></wavAudioData>
+               
<fullWavAudioData><![CDATA[rec_1_stream_1_2017_08_11_11_45_30_FULL_WAVE.wav]]></fullWavAudioData>
+               <audioIsValid><![CDATA[true]]></audioIsValid>
+               <interiewPodId><![CDATA[-1]]></interiewPodId>
+            </flvrecordingmetadata>
+         </flvrecordingmetadatas>
+         <status><![CDATA[PROCESSED]]></status>
+      </flvrecording>
+      <flvrecording>
+         <fileName><![CDATA[Recording 2017.08.11 16:00:49]]></fileName>
+         <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15b2]]></fileHash>
+         <insertedBy><![CDATA[1]]></insertedBy>
+         <inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
+         <updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
+         <deleted><![CDATA[false]]></deleted>
+         <width><![CDATA[1440]]></width>
+         <height><![CDATA[816]]></height>
+         <type><![CDATA[Recording]]></type>
+         <flvRecordingId><![CDATA[2]]></flvRecordingId>
+         <comment><![CDATA[]]></comment>
+         <recordStart 
class="java.util.Date"><![CDATA[1502442049020]]></recordStart>
+         <recordEnd 
class="java.util.Date"><![CDATA[1502442328250]]></recordEnd>
+         <duration><![CDATA[00:04:39.230]]></duration>
+         <interview><![CDATA[false]]></interview>
+         <status><![CDATA[PROCESSED]]></status>
+         <notified><![CDATA[false]]></notified>
+      </flvrecording>
+      <flvrecording>
+         <fileName><![CDATA[TEST]]></fileName>
+         <insertedBy><![CDATA[1]]></insertedBy>
+         <inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
+         <updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
+         <deleted><![CDATA[false]]></deleted>
+         <type><![CDATA[Folder]]></type>
+         <flvRecordingId><![CDATA[3]]></flvRecordingId>
+         <comment><![CDATA[]]></comment>
+         <interview><![CDATA[false]]></interview>
+      </flvrecording>
+      <flvrecording>
+         <fileName><![CDATA[Recording 2017.08.11 16:00:49]]></fileName>
+         <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15b3]]></fileHash>
+         <insertedBy><![CDATA[1]]></insertedBy>
+         <inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
+         <updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
+         <deleted><![CDATA[true]]></deleted>
+         <width><![CDATA[1440]]></width>
+         <height><![CDATA[816]]></height>
+         <type><![CDATA[Recording]]></type>
+         <flvRecordingId><![CDATA[4]]></flvRecordingId>
+         <comment><![CDATA[]]></comment>
+         <recordStart 
class="java.util.Date"><![CDATA[1502442049020]]></recordStart>
+         <recordEnd 
class="java.util.Date"><![CDATA[1502442328250]]></recordEnd>
+         <duration><![CDATA[00:04:39.230]]></duration>
+         <interview><![CDATA[false]]></interview>
+         <status><![CDATA[PROCESSED]]></status>
+         <notified><![CDATA[false]]></notified>
+      </flvrecording>
+      <flvrecording>
+         <fileName><![CDATA[Recording 2017.08.11 16:00:49]]></fileName>
+         <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15b4]]></fileHash>
+         <insertedBy><![CDATA[1]]></insertedBy>
+         <inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
+         <updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
+         <deleted><![CDATA[false]]></deleted>
+         <width><![CDATA[1440]]></width>
+         <height><![CDATA[816]]></height>
+         <type><![CDATA[Recording]]></type>
+         <flvRecordingId><![CDATA[5]]></flvRecordingId>
+         <parentFileExplorerItemId>3</parentFileExplorerItemId>
+         <comment><![CDATA[]]></comment>
+         <recordStart 
class="java.util.Date"><![CDATA[1502442049020]]></recordStart>
+         <recordEnd 
class="java.util.Date"><![CDATA[1502442328250]]></recordEnd>
+         <duration><![CDATA[00:04:39.230]]></duration>
+         <interview><![CDATA[false]]></interview>
+         <status><![CDATA[PROCESSED]]></status>
+         <notified><![CDATA[false]]></notified>
+      </flvrecording>
+   </flvrecordings>
+</root>

Reply via email to