Author: solomax
Date: Fri Dec 28 13:05:36 2012
New Revision: 1426492

URL: http://svn.apache.org/viewvc?rev=1426492&view=rev
Log:
OPENMEETINGS-492, OPENMEETINGS-498 restoration from backup is fixed

Modified:
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/backup/RoomTypeConverter.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/Roommanagement.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/backup/RoomTypeConverter.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/backup/RoomTypeConverter.java?rev=1426492&r1=1426491&r2=1426492&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/backup/RoomTypeConverter.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/backup/RoomTypeConverter.java
 Fri Dec 28 13:05:36 2012
@@ -35,8 +35,8 @@ public class RoomTypeConverter extends O
        }
        
        public RoomTypes read(InputNode node) throws Exception {
-               long id = getlongValue(node);
-               return roommanagement.getRoomTypesById(id > 0 ? id : 1); // 
conference type will be used in case of bad type
+               RoomTypes rt = 
roommanagement.getRoomTypesById(getlongValue(node));
+               return rt != null ? rt : roommanagement.getRoomTypesById(1); // 
conference type will be used in case of bad type
        }
 
        public void write(OutputNode node, RoomTypes value) throws Exception {

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/Roommanagement.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/Roommanagement.java?rev=1426492&r1=1426491&r2=1426492&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/Roommanagement.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/Roommanagement.java
 Fri Dec 28 13:05:36 2012
@@ -626,13 +626,15 @@ public class Roommanagement {
                return null;
        }
 
-       private String getSipNumber(long roomId) {
+       //TODO move it to helper or DAO
+       public String getSipNumber(long roomId) {
                String sipEnabled = 
configurationDaoImpl.getConfValue("red5sip.enable", String.class, "no");
         if("yes".equals(sipEnabled)) {
                return configurationDaoImpl.getConfValue("red5sip.room_prefix", 
String.class, "400") + roomId;
         }
         return null;
        }
+       
     /**
      * Returns number of SIP conference participants
      * @param rooms_id id of room

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java?rev=1426492&r1=1426491&r2=1426492&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
 Fri Dec 28 13:05:36 2012
@@ -27,6 +27,7 @@ import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -91,9 +92,11 @@ import org.apache.openmeetings.persisten
 import 
org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData;
 import org.apache.openmeetings.persistence.beans.poll.PollType;
 import org.apache.openmeetings.persistence.beans.poll.RoomPoll;
+import org.apache.openmeetings.persistence.beans.rooms.RoomModerators;
 import org.apache.openmeetings.persistence.beans.rooms.RoomTypes;
 import org.apache.openmeetings.persistence.beans.rooms.Rooms;
 import org.apache.openmeetings.persistence.beans.rooms.Rooms_Organisation;
+import org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe;
 import org.apache.openmeetings.persistence.beans.user.PrivateMessageFolder;
 import org.apache.openmeetings.persistence.beans.user.PrivateMessages;
 import org.apache.openmeetings.persistence.beans.user.UserContacts;
@@ -304,11 +307,23 @@ public class BackupImportController exte
                        for (Rooms r : list) {
                                Long roomId = r.getRooms_id();
 
-                               // We need to reset this as openJPA reject to 
store them
+                               // We need to reset ids as openJPA reject to 
store them
                                // otherwise
                                r.setRooms_id(null);
-
+                               MeetMe mm = r.getMeetme();
+                               r.setMeetme(null);
+                               for (Iterator<RoomModerators> i = 
r.getModerators().iterator(); i.hasNext();) {
+                                       RoomModerators rm = i.next();
+                                       if (rm.getUser().getUser_id() == null) {
+                                               i.remove();
+                                       }
+                               }
                                r = roomDao.update(r, 1L);
+                               if (mm != null) {
+                                       
mm.setConfno(roommanagement.getSipNumber(r.getRooms_id()));
+                                       r.setMeetme(mm);
+                                       r = roomDao.update(r, 1L); //FIXME 
double update
+                               }
                                roomsMap.put(roomId, r.getRooms_id());
                        }
                }
@@ -356,7 +371,9 @@ public class BackupImportController exte
 
                                // We need to reset this as openJPA reject to 
store them otherwise
                                a.setAppointmentId(null);
-
+                               if (a.getUserId().getUser_id() == null) {
+                                       a.setUserId(null);
+                               }
                                Long newAppId = 
appointmentDao.addAppointmentObj(a);
                                appointmentsMap.put(appId, newAppId);
                        }
@@ -503,6 +520,12 @@ public class BackupImportController exte
                                if (p.getTo() != null && p.getTo().getUser_id() 
== null) {
                                        p.setTo(null);
                                }
+                               if (p.getFrom() != null && 
p.getFrom().getUser_id() == null) {
+                                       p.setFrom(null);
+                               }
+                               if (p.getOwner() != null && 
p.getOwner().getUser_id() == null) {
+                                       p.setOwner(null);
+                               }
                                privateMessagesDao.addPrivateMessageObj(p);
                        }
                }
@@ -623,6 +646,7 @@ public class BackupImportController exte
        }
        
        private <T> List<T> readList(Serializer ser, File baseDir, String 
fileName, String listNodeName, Class<T> clazz, boolean notThow) throws 
Exception {
+               List<T> list = new ArrayList<T>();
                File xml = new File(baseDir, fileName);
                if (!xml.exists()) {
                        final String msg = fileName + " missing";
@@ -631,20 +655,20 @@ public class BackupImportController exte
                        } else {
                                throw new Exception(msg);
                        }
-               }
-               List<T> list = new ArrayList<T>();
-               InputNode root = NodeBuilder.read(new FileInputStream(xml));
-               InputNode listNode = root.getNext();
-               if (listNodeName.equals(listNode.getName())) {
-                       InputNode item = listNode.getNext();
-                       while (item != null) {
-                               try {
-                                       T o = ser.read(clazz, item, false);
-                                       list.add(o);
-                               } catch (Exception e) {
-                                       log.debug("Exception While reading node 
of type: " + clazz, e);
+               } else {
+                       InputNode root = NodeBuilder.read(new 
FileInputStream(xml));
+                       InputNode listNode = root.getNext();
+                       if (listNodeName.equals(listNode.getName())) {
+                               InputNode item = listNode.getNext();
+                               while (item != null) {
+                                       try {
+                                               T o = ser.read(clazz, item, 
false);
+                                               list.add(o);
+                                       } catch (Exception e) {
+                                               log.debug("Exception While 
reading node of type: " + clazz, e);
+                                       }
+                                       item = listNode.getNext();
                                }
-                               item = listNode.getNext();
                        }
                }
                return list;


Reply via email to