Revision: 4543
Author:   seba.wagner
Date:     Sun Nov 13 01:26:51 2011
Log:      Fixes: Backup Import and Export of RoomPolls and RoomPollAnswers
The Exporter now exports all Date's as tStamp (time in milliseconds since 1970). The previous format (dd.MM.yyyy HH:mm:ss) was no timezone save.
Add new wrapper for Date/Calendar times in the export/import:
The Importer can now and Date's in format dd.MM.yyyy HH:mm:ss dd.MM.yyyy or as tStamp. So you can import old backups still, but if the Date is available as tStamp, tStamp will be used.
http://code.google.com/p/openmeetings/source/detail?r=4543

Modified:
/trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/PollManagement.java
 /trunk/singlewebapp/src/app/org/openmeetings/app/remote/PollService.java
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java /trunk/singlewebapp/src/app/org/openmeetings/utils/math/CalendarPatterns.java

=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/PollManagement.java Wed Oct 12 10:34:29 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/PollManagement.java Sun Nov 13 01:26:51 2011
@@ -7,6 +7,7 @@
 import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
 import javax.persistence.Query;
+import javax.persistence.TypedQuery;

 import org.openmeetings.app.data.basic.Fieldmanagment;
 import org.openmeetings.app.data.user.Usermanagement;
@@ -43,9 +44,8 @@
                return pt.getPollTypesId();
        }

-       @SuppressWarnings("unchecked")
        public List<PollType> getPollTypes() {
-               Query q = em.createQuery("SELECT pt FROM PollType pt");
+ TypedQuery<PollType> q = em.createQuery("SELECT pt FROM PollType pt",PollType.class);
                return q.getResultList();
        }

@@ -68,6 +68,11 @@
                em.persist(roomP);
                return roomP;
        }
+
+       public void savePollBackup(RoomPoll rp) {
+               em.persist(rp);
+       }
+

        public RoomPoll updatePoll(RoomPoll rp) {
                return em.merge(rp);
@@ -100,11 +105,22 @@
                return null;
        }

-       @SuppressWarnings("unchecked")
+       public List<RoomPoll> getPollListBackup() {
+               try {
+ TypedQuery<RoomPoll> q = em.createQuery("SELECT rp FROM RoomPoll rp",RoomPoll.class);
+                       return q.getResultList();
+               } catch (NoResultException nre) {
+                       //expected
+               } catch (Exception err) {
+                       log.error("[getPoll]", err);
+               }
+               return null;
+       }
+
        public List<RoomPoll> getArchivedPollList(Long room_id) {
                try {
                        log.debug(" :: getPoll :: " + room_id);
- Query q = em.createQuery("SELECT rp FROM RoomPoll rp WHERE rp.room.rooms_id = :room_id AND rp.archived = :archived"); + TypedQuery<RoomPoll> q = em.createQuery("SELECT rp FROM RoomPoll rp WHERE rp.room.rooms_id = :room_id AND rp.archived = :archived",RoomPoll.class);
                        q.setParameter("room_id", room_id);
                        q.setParameter("archived", true);
                        return q.getResultList();
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/app/remote/PollService.java Wed Oct 12 10:34:29 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/remote/PollService.java Sun Nov 13 01:26:51 2011
@@ -16,6 +16,8 @@
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.IConnection;
 import org.red5.server.api.Red5;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
 import org.red5.server.api.service.IServiceCapableConnection;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,7 +27,7 @@
  * @author swagner
  *
  */
-public class PollService {
+public class PollService implements IPendingServiceCallback {

        private static final Logger log = Red5LoggerFactory.getLogger(
                        PollService.class, 
ScopeApplicationAdapter.webAppRootKey);
@@ -210,4 +212,9 @@
                }
                return null;
        }
-}
+
+       public void resultReceived(IPendingServiceCall arg0) {
+               // TODO Auto-generated method stub
+
+       }
+}
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java Tue Aug 30 13:17:16 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java Sun Nov 13 01:26:51 2011
@@ -30,6 +30,7 @@
 import org.openmeetings.app.data.basic.dao.LdapConfigDaoImpl;
 import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
 import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl;
+import org.openmeetings.app.data.conference.PollManagement;
 import org.openmeetings.app.data.conference.Roommanagement;
 import org.openmeetings.app.data.conference.dao.RoomModeratorsDaoImpl;
 import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
@@ -49,6 +50,8 @@
 import org.openmeetings.app.persistence.beans.files.FileExplorerItem;
 import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
+import org.openmeetings.app.persistence.beans.poll.RoomPoll;
+import org.openmeetings.app.persistence.beans.poll.RoomPollAnswers;
 import org.openmeetings.app.persistence.beans.rooms.RoomModerators;
 import org.openmeetings.app.persistence.beans.rooms.Rooms;
 import org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation;
@@ -104,6 +107,8 @@
        private UserContactsDaoImpl userContactsDao;
        @Autowired
        private AuthLevelmanagement authLevelManagement;
+       @Autowired
+       private PollManagement pollManagement;

        /*
         * (non-Javadoc)
@@ -393,6 +398,24 @@

                                                this.serializetoXML(fos, 
"UTF-8", doc);
                                        }
+
+                                       /*
+                                        * ##################### Polls
+                                        */
+                                       List<RoomPoll> roomPolls = 
pollManagement
+                                                       .getPollListBackup();
+
+                                       if (roomPolls != null) {
+
+                                               Document doc = 
this.createRoomPollDocument(roomPolls);
+
+                                               String aListXML = backup_dir + 
"roompolls.xml";
+
+                                               FileOutputStream fos = new 
FileOutputStream(aListXML);
+
+                                               this.serializetoXML(fos, 
"UTF-8", doc);
+
+                                       }

                                        if (includeFileOption.equals("yes")) {

@@ -513,6 +536,95 @@
                        er.printStackTrace();
                }
        }
+
+       private Document createRoomPollDocument(List<RoomPoll> roomPollList) {
+
+               Document document = DocumentHelper.createDocument();
+               document.setXMLEncoding("UTF-8");
+               
document.addComment("###############################################\n"
+                               + "This File is auto-generated by the Backup Tool 
\n"
+                               + "you should use the BackupPanel to modify or 
change this file \n"
+ + "see http://code.google.com/p/openmeetings/wiki/BackupPanel for Details \n"
+                               + 
"###############################################");
+
+               Element root = document.addElement("root");
+
+               Element roompolls = root.addElement("roompolls");
+
+               for (RoomPoll roomPollItem : roomPollList) {
+
+                       Element roompoll = roompolls.addElement("roompoll");
+
+                       roompoll.addElement("pollname").addCDATA(
+                                       formatString("" + 
roomPollItem.getPollName()));
+                       roompoll.addElement("pollquestion").addCDATA(
+                                       formatString("" + 
roomPollItem.getPollQuestion()));
+                       roompoll.addElement("archived").addCDATA(
+                                       formatString("" + 
roomPollItem.isArchived()));
+                       roompoll.addElement("created").addCDATA(
+                                       formatString(""
+                                                       + 
CalendarPatterns.getExportDate(roomPollItem
+                                                                       
.getCreated())));
+                       if (roomPollItem.getCreatedBy() != null) {
+                               roompoll.addElement("createdbyuserid").addCDATA(
+                                               formatString(""
+                                                               + 
roomPollItem.getCreatedBy().getUser_id()));
+                       } else {
+                               roompoll.addElement("createdbyuserid").addCDATA(
+                                               formatString(""));
+                       }
+                       if (roomPollItem.getPollType() != null) {
+                               roompoll.addElement("polltypeid").addCDATA(
+                                               formatString(""
+                                                               + 
roomPollItem.getPollType().getPollTypesId()));
+                       } else {
+                               
roompoll.addElement("polltypeid").addCDATA(formatString(""));
+                       }
+                       if (roomPollItem.getRoom() != null) {
+                               roompoll.addElement("roomid")
+                                               .addCDATA(
+                                                               formatString(""
+                                                                               
+ roomPollItem.getRoom().getRooms_id()));
+                       } else {
+                               
roompoll.addElement("roomid").addCDATA(formatString(""));
+                       }
+
+                       if (roomPollItem.getRoomPollAnswerList() == null) {
+                               continue;
+                       }
+
+                       Element roompollanswers = roompoll
+                                       .addElement("roompollanswers");
+
+                       for (RoomPollAnswers roomPollAnswersItem : roomPollItem
+                                       .getRoomPollAnswerList()) {
+
+                               Element roompollanswer = roompollanswers
+                                               .addElement("roompollanswer");
+
+                               roompollanswer.addElement("pointlist").addCDATA(
+                                               formatString("" + 
roomPollAnswersItem.getPointList()));
+                               roompollanswer.addElement("answer").addCDATA(
+                                               formatString("" + 
roomPollAnswersItem.getAnswer()));
+                               roompollanswer.addElement("votedate").addCDATA(
+                                               formatString(""
+                                                               + 
CalendarPatterns
+                                                                               
.getExportDate(roomPollAnswersItem
+                                                                               
                .getVoteDate())));
+                               if (roomPollAnswersItem.getVotedUser() != null){
+                                       
roompollanswer.addElement("voteduserid").addCDATA(
+                                                       formatString("" + 
roomPollAnswersItem.getVotedUser().getUser_id()));
+                               } else {
+                                       
roompollanswer.addElement("voteduserid").addCDATA(
+                                                       formatString(""));
+                               }
+
+                       }
+
+               }
+
+               return document;
+       }

        public boolean deleteDirectory(File path) throws IOException {

@@ -533,43 +645,6 @@

                return (path.delete());
        }
-
-       // private void zipToDir(String backupDir, ZipOutputStream zos) throws
-       // Exception {
-       //
-       // File zipDir = new File(backupDir);
-       //
-       // String[] dirList = zipDir.list();
-       //
-       // byte[] readBuffer = new byte[1024];
-       //
-       // int bytesIn = 0;
-       //
-       // for (int i=0;i<dirList.length;i++) {
-       //
-       // File f = new File(zipDir, dirList[i]);
-       //
-       // if (f.isDirectory()) {
-       // String filePath = f.getPath();
-       // zipToDir(filePath, zos);
-       // } else {
-       // FileInputStream fis = new FileInputStream(f);
-       // ZipEntry newEntry = new ZipEntry(f.getName());
-       //
-       // //log.debug("newEntry :: "+f.getPath());
-       // //log.debug("newEntry :: "+f.getName());
-       //
-       // zos.putNextEntry(newEntry);
-       // while((bytesIn = fis.read(readBuffer)) != -1 ) {
-       // zos.write(readBuffer, 0, bytesIn);
-       // }
-       // fis.close();
-       // }
-       //
-       //
-       // }
-       //
-       // }

public void getAllFiles(File dir, List<File> fileList) throws IOException {
                try {
@@ -701,12 +776,12 @@
                                        "" + a.getAppointmentLocation());
                        
appointment.addElement("appointmentDescription").addCDATA(
                                        "" + a.getAppointmentDescription());
-                       appointment.addElement("appointmentStarttime").addCDATA(
-                                       
CalendarPatterns.getDateWithTimeByMiliSeconds(a
-                                                       
.getAppointmentStarttime()));
+                       appointment.addElement("appointmentStarttime")
+                                       .addCDATA(
+                                                       
CalendarPatterns.getExportDate(a
+                                                                       
.getAppointmentStarttime()));
                        appointment.addElement("appointmentEndtime").addCDATA(
-                                       
CalendarPatterns.getDateWithTimeByMiliSeconds(a
-                                                       
.getAppointmentEndtime()));
+                                       
CalendarPatterns.getExportDate(a.getAppointmentEndtime()));
                        if (a.getAppointmentCategory() != null) {
                                appointment.addElement("categoryId").addCDATA(
                                                "" + 
a.getAppointmentCategory().getCategoryId());
@@ -963,10 +1038,11 @@
                        } else {
                                privateMessage.addElement("to").addCDATA("0");
                        }
-                       privateMessage.addElement("inserted").addCDATA(
-                                       formatString(""
-                                                       + 
CalendarPatterns.getDateWithTimeByMiliSeconds(pm
-                                                                       
.getInserted())));
+                       privateMessage.addElement("inserted")
+                                       .addCDATA(
+                                                       formatString(""
+                                                                       + 
CalendarPatterns.getExportDate(pm
+                                                                               
        .getInserted())));
                        privateMessage.addElement("isContactRequest").addCDATA(
                                        formatString("" + 
pm.getIsContactRequest()));
                        privateMessage.addElement("isRead").addCDATA(
@@ -1042,20 +1118,14 @@
                                        formatString("" + 
fileExplorerItem.getIsVideo()));
                        
fileExplorerItemElement.addElement("insertedBy").addCDATA(
                                        formatString("" + 
fileExplorerItem.getInsertedBy()));
-                       fileExplorerItemElement
-                                       .addElement("inserted")
-                                       .addCDATA(
-                                                       formatString(""
-                                                                       + 
CalendarPatterns
-                                                                               
        .getDateWithTimeByMiliSeconds(fileExplorerItem
-                                                                               
                        .getInserted())));
-                       fileExplorerItemElement
-                                       .addElement("updated")
-                                       .addCDATA(
-                                                       formatString(""
-                                                                       + 
CalendarPatterns
-                                                                               
        .getDateWithTimeByMiliSeconds(fileExplorerItem
-                                                                               
                        .getUpdated())));
+                       fileExplorerItemElement.addElement("inserted").addCDATA(
+                                       formatString(""
+                                                       + 
CalendarPatterns.getExportDate(fileExplorerItem
+                                                                       
.getInserted())));
+                       fileExplorerItemElement.addElement("updated").addCDATA(
+                                       formatString(""
+                                                       + 
CalendarPatterns.getExportDate(fileExplorerItem
+                                                                       
.getUpdated())));
                        fileExplorerItemElement.addElement("deleted").addCDATA(
                                        formatString("" + 
fileExplorerItem.getDeleted()));
                        fileExplorerItemElement.addElement("fileSize").addCDATA(
@@ -1138,9 +1208,8 @@
                                        formatString("" + flvRec.getRoom_id()));
                        flvrecording.addElement("inserted").addCDATA(
                                        formatString(""
-                                                       + CalendarPatterns
-                                                                       
.getDateWithTimeByMiliSeconds(flvRec
-                                                                               
        .getInserted())));
+                                                       + 
CalendarPatterns.getExportDate(flvRec
+                                                                       
.getInserted())));
                        flvrecording.addElement("isFolder").addCDATA(
                                        formatString("" + 
flvRec.getIsFolder()));
                        flvrecording.addElement("isImage").addCDATA(
@@ -1153,14 +1222,12 @@
                                        formatString("" + 
flvRec.getIsRecording()));
                        flvrecording.addElement("recordEnd").addCDATA(
                                        formatString(""
-                                                       + CalendarPatterns
-                                                                       
.getDateWithTimeByMiliSeconds(flvRec
-                                                                               
        .getRecordEnd())));
+                                                       + 
CalendarPatterns.getExportDate(flvRec
+                                                                       
.getRecordEnd())));
                        flvrecording.addElement("recordStart").addCDATA(
                                        formatString(""
-                                                       + CalendarPatterns
-                                                                       
.getDateWithTimeByMiliSeconds(flvRec
-                                                                               
        .getRecordStart())));
+                                                       + 
CalendarPatterns.getExportDate(flvRec
+                                                                       
.getRecordStart())));

                        Element flvrecordingmetadatas = flvrecording
                                        .addElement("flvrecordingmetadatas");
@@ -1194,9 +1261,8 @@
                                                formatString("" + 
flvMeta.getAudioIsValid()));
                                
flvrecordingmetadata.addElement("inserted").addCDATA(
                                                formatString(""
-                                                               + 
CalendarPatterns
-                                                                               
.getDateWithTimeByMiliSeconds(flvMeta
-                                                                               
                .getInserted())));
+                                                               + 
CalendarPatterns.getExportDate(flvMeta
+                                                                               
.getInserted())));
                                
flvrecordingmetadata.addElement("isAudioOnly").addCDATA(
                                                formatString("" + 
flvMeta.getIsAudioOnly()));
                                
flvrecordingmetadata.addElement("isScreenData").addCDATA(
@@ -1205,19 +1271,16 @@
                                                formatString("" + 
flvMeta.getIsVideoOnly()));
                                
flvrecordingmetadata.addElement("recordEnd").addCDATA(
                                                formatString(""
-                                                               + 
CalendarPatterns
-                                                                               
.getDateWithTimeByMiliSeconds(flvMeta
-                                                                               
                .getRecordEnd())));
+                                                               + 
CalendarPatterns.getExportDate(flvMeta
+                                                                               
.getRecordEnd())));
                                
flvrecordingmetadata.addElement("recordStart").addCDATA(
                                                formatString(""
-                                                               + 
CalendarPatterns
-                                                                               
.getDateWithTimeByMiliSeconds(flvMeta
-                                                                               
                .getRecordStart())));
+                                                               + 
CalendarPatterns.getExportDate(flvMeta
+                                                                               
.getRecordStart())));
                                
flvrecordingmetadata.addElement("updated").addCDATA(
                                                formatString(""
-                                                               + 
CalendarPatterns
-                                                                               
.getDateWithTimeByMiliSeconds(flvMeta
-                                                                               
                .getUpdated())));
+                                                               + 
CalendarPatterns.getExportDate(flvMeta
+                                                                               
.getUpdated())));

                        }

@@ -1568,8 +1631,7 @@
                        }
                        user.addElement("regdate").addCDATA(
                                        formatString(""
-                                                       + 
CalendarPatterns.getDateWithTimeByMiliSeconds(u
-                                                                       
.getRegdate())));
+                                                       + 
CalendarPatterns.getExportDate(u.getRegdate())));

                        if (u.getTitle_id() != null) {
                                user.addElement("title_id").addCDATA(
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java Fri Oct 21 06:58:32 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java Sun Nov 13 01:26:51 2011
@@ -37,6 +37,7 @@
 import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
import org.openmeetings.app.data.calendar.daos.AppointmentReminderTypDaoImpl;
 import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl;
+import org.openmeetings.app.data.conference.PollManagement;
 import org.openmeetings.app.data.conference.Roommanagement;
 import org.openmeetings.app.data.conference.dao.RoomModeratorsDaoImpl;
 import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
@@ -61,6 +62,8 @@
 import org.openmeetings.app.persistence.beans.files.FileExplorerItem;
 import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
+import org.openmeetings.app.persistence.beans.poll.RoomPoll;
+import org.openmeetings.app.persistence.beans.poll.RoomPollAnswers;
 import org.openmeetings.app.persistence.beans.rooms.RoomModerators;
 import org.openmeetings.app.persistence.beans.rooms.Rooms;
 import org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation;
@@ -126,6 +129,8 @@
        private ScopeApplicationAdapter scopeApplicationAdapter;
        @Autowired
        private AuthLevelmanagement authLevelManagement;
+       @Autowired
+       private PollManagement pollManagement;

        private final HashMap<Long, Long> usersMap = new HashMap<Long, Long>();
private final HashMap<Long, Long> organisationsMap = new HashMap<Long, Long>();
@@ -176,7 +181,8 @@
                                        }

                                        ServletMultipartRequest upload = new 
ServletMultipartRequest(
- httpServletRequest, ImportHelper.getMaxUploadSize(cfgManagement, user_level), "UTF8");
+                                                       httpServletRequest, 
ImportHelper.getMaxUploadSize(
+                                                                       cfgManagement, 
user_level), "UTF8");
                                        InputStream is = 
upload.getFileContents("Filedata");

                                        String fileSystemName = 
upload.getBaseFilename("Filedata");
@@ -460,6 +466,25 @@
                                                
this.importFileExplorerItems(fileExplorerListFile);
                                        }

+ log.info("File explorer item import complete, starting file poll import");
+
+                                       /*
+                                        * ##################### Import 
File-Explorer Items
+                                        */
+                                       String roomPollListXML = completeName + 
File.separatorChar
+                                                       + "roompolls.xml";
+                                       File roomPollListFile = new 
File(roomPollListXML);
+                                       if (!roomPollListFile.exists()) {
+                                               log.debug("roomPollListFile 
missing");
+                                       } else {
+                                               
this.importRoomPolls(roomPollListFile);
+                                       }
+
+                                       log.info("Poll import complete, starting 
copy of files and folders");
+
+                                       /*
+                                        * ##################### Import real 
files and folders
+                                        */
                                        importFolders(current_dir, 
completeName);

                                        log.info("File explorer item import 
complete, clearing temp files");
@@ -490,6 +515,114 @@

                return;
        }
+
+       private void importRoomPolls(File roomPollListFile) {
+               try {
+
+                       List<RoomPoll> roomPolls = 
this.getRoomPolls(roomPollListFile);
+
+                       for (RoomPoll roomPoll : roomPolls) {
+
+                               pollManagement.savePollBackup(roomPoll);
+
+                       }
+
+               } catch (Exception err) {
+                       log.error("[getRoomPolls]", err);
+               }
+
+       }
+
+       @SuppressWarnings("unchecked")
+ private List<RoomPoll> getRoomPolls(File roomPollListFile) throws Exception {
+
+               List<RoomPoll> roomPollList = new LinkedList<RoomPoll>();
+
+               SAXReader reader = new SAXReader();
+               Document document = reader.read(roomPollListFile);
+
+               Element root = document.getRootElement();
+
+               for (Iterator<Element> i = root.elementIterator(); 
i.hasNext();) {
+
+                       Element itemObject = i.next();
+
+                       if (itemObject.getName().equals("roompolls")) {
+
+                               for (Iterator<Element> innerIter = itemObject
+                                               .elementIterator("roompoll"); 
innerIter.hasNext();) {
+
+                                       Element roompollObject = 
innerIter.next();
+
+                                       String pollname = 
unformatString(roompollObject.element(
+                                                       "pollname").getText());
+                                       String pollquestion = 
unformatString(roompollObject
+                                                       
.element("pollquestion").getText());
+                                       Boolean archived = 
importBooleanType(unformatString(roompollObject
+                                                       
.element("archived").getText()));
+                                       Date created = CalendarPatterns
+                                                       
.parseImportDate(unformatString(roompollObject
+                                                                       
.element("created").getText()));
+                                       Long createdbyuserid = 
importLongType(unformatString(roompollObject
+                                                       
.element("createdbyuserid").getText()));
+                                       Long polltypeid = 
importLongType(unformatString(roompollObject
+                                                       
.element("polltypeid").getText()));
+                                       Long roomid = 
importLongType(unformatString(roompollObject
+                                                       
.element("roomid").getText()));
+
+                                       RoomPoll roomPoll = new RoomPoll();
+                                       roomPoll.setPollName(pollname);
+                                       roomPoll.setPollQuestion(pollquestion);
+                                       if (archived != null) {
+                                               
roomPoll.setArchived(archived.booleanValue());
+                                       } else {
+                                               roomPoll.setArchived(true);
+                                       }
+                                       roomPoll.setCreated(created);
+ roomPoll.setCreatedBy(usersDao.getUser(getNewId(createdbyuserid, Maps.USERS)));
+                                       
roomPoll.setPollType(pollManagement.getPollType(polltypeid));
+ roomPoll.setRoom(roommanagement.getRoomById(getNewId(roomid, Maps.ROOMS)));
+                                       roomPoll.setRoomPollAnswerList(new 
LinkedList<RoomPollAnswers>());
+
+                                       Element roompollanswers = roompollObject
+                                                       
.element("roompollanswers");
+
+                                       for (Iterator<Element> innerIterAnswers 
= roompollanswers
+                                                       
.elementIterator("roompollanswer"); innerIterAnswers
+                                                       .hasNext();) {
+
+                                               Element innerIterAnswerObj = 
innerIterAnswers.next();
+
+ Integer pointlist = importIntegerType(unformatString(innerIterAnswerObj
+                                                               
.element("pointlist").getText()));
+                                               Boolean answer = 
importBooleanType(unformatString(innerIterAnswerObj
+                                                               
.element("answer").getText()));
+                                               Date votedate = CalendarPatterns
+                                                               
.parseImportDate(unformatString(innerIterAnswerObj
+                                                                               
.element("votedate").getText()));
+                                               Long voteduserid = 
importLongType(unformatString(innerIterAnswerObj
+                                                               
.element("voteduserid").getText()));
+
+                                               RoomPollAnswers roomPollAnswers 
= new RoomPollAnswers();
+                                               
roomPollAnswers.setPointList(pointlist);
+                                               
roomPollAnswers.setAnswer(answer);
+                                               
roomPollAnswers.setVoteDate(votedate);
+ roomPollAnswers.setVotedUser(usersDao.getUser(getNewId(voteduserid, Maps.USERS)));
+
+                                               
roomPoll.getRoomPollAnswerList().add(roomPollAnswers);
+                                       }
+
+                                       roomPollList.add(roomPoll);
+
+                               }
+
+                       }
+
+               }
+
+               return roomPollList;
+
+       }

        public void copyDirectory(File sourceLocation, File targetLocation)
                        throws IOException {
@@ -581,8 +714,8 @@
                                                                
.element("user_id").getText()));

                                                us.setAge(CalendarPatterns
-                                                               
.parseDate(unformatString(itemUsers.element(
-                                                                               
"age").getText())));
+                                                               
.parseImportDate(unformatString(itemUsers
+                                                                               
.element("age").getText())));
                                                
us.setAvailible(importIntegerType(unformatString(itemUsers
                                                                
.element("availible").getText())));
                                                
us.setDeleted(unformatString(itemUsers.element(
@@ -671,8 +804,8 @@
                                                
us.setStatus(importIntegerType(unformatString(itemUsers
                                                                
.element("status").getText())));
                                                us.setRegdate(CalendarPatterns
-                                                               
.parseDate(unformatString(itemUsers.element(
-                                                                               
"regdate").getText())));
+                                                               
.parseImportDate(unformatString(itemUsers
+                                                                               
.element("regdate").getText())));
                                                
us.setTitle_id(importIntegerType(unformatString(itemUsers
                                                                
.element("title_id").getText())));
                                                
us.setLevel_id(importLongType(unformatString(itemUsers
@@ -782,8 +915,11 @@
                                                                Element 
organisationObject = organisationIterator
                                                                                
.next();

- Long organisation_id = getNewId(importLongType(unformatString(organisationObject
-                                                                               
.element("organisation_id").getText())), Maps.ORGANISATIONS);
+                                                               Long 
organisation_id = getNewId(
+                                                                               
importLongType(unformatString(organisationObject
+                                                                                         
      .element("organisation_id")
+                                                                               
                .getText())),
+                                                                               
Maps.ORGANISATIONS);
                                                                Long user_id = 
importLongType(unformatString(organisationObject
                                                                                
.element("user_id").getText()));
Boolean isModerator = importBooleanType(unformatString(organisationObject
@@ -934,7 +1070,7 @@
                                                                                
.element("room_id").getText())),
                                                                Maps.ROOMS);
                                                Date inserted = CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(flvObject
+                                                               
.parseImportDate(unformatString(flvObject
                                                                                
.element("inserted").getText()));
                                                Boolean isFolder = 
importBooleanType(unformatString(flvObject
                                                                
.element("isFolder").getText()));
@@ -947,10 +1083,10 @@
                                                Boolean isRecording = 
importBooleanType(unformatString(flvObject
                                                                
.element("isRecording").getText()));
                                                Date recordEnd = 
CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(flvObject
+                                                               
.parseImportDate(unformatString(flvObject
                                                                                
.element("recordEnd").getText()));
                                                Date recordStart = 
CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(flvObject
+                                                               
.parseImportDate(unformatString(flvObject
                                                                                
.element("recordStart").getText()));

                                                FlvRecording flvRecording = new 
FlvRecording();
@@ -1013,7 +1149,7 @@
Boolean audioIsValid = importBooleanType(unformatString(flvrecordingmetadataObj
                                                                        
.element("audioIsValid").getText()));
                                                        Date inserted1 = 
CalendarPatterns
-                                                                       
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+                                                                       
.parseImportDate(unformatString(flvrecordingmetadataObj
                                                                                        
.element("inserted").getText()));
Boolean isAudioOnly = importBooleanType(unformatString(flvrecordingmetadataObj
                                                                        
.element("isAudioOnly").getText()));
@@ -1022,13 +1158,13 @@
Boolean isVideoOnly = importBooleanType(unformatString(flvrecordingmetadataObj
                                                                        
.element("isVideoOnly").getText()));
                                                        Date recordEnd1 = 
CalendarPatterns
-                                                                       
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+                                                                       
.parseImportDate(unformatString(flvrecordingmetadataObj
                                                                                        
.element("recordEnd").getText()));
                                                        Date recordStart1 = 
CalendarPatterns
-                                                                       
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+                                                                       
.parseImportDate(unformatString(flvrecordingmetadataObj
                                                                                        
.element("recordStart").getText()));
                                                        Date updated = 
CalendarPatterns
-                                                                       
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+                                                                       
.parseImportDate(unformatString(flvrecordingmetadataObj
                                                                                        
.element("updated").getText()));

FlvRecordingMetaData flvrecordingmetadata = new FlvRecordingMetaData();
@@ -1203,7 +1339,7 @@
                                                                
importLongType(unformatString(pmObject.element(
                                                                                
"to").getText())), Maps.USERS));
                                                Date inserted = CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(pmObject
+                                                               
.parseImportDate(unformatString(pmObject
                                                                                
.element("inserted").getText()));
                                                Boolean isContactRequest = 
importBooleanType(unformatString(pmObject
                                                                
.element("isContactRequest").getText()));
@@ -1356,7 +1492,8 @@
                                                organisation.setName(name);
                                                
organisation.setDeleted(deleted);

- Long newOrgID = organisationmanagement.addOrganisationObj(organisation);
+                                               Long newOrgID = 
organisationmanagement
+                                                               
.addOrganisationObj(organisation);
                                                
organisationsMap.put(organisation_id, newOrgID);
                                        }
                                }
@@ -1581,11 +1718,11 @@
                                                Long categoryId = 
importLongType(unformatString(appointmentsObject
                                                                
.element("categoryId").getText()));
                                                Date appointmentStarttime = 
CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(appointmentsObject
+                                                               
.parseImportDate(unformatString(appointmentsObject
                                                                                
.element("appointmentStarttime")
                                                                                
.getText()));
                                                Date appointmentEndtime = 
CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(appointmentsObject
+                                                               
.parseImportDate(unformatString(appointmentsObject
                                                                                
.element("appointmentEndtime")
                                                                                
.getText()));
                                                String deleted = 
unformatString(appointmentsObject
@@ -1993,10 +2130,10 @@
                                                                                
.element("insertedBy").getText())),
                                                                Maps.USERS);
                                                Date inserted = CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(fileExplorerItemObj
+                                                               
.parseImportDate(unformatString(fileExplorerItemObj
                                                                                
.element("inserted").getText()));
                                                Date updated = CalendarPatterns
-                                                               
.parseDateWithHour(unformatString(fileExplorerItemObj
+                                                               
.parseImportDate(unformatString(fileExplorerItemObj
                                                                                
.element("updated").getText()));
                                                String deleted = 
unformatString(fileExplorerItemObj
                                                                
.element("deleted").getText());
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/utils/math/CalendarPatterns.java Sun Nov 6 05:52:37 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/utils/math/CalendarPatterns.java Sun Nov 13 01:26:51 2011
@@ -64,6 +64,83 @@
         dateOld.setTime(timeAdv);
         String result = sdf.format(dateOld);
         return result;
+    }
+
+    public static String getExportDate(Date t){
+       if (t == null) {
+               return "";
+       }
+        return ""+t.getTime();
+    }
+
+    public static Date parseImportDate(String dateString) {
+       try {
+
+               Date resultDate = null;
+
+               resultDate = validDate(dateFormat__ddMMyyyyHHmmss, dateString);
+
+               if ( resultDate != null ) {
+                       return resultDate;
+               }
+
+               resultDate = validDate(dateFormat__ddMMyyyy, dateString);
+
+               if ( resultDate != null ) {
+                       return resultDate;
+               }
+
+               resultDate = validDate(dateString);
+
+               if (dateString != null) {
+                       return resultDate;
+               }
+
+
+               throw new Exception ("Could not parse date string "+dateString);
+       } catch (Exception e) {
+               log.error("parseDate",e);
+       }
+       return null;
+    }
+
+    private static Date validDate(String testdate) {
+       try {
+
+               Long t = Long.valueOf(testdate);
+
+               if (t != null) {
+                       return new Date(t);
+               }
+
+       } catch (Exception err) {
+       }
+       return null;
+    }
+
+    private static Date validDate(SimpleDateFormat sdf, String testdate)
+    {
+        Date resultDate = null;
+        try
+        {
+               resultDate = sdf.parse(testdate);
+        }
+
+        // if the format of the string provided doesn't match the format we
+        // declared in SimpleDateFormat() we will get an exception
+
+        catch (java.text.ParseException e)
+        {
+          return null;
+        }
+
+        if (!sdf.format(resultDate).equals(testdate))
+        {
+          return null;
+        }
+
+        return resultDate;
+
     }

public static String getDateWithTimeByMiliSecondsAndTimeZone(Date t, TimeZone timezone){

--
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en.

Reply via email to