Modified: 
openmeetings/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
 Fri Nov  6 06:18:44 2015
@@ -153,9 +153,9 @@ public class UserManager implements IUse
 
                        if (sessionData != null) {
 
-                               User u = userDao.get(sessionData.getUser_id());
+                               User u = userDao.get(sessionData.getUserId());
 
-                               sessiondataDao.updateUserWithoutSession(SID, 
u.getUser_id());
+                               sessiondataDao.updateUserWithoutSession(SID, 
u.getId());
 
                                return u;
                        }
@@ -281,14 +281,14 @@ public class UserManager implements IUse
         * @param additionalname
         * @param fax
         * @param zip
-        * @param states_id
+        * @param stateId
         * @param town
         * @param language_id
         * @return
         */
        public Long registerUser(String login, String Userpass, String lastname,
                        String firstname, String email, Date age, String street,
-                       String additionalname, String fax, String zip, long 
states_id,
+                       String additionalname, String fax, String zip, long 
stateId,
                        String town, long language_id, String phone, boolean 
sendSMS, boolean generateSipUserData, String jNameTimeZone) {
                
                String baseURL = cfgDao.getBaseUrl();
@@ -297,24 +297,24 @@ public class UserManager implements IUse
                                && 1 == 
cfgDao.getConfValue("sendEmailWithVerficationCode", Integer.class, "0");
                
                return registerUser(login, Userpass, lastname, firstname, 
email, age,
-                               street, additionalname, fax, zip, states_id, 
town, language_id,
+                               street, additionalname, fax, zip, stateId, 
town, language_id,
                                phone, sendSMS, generateSipUserData, 
jNameTimeZone, sendConfirmation);
        }
 
        public Long registerUserNoEmail(String login, String Userpass,
                        String lastname, String firstname, String email, Date 
age,
                        String street, String additionalname, String fax, 
String zip,
-                       long states_id, String town, long language_id, String 
phone, boolean sendSMS, 
+                       long stateId, String town, long language_id, String 
phone, boolean sendSMS, 
                        boolean generateSipUserData, String jNameTimeZone) {
                
                return registerUser(login, Userpass, lastname, firstname, 
email, age,
-                               street, additionalname, fax, zip, states_id, 
town, language_id,
+                               street, additionalname, fax, zip, stateId, 
town, language_id,
                                phone, sendSMS, generateSipUserData, 
jNameTimeZone, false);
        }
 
-       private Long registerUser(String login, String Userpass, String 
lastname,
+       public Long registerUser(String login, String Userpass, String lastname,
                        String firstname, String email, Date age, String street,
-                       String additionalname, String fax, String zip, long 
states_id,
+                       String additionalname, String fax, String zip, long 
stateId,
                        String town, long language_id, String phone, boolean 
sendSMS,
                        boolean generateSipUserData, String jNameTimeZone, 
Boolean sendConfirmation) {
                try {
@@ -325,7 +325,7 @@ public class UserManager implements IUse
 
                                Long user_id = 
registerUserInit(UserDao.getDefaultRights(), login,
                                                Userpass, lastname, firstname, 
email, age, street,
-                                               additionalname, fax, zip, 
states_id, town, language_id,
+                                               additionalname, fax, zip, 
stateId, town, language_id,
                                                true, 
Arrays.asList(cfgDao.getConfValue(CONFIG_DEFAULT_GROUP_ID, Long.class, null)), 
phone,
                                                sendSMS, sendConfirmation, 
timezoneUtil.getTimeZone(jNameTimeZone), false, "", "", false, true, null);
 
@@ -355,7 +355,7 @@ public class UserManager implements IUse
         * @param additionalname
         * @param fax
         * @param zip
-        * @param states_id
+        * @param stateId
         * @param town
         * @param language_id
         * @param sendWelcomeMessage
@@ -376,7 +376,7 @@ public class UserManager implements IUse
         */
        public Long registerUserInit(Set<Right> rights, String login, String 
password, String lastname,
                        String firstname, String email, Date age, String street,
-                       String additionalname, String fax, String zip, long 
states_id,
+                       String additionalname, String fax, String zip, long 
stateId,
                        String town, long language_id, boolean 
sendWelcomeMessage,
                        List<Long> organisations, String phone, boolean 
sendSMS, Boolean sendConfirmation,
                        TimeZone timezone, Boolean forceTimeZoneCheck,
@@ -404,7 +404,7 @@ public class UserManager implements IUse
                                                return -19L;
                                        }
                                }
-                               Address adr =  userDao.getAddress(street, zip, 
town, states_id, additionalname, fax, phone, email);
+                               Address adr =  userDao.getAddress(street, zip, 
town, stateId, additionalname, fax, phone, email);
 
                                // If this user needs first to click his E-Mail 
verification
                                // code then set the status to 0
@@ -423,7 +423,7 @@ public class UserManager implements IUse
                                if (u == null) {
                                        return -111L;
                                }
-                               log.debug("Added user-Id " + u.getUser_id());
+                               log.debug("Added user-Id " + u.getId());
 
                                /*
                                 * Long adress_emails_id =
@@ -431,8 +431,8 @@ public class UserManager implements IUse
                                 * (adress_emails_id==null) { return new 
Long(-112); }
                                 */
 
-                               if (adr.getAdresses_id() > 0 && u.getUser_id() 
> 0) {
-                                       return u.getUser_id();
+                               if (adr.getId() > 0 && u.getId() > 0) {
+                                       return u.getId();
                                } else {
                                        return -16L;
                                }
@@ -535,7 +535,7 @@ public class UserManager implements IUse
        }
 
        public State getCountry(Locale loc) {
-               List<State> states = stateDao.getStates();
+               List<State> states = stateDao.get();
                if (loc != null) {
                        String code = loc.getISO3Country().toUpperCase();
                        for (State s : states) {
@@ -563,7 +563,7 @@ public class UserManager implements IUse
                        return null; //TODO FIXME need to be checked
                }
                User u = userDao.getByLogin(login, Type.oauth, serverId);
-               if (!userDao.checkEmail(email, Type.oauth, serverId, u == null 
? null : u.getUser_id())) {
+               if (!userDao.checkEmail(email, Type.oauth, serverId, u == null 
? null : u.getId())) {
                        log.error("Another user with the same email exists");
                        return null; //TODO FIXME need to be checked
                }
@@ -585,7 +585,7 @@ public class UserManager implements IUse
                        u.setShowContactDataToContacts(true);
                        u.setLastname(lastname);
                        u.setFirstname(firstname);
-                       u.getAdresses().setEmail(email);
+                       u.getAddress().setEmail(email);
                        String picture = params.get("picture");
                        if (picture != null) {
                                u.setPictureuri(picture);
@@ -594,8 +594,8 @@ public class UserManager implements IUse
                        if (locale != null) {
                                Locale loc = Locale.forLanguageTag(locale);
                                if (loc != null) {
-                                       u.setLanguage_id(getLanguage(loc));
-                                       
u.getAdresses().setStates(getCountry(loc));
+                                       u.setLanguageId(getLanguage(loc));
+                                       
u.getAddress().setState(getCountry(loc));
                                }
                        }
                }

Propchange: openmeetings/branches/3.1.x/openmeetings-web/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Nov  6 06:18:44 2015
@@ -1,4 +1,5 @@
 target
+test-data
 .project
 .classpath
 .settings

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
 Fri Nov  6 06:18:44 2015
@@ -35,7 +35,7 @@ public abstract class AdminUserChoicePro
 
        @Override
        protected Object getId(User choice) {
-               return choice.getUser_id();
+               return choice.getId();
        }
 
        @Override

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
 Fri Nov  6 06:18:44 2015
@@ -65,7 +65,7 @@ public class ConfigForm extends AdminBas
 
                        public void validate(IValidatable<String> validatable) {
                                Configuration c = 
getBean(ConfigurationDao.class).forceGet(validatable.getValue());
-                               if (c != null && !c.isDeleted() && 
!c.getConfiguration_id().equals(ConfigForm.this.getModelObject().getConfiguration_id()))
 {
+                               if (c != null && !c.isDeleted() && 
!c.getId().equals(ConfigForm.this.getModelObject().getId())) {
                                        error(Application.getString(1544L));
                                }
                        }
@@ -84,8 +84,8 @@ public class ConfigForm extends AdminBas
        protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
                ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
                Configuration c = 
cfgDao.forceGet(getModelObject().getConf_key());
-               if (c != null && c.isDeleted() && 
!c.getConfiguration_id().equals(getModelObject().getConfiguration_id())) {
-                       
getModelObject().setConfiguration_id(c.getConfiguration_id());
+               if (c != null && c.isDeleted() && 
!c.getId().equals(getModelObject().getId())) {
+                       getModelObject().setId(c.getId());
                }
                
setModelObject(getBean(ConfigurationDao.class).update(getModelObject(), 
WebSession.getUserId()));
                hideNewRecord();
@@ -102,8 +102,8 @@ public class ConfigForm extends AdminBas
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                Configuration conf = getModelObject();
-               if (conf.getConfiguration_id() != null) {
-                       conf = 
getBean(ConfigurationDao.class).get(conf.getConfiguration_id());
+               if (conf.getId() != null) {
+                       conf = 
getBean(ConfigurationDao.class).get(conf.getId());
                } else {
                        conf = new Configuration();
                }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
 Fri Nov  6 06:18:44 2015
@@ -61,7 +61,7 @@ public class ConfigsPanel extends AdminP
                        @Override
                        protected void populateItem(final Item<Configuration> 
item) {
                                final Configuration c = item.getModelObject();
-                               item.add(new Label("configuration_id", 
c.getConfiguration_id()));
+                               item.add(new Label("configuration_id", 
c.getId()));
                                item.add(new Label("conf_key", 
c.getConf_key()));
                                item.add(new Label("conf_value", 
c.getConf_value()));
                                item.add(new AjaxEventBehavior("click") {
@@ -75,7 +75,7 @@ public class ConfigsPanel extends AdminP
                                        }
                                });
                                item.add(AttributeModifier.replace("class", 
"clickable ui-widget-content"
-                                               + 
(c.getConfiguration_id().equals(form.getModelObject().getConfiguration_id()) ? 
" ui-state-default" : "")));
+                                               + 
(c.getId().equals(form.getModelObject().getId()) ? " ui-state-default" : "")));
                        }
                };
                add(listContainer.add(dataView).setOutputMarkupId(true));

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 Fri Nov  6 06:18:44 2015
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.admin.connection;
 
-import static java.lang.Boolean.TRUE;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getSid;
 
@@ -35,7 +34,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebClient;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
@@ -73,21 +71,6 @@ public class ConnectionsPanel extends Ad
                                return 
getBean(ISessionManager.class).getClients().size();
                        }
                };
-               
-               SearchableDataProvider<WebClient> sdpWeb = new 
SearchableDataProvider<WebClient>(null) {
-                       private static final long serialVersionUID = 1L;
-                       
-                       @Override
-                       public Iterator<? extends WebClient> iterator(long 
first, long count) {
-                               List<WebClient> l = new 
ArrayList<WebClient>(Application.getClients());
-                               return l.subList((int)Math.max(0, first), 
(int)Math.min(first + count, l.size())).iterator();
-                       }
-                       
-                       @Override
-                       public long size() {
-                               return Application.getClientsSize();
-                       }
-               };
                final WebMarkupContainer container = new 
WebMarkupContainer("container");
                final WebMarkupContainer details = new 
WebMarkupContainer("details");
                SearchableDataView<Client> dataView = new 
SearchableDataView<Client>("clientList", sdp) {
@@ -111,7 +94,7 @@ public class ConnectionsPanel extends Ad
                                                                , c.getServer() 
== null ? 0 : c.getServer().getId());
                                                target.add(container, 
details.setVisible(false));
                                        }
-                               
}.setEnabled(!TRUE.equals(c.getIsScreenClient()) && 
!TRUE.equals(c.getIsAVClient())));
+                               }.setEnabled(!c.isScreenClient() && 
!c.isAvClient()));
                                item.add(new AjaxEventBehavior("click") {
                                        private static final long 
serialVersionUID = 1L;
 
@@ -144,15 +127,30 @@ public class ConnectionsPanel extends Ad
                                item.add(AttributeModifier.append("class", 
"clickable ui-widget-content"));
                        }
                };
-               add(container.add(dataView).setOutputMarkupId(true));
+               add(container.add(dataView).setOutputMarkupId(true), 
details.setVisible(false).setOutputMarkupPlaceholderTag(true));
+               
+               SearchableDataProvider<org.apache.openmeetings.web.app.Client> 
sdpWeb = new 
SearchableDataProvider<org.apache.openmeetings.web.app.Client>(null) {
+                       private static final long serialVersionUID = 1L;
+                       
+                       @Override
+                       public Iterator<? extends 
org.apache.openmeetings.web.app.Client> iterator(long first, long count) {
+                               List<org.apache.openmeetings.web.app.Client> l 
= new 
ArrayList<org.apache.openmeetings.web.app.Client>(Application.getClients());
+                               return l.subList((int)Math.max(0, first), 
(int)Math.min(first + count, l.size())).iterator();
+                       }
+                       
+                       @Override
+                       public long size() {
+                               return Application.getClientsSize();
+                       }
+               };
                
                final WebMarkupContainer containerWeb = new 
WebMarkupContainer("containerWeb");
-               SearchableDataView<WebClient> dataViewWeb = new 
SearchableDataView<WebClient>("clientListWeb", sdpWeb) {
+               SearchableDataView<org.apache.openmeetings.web.app.Client> 
dataViewWeb = new 
SearchableDataView<org.apache.openmeetings.web.app.Client>("clientListWeb", 
sdpWeb) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void populateItem(final Item<WebClient> item) 
{
-                               WebClient c = item.getModelObject();
+                       protected void populateItem(final 
Item<org.apache.openmeetings.web.app.Client> item) {
+                               org.apache.openmeetings.web.app.Client c = 
item.getModelObject();
                                item.add(new Label("id", c.getUserId()));
                                item.add(new Label("login", 
getBean(UserService.class).getUserById(getSid(), c.getUserId()).getLogin()));
                                item.add(new Label("since", 
c.getConnectedSince()));
@@ -162,7 +160,7 @@ public class ConnectionsPanel extends Ad
 
                                        @Override
                                        protected void 
onSubmit(AjaxRequestTarget target, Form<?> form) {
-                                               WebClient c = 
item.getModelObject();
+                                               
org.apache.openmeetings.web.app.Client c = item.getModelObject();
                                                
getBean(IUserService.class).kickUserBySessionId(getSid(), c.getUserId()
                                                                , 
c.getSessionId());
                                                target.add(containerWeb, 
details.setVisible(false));
@@ -173,9 +171,9 @@ public class ConnectionsPanel extends Ad
 
                                        @Override
                                        protected void 
onEvent(AjaxRequestTarget target) {
-                                               Field[] ff = 
WebClient.class.getDeclaredFields();
+                                               Field[] ff = 
org.apache.openmeetings.web.app.Client.class.getDeclaredFields();
                                                RepeatingView lines = new 
RepeatingView("line");
-                                               WebClient c = 
item.getModelObject();
+                                               
org.apache.openmeetings.web.app.Client c = item.getModelObject();
                                                for (Field f : ff) {
                                                        int mod = 
f.getModifiers();
                                                        if 
(Modifier.isStatic(mod) || Modifier.isTransient(mod)) {
@@ -199,8 +197,8 @@ public class ConnectionsPanel extends Ad
                                item.add(AttributeModifier.append("class", 
"clickable ui-widget-content"));
                        }
                };
-               add(containerWeb.add(dataViewWeb).setOutputMarkupId(true), 
details.setVisible(false).setOutputMarkupPlaceholderTag(true));
                
+               add(containerWeb.add(dataViewWeb).setOutputMarkupId(true), 
details.setVisible(false).setOutputMarkupPlaceholderTag(true));
                add(new PagedEntityListPanel("navigator", dataView) {
                        private static final long serialVersionUID = 1L;
 
@@ -212,7 +210,7 @@ public class ConnectionsPanel extends Ad
        }
 
        @Override
-       public void onMenuPanelLoad(IPartialPageRequestHandler target) {
-               super.onMenuPanelLoad(target);
+       public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+               super.onMenuPanelLoad(handler);
        }
 }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
 Fri Nov  6 06:18:44 2015
@@ -75,12 +75,12 @@ public class GroupForm extends AdminBase
                                Organisation o = 
GroupForm.this.getModelObject();
                                User u = userToadd.getModelObject();
                                boolean found = false;
-                               if (o.getOrganisation_id() != null) {
-                                       found = null != 
getBean(OrganisationUserDao.class).getByOrganizationAndUser(o.getOrganisation_id(),
 u.getUser_id());
+                               if (o.getId() != null) {
+                                       found = null != 
getBean(OrganisationUserDao.class).getByOrganizationAndUser(o.getId(), 
u.getId());
                                }
                                if (!found && u != null) {
                                        for (Organisation_Users ou : 
usersPanel.getUsers2add()) {
-                                               if 
(ou.getUser().getUser_id().equals(u.getUser_id())) {
+                                               if 
(ou.getUser().getId().equals(u.getId())) {
                                                        found = true;
                                                        break;
                                                }
@@ -109,7 +109,7 @@ public class GroupForm extends AdminBase
        }
 
        private long getOrgId() {
-               return getModelObject().getOrganisation_id() != null ? 
getModelObject().getOrganisation_id() : 0;
+               return getModelObject().getId() != null ? 
getModelObject().getId() : 0;
        }
        
        @Override
@@ -121,8 +121,8 @@ public class GroupForm extends AdminBase
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                Organisation org = getModelObject();
-               if (org.getOrganisation_id() != null) {
-                       org = 
getBean(OrganisationDao.class).get(org.getOrganisation_id());
+               if (org.getId() != null) {
+                       org = getBean(OrganisationDao.class).get(org.getId());
                } else {
                        org = new Organisation();
                }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
 Fri Nov  6 06:18:44 2015
@@ -62,13 +62,13 @@ public class GroupUsersPanel extends Pan
 
                                        @Override
                                        protected void 
onUpdate(AjaxRequestTarget target) {
-                                               if 
(orgUser.getOrganisation_users_id() != null) {
+                                               if (orgUser.getId() != null) {
                                                        
getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
                                                }
                                        }
                                }));
                                Label label = new Label("label", u == null ? "" 
: GroupForm.formatUser(u));
-                               if (orgUser.getOrganisation_users_id() == null) 
{
+                               if (orgUser.getId() == null) {
                                        
label.add(AttributeAppender.append("class", "newItem"));
                                }
                                item.add(label);
@@ -77,10 +77,10 @@ public class GroupUsersPanel extends Pan
 
                                        @Override
                                        protected void 
onSubmit(AjaxRequestTarget target, Form<?> form) {
-                                               if 
(orgUser.getOrganisation_users_id() == null) {
+                                               if (orgUser.getId() == null) {
                                                        for (int i = 0; i < 
users2add.size(); ++i) {
                                                                //FIXME 
ineffective
-                                                               if 
(users2add.get(i).getUser().getUser_id().equals(orgUser.getUser().getUser_id()))
 {
+                                                               if 
(users2add.get(i).getUser().getId().equals(orgUser.getUser().getId())) {
                                                                        
users2add.remove(i);
                                                                        break;
                                                                }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
 Fri Nov  6 06:18:44 2015
@@ -67,7 +67,7 @@ public class GroupsPanel extends AdminPa
                        @Override
                        protected void populateItem(Item<Organisation> item) {
                                final Organisation o = item.getModelObject();
-                               item.add(new Label("organisation_id", "" + 
o.getOrganisation_id()));
+                               item.add(new Label("organisation_id", "" + 
o.getId()));
                                item.add(new Label("name", "" + o.getName()));
                                item.add(new AjaxEventBehavior("click") {
                                        private static final long 
serialVersionUID = 1L;
@@ -81,7 +81,7 @@ public class GroupsPanel extends AdminPa
                                        }
                                });
                                item.add(AttributeModifier.append("class", 
"clickable ui-widget-content"
-                                               + 
(o.getOrganisation_id().equals(form.getModelObject().getOrganisation_id()) ? " 
ui-state-active" : "")));
+                                               + 
(o.getId().equals(form.getModelObject().getId()) ? " ui-state-active" : "")));
                        }
                };
 

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
 Fri Nov  6 06:18:44 2015
@@ -74,7 +74,7 @@ public class LdapForm extends AdminBaseF
        @Override
        protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
                
Application.getBean(LdapConfigDao.class).update(getModelObject(), 
WebSession.getUserId());
-               LdapConfig ldapConfig = 
Application.getBean(LdapConfigDao.class).get(getModelObject().getLdapConfigId());
+               LdapConfig ldapConfig = 
Application.getBean(LdapConfigDao.class).get(getModelObject().getId());
                this.setModelObject(ldapConfig);
                hideNewRecord();
                target.add(this);
@@ -92,9 +92,9 @@ public class LdapForm extends AdminBaseF
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                LdapConfig ldapConfig = this.getModelObject();
-               if (ldapConfig.getLdapConfigId() <= 0) {
+               if (ldapConfig.getId() <= 0) {
                        ldapConfig = 
Application.getBean(LdapConfigDao.class).get(
-                                       ldapConfig.getLdapConfigId());
+                                       ldapConfig.getId());
                } else {
                        ldapConfig = new LdapConfig();
                }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
 Fri Nov  6 06:18:44 2015
@@ -60,7 +60,7 @@ public class LdapsPanel extends AdminPan
                        @Override
                        protected void populateItem(final Item<LdapConfig> 
item) {
                                final LdapConfig lc = item.getModelObject();
-                               item.add(new Label("ldapConfigId", "" + 
lc.getLdapConfigId()));
+                               item.add(new Label("ldapConfigId", "" + 
lc.getId()));
                                item.add(new Label("name", "" + lc.getName()));
                                item.add(new Label("configFileName", "" + 
lc.getConfigFileName()));
                                item.add(new AjaxEventBehavior("click") {
@@ -74,7 +74,7 @@ public class LdapsPanel extends AdminPan
                                        }
                                });
                                item.add(AttributeModifier.replace("class", 
"clickable ui-widget-content"
-                                               + (lc.getLdapConfigId() == 
form.getModelObject().getLdapConfigId() ? " ui-state-active" : "")));
+                                               + (lc.getId() == 
form.getModelObject().getId() ? " ui-state-active" : "")));
                        }
                };
                add(listContainer.add(dataView).setOutputMarkupId(true));

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 Fri Nov  6 06:18:44 2015
@@ -126,7 +126,7 @@ public class RoomForm extends AdminBaseF
 
                        @Override
                        protected Object getId(RoomOrganisation choice) {
-                               return 
choice.getOrganisation().getOrganisation_id();
+                               return choice.getOrganisation().getId();
                        }
 
                        @Override
@@ -214,7 +214,7 @@ public class RoomForm extends AdminBaseF
 
                        @Override
                        protected String getDisplayText(User choice) {
-                               Address a = choice.getAdresses();
+                               Address a = choice.getAddress();
                                return String.format("\"%s %s\" <%s>", 
choice.getFirstname(), choice.getLastname(), a == null ? "" : a.getEmail());
                        }
                });
@@ -231,14 +231,14 @@ public class RoomForm extends AdminBaseF
                                                r.setModerators(new 
ArrayList<RoomModerator>());
                                        }
                                        for (RoomModerator rm : 
r.getModerators()) {
-                                               if 
(rm.getUser().getUser_id().equals(u.getUser_id())) {
+                                               if 
(rm.getUser().getId().equals(u.getId())) {
                                                        found = true;
                                                        break;
                                                }
                                        }
                                        if (!found) {
                                                RoomModerator rm = new 
RoomModerator();
-                                               rm.setRoomId(r.getRooms_id());
+                                               rm.setRoomId(r.getId());
                                                rm.setUser(u);
                                                r.getModerators().add(0, rm);
                                                moderator2add.setObject(null);
@@ -258,9 +258,9 @@ public class RoomForm extends AdminBaseF
                                        
name.add(AttributeAppender.append("class", "newItem"));
                                }
                                item.add(new CheckBox("isSuperModerator", new 
PropertyModel<Boolean>(moderator, "isSuperModerator")))
-                                       .add(new Label("userId", "" + 
moderator.getUser().getUser_id()))
+                                       .add(new Label("userId", "" + 
moderator.getUser().getId()))
                                        .add(name)
-                                       .add(new Label("email", 
moderator.getUser().getAdresses().getEmail()))
+                                       .add(new Label("email", 
moderator.getUser().getAddress().getEmail()))
                                        .add(new 
ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
                                                private static final long 
serialVersionUID = 1L;
 
@@ -294,7 +294,7 @@ public class RoomForm extends AdminBaseF
        }
 
        void updateClients(AjaxRequestTarget target) {
-               long roomId = (getModelObject().getRooms_id() != null ? 
getModelObject().getRooms_id() : 0);  
+               long roomId = (getModelObject().getId() != null ? 
getModelObject().getId() : 0);  
                final List<Client> clientsInRoom = 
Application.getBean(ISessionManager.class).getClientListByRoom(roomId);
                clients.setDefaultModelObject(clientsInRoom);
                target.add(clientsContainer);
@@ -303,11 +303,11 @@ public class RoomForm extends AdminBaseF
        @Override
        protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
                Room r = getModelObject();
-               boolean newRoom = r.getRooms_id() == null;
+               boolean newRoom = r.getId() == null;
                r = getBean(RoomDao.class).update(r, getUserId());
                if (newRoom) {
                        for (RoomModerator rm : r.getModerators()) {
-                               rm.setRoomId(r.getRooms_id());
+                               rm.setRoomId(r.getId());
                        }
                        // FIXME double update
                        getBean(RoomDao.class).update(getModelObject(), 
getUserId());
@@ -335,8 +335,8 @@ public class RoomForm extends AdminBaseF
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                Room r = getModelObject();
-               if (r.getRooms_id() != null) {
-                       r = getBean(RoomDao.class).get(r.getRooms_id());
+               if (r.getId() != null) {
+                       r = getBean(RoomDao.class).get(r.getId());
                } else {
                        r = new Room();
                }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
 Fri Nov  6 06:18:44 2015
@@ -55,8 +55,8 @@ public class RoomsPanel extends AdminPan
                        @Override
                        protected void populateItem(final Item<Room> item) {
                                Room room = item.getModelObject();
-                               final long roomId = room.getRooms_id();
-                               item.add(new Label("rooms_id", "" + 
room.getRooms_id()));
+                               final long roomId = room.getId();
+                               item.add(new Label("rooms_id", "" + 
room.getId()));
                                item.add(new Label("name", "" + 
room.getName()));
                                item.add(new Label("ispublic", "" + 
room.getIspublic()));
                                item.add(new AjaxEventBehavior("click") {
@@ -71,7 +71,7 @@ public class RoomsPanel extends AdminPan
                                        }
                                });
                                item.add(AttributeModifier.replace("class", 
"clickable ui-widget-content"
-                                               + 
(room.getRooms_id().equals(form.getModelObject().getRooms_id()) ? " 
ui-state-active" : "")));
+                                               + 
(room.getId().equals(form.getModelObject().getId()) ? " ui-state-active" : 
"")));
                        }
                };
                

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
 Fri Nov  6 06:18:44 2015
@@ -109,7 +109,7 @@ public class UserForm extends AdminBaseF
        protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
                User u = getModelObject();
                try {
-                       boolean isNew = (u.getUser_id() == null);
+                       boolean isNew = (u.getId() == null);
                        u = getBean(UserDao.class).update(u, 
generalForm.getPasswordField().getConvertedInput(), getUserId());
                        boolean sendEmailAtRegister = (1 == 
getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", 
Integer.class, "0"));
                        if (isNew && sendEmailAtRegister) {
@@ -144,8 +144,8 @@ public class UserForm extends AdminBaseF
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                User user = getModelObject();
-               if (user.getUser_id() != null) {
-                       user = getBean(UserDao.class).get(user.getUser_id());
+               if (user.getId() != null) {
+                       user = getBean(UserDao.class).get(user.getId());
                } else {
                        user = getBean(UserDao.class).getNewUserInstance(null);
                }
@@ -227,8 +227,8 @@ public class UserForm extends AdminBaseF
                List<Long> ids = new ArrayList<Long>();
                if (u.getType() == Type.ldap) {
                        for (LdapConfig c : 
getBean(LdapConfigDao.class).getActive()) {
-                               ids.add(c.getLdapConfigId());
-                               values.put(c.getLdapConfigId(), c.getName());
+                               ids.add(c.getId());
+                               values.put(c.getId(), c.getName());
                        }
                }
                if (u.getType() == Type.oauth) {
@@ -266,7 +266,7 @@ public class UserForm extends AdminBaseF
        @Override
        protected void onValidate() {
                User u = getModelObject();
-               
if(!getBean(UserDao.class).checkLogin(login.getConvertedInput(), u.getType(), 
u.getDomainId(), u.getUser_id())) {
+               
if(!getBean(UserDao.class).checkLogin(login.getConvertedInput(), u.getType(), 
u.getDomainId(), u.getId())) {
                        error(Application.getString(105));
                }
        }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
 Fri Nov  6 06:18:44 2015
@@ -70,8 +70,8 @@ public class UsersPanel extends AdminPan
                        @Override
                        protected void populateItem(Item<User> item) {
                                User u = item.getModelObject();
-                               final long userId = u.getUser_id();
-                               item.add(new Label("userId", "" + 
u.getUser_id()));
+                               final long userId = u.getId();
+                               item.add(new Label("userId", "" + u.getId()));
                                item.add(new Label("login", u.getLogin()));
                                item.add(new Label("firstName", 
u.getFirstname()));
                                item.add(new Label("lastName", 
u.getLastname()));
@@ -85,7 +85,7 @@ public class UsersPanel extends AdminPan
                                        }
                                });
                                item.add(AttributeModifier.append("class", 
"clickable ui-widget-content"
-                                               + 
(u.getUser_id().equals(form.getModelObject().getUser_id()) ? " ui-state-active" 
: "")));
+                                               + 
(u.getId().equals(form.getModelObject().getId()) ? " ui-state-active" : "")));
                        }
                };
                add(listContainer.add(dataView).setOutputMarkupId(true));

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 Fri Nov  6 06:18:44 2015
@@ -33,7 +33,9 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.servlet.ServletContext;
@@ -85,6 +87,7 @@ import org.apache.wicket.request.cycle.R
 import org.apache.wicket.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.util.collections.ConcurrentHashSet;
 import org.apache.wicket.util.tester.WicketTester;
 import org.slf4j.Logger;
 import org.springframework.web.context.WebApplicationContext;
@@ -100,13 +103,15 @@ public class Application extends Authent
        private static final Logger log = getLogger(Application.class, 
webAppRootKey);
        private static boolean isInstalled;
        private static MultiKeyMap ONLINE_USERS = new MultiKeyMap(); 
-       private static Map<String, WebClient> INVALID_SESSIONS = new 
ConcurrentHashMap<String, WebClient>();
+       private static Map<String, org.apache.openmeetings.web.app.Client> 
INVALID_SESSIONS = new ConcurrentHashMap<String, 
org.apache.openmeetings.web.app.Client>();
+       private static Map<Long, Set<Client>> ROOMS = new 
ConcurrentHashMap<Long, Set<Client>>();
+       //additional maps for faster searching should be created
        private DashboardContext dashboardContext;
-       private static Set<Long> STRINGS_WITH_APP = new HashSet<Long>(); 
//FIXME need to be removed
+       private static Set<String> STRINGS_WITH_APP = new HashSet<>(); //FIXME 
need to be removed
        private static String appName;
        static {
-               STRINGS_WITH_APP.addAll(Arrays.asList(499L, 500L, 506L, 511L, 
512L, 513L, 517L, 532L, 622L, 804L
-                               , 909L, 952L, 978L, 981L, 984L, 989L, 990L, 
999L, 1151L, 1155L, 1157L, 1158L, 1194L));
+               STRINGS_WITH_APP.addAll(Arrays.asList("499", "500", "506", 
"511", "512", "513", "517", "532", "622", "804"
+                               , "909", "952", "978", "981", "984", "989", 
"990", "999", "1151", "1155", "1157", "1158", "1194"));
        }
        
        @Override
@@ -202,7 +207,7 @@ public class Application extends Authent
                return get().dashboardContext;
        }
        
-       public synchronized static void addOnlineUser(WebClient client) {
+       public synchronized static void 
addOnlineUser(org.apache.openmeetings.web.app.Client client) {
                try {
                        ONLINE_USERS.put(client.getUserId(), 
client.getSessionId(), client);
                } catch (Exception err) {
@@ -210,7 +215,7 @@ public class Application extends Authent
                }
        }
        
-       public synchronized static void removeOnlineUser(WebClient c) {
+       public synchronized static void 
removeOnlineUser(org.apache.openmeetings.web.app.Client c) {
                try {
                        if (c != null) {
                                ONLINE_USERS.remove(c.getUserId(), 
c.getSessionId());
@@ -234,21 +239,34 @@ public class Application extends Authent
        }
 
        @SuppressWarnings("unchecked")
-       public static List<WebClient> getClients() {
-               return new ArrayList<WebClient>(ONLINE_USERS.values());
+       public static List<org.apache.openmeetings.web.app.Client> getClients() 
{
+               return new 
ArrayList<org.apache.openmeetings.web.app.Client>(ONLINE_USERS.values());
        }
 
+       public static List<org.apache.openmeetings.web.app.Client> 
getClients(Long userId) {
+               List<org.apache.openmeetings.web.app.Client> result =  new 
ArrayList<org.apache.openmeetings.web.app.Client>();
+               MapIterator it = ONLINE_USERS.mapIterator();
+               while (it.hasNext()) {
+                       MultiKey multi = (MultiKey) it.next();
+                       if (multi.size() > 1 && userId.equals(multi.getKey(0))) 
{
+                               result.add(getClientByKeys(userId, 
(String)(multi.getKey(1))));
+                               break;
+                       }
+               }
+               return result;
+       }
+       
        public static int getClientsSize() {
                return ONLINE_USERS.size();
        }
        
-       public static WebClient getClientByKeys(Long userId, String sessionId) {
-               return (WebClient) ONLINE_USERS.get(userId, sessionId);
+       public static org.apache.openmeetings.web.app.Client 
getClientByKeys(Long userId, String sessionId) {
+               return (org.apache.openmeetings.web.app.Client) 
ONLINE_USERS.get(userId, sessionId);
        }
        
        @Override
        public void invalidateClient(Long userId, String sessionId) {
-               WebClient client = getClientByKeys(userId, sessionId);
+               org.apache.openmeetings.web.app.Client client = 
getClientByKeys(userId, sessionId);
                if (client != null) {
                        if 
(!INVALID_SESSIONS.containsKey(client.getSessionId())) {
                                INVALID_SESSIONS.put(client.getSessionId(), 
client);
@@ -267,6 +285,74 @@ public class Application extends Authent
                }
        }
        
+       public static Client addUserToRoom(long roomId, int pageId) {
+               if (!ROOMS.containsKey(roomId)) {
+                       ROOMS.put(roomId, new ConcurrentHashSet<Client>());
+               }
+               Client c = new Client(WebSession.get().getId(), pageId, 
WebSession.getUserId());
+               c.setUid(UUID.randomUUID().toString());
+               ROOMS.get(roomId).add(c);
+               return c;
+       }
+       
+       public static void removeUserFromRoom(long roomId, int pageId) {
+               removeUserFromRoom(roomId, new Client(WebSession.get().getId(), 
pageId, WebSession.getUserId()));
+       }
+       
+       public static Client removeUserFromRoom(long roomId, Client _c) {
+               if (ROOMS.containsKey(roomId)) {
+                       Set<Client> clients = ROOMS.get(roomId);
+                       for (Client c : clients) {
+                               if (c.equals(_c)) {
+                                       clients.remove(c);
+                                       return c;
+                               }
+                       }
+                       if (clients.isEmpty()) {
+                               ROOMS.remove(roomId);
+                       }
+               }
+               return _c;
+       }
+       
+       public static long getRoom(Client c) {
+               for (Entry<Long, Set<Client>> me : ROOMS.entrySet()) {
+                       Set<Client> clients = me.getValue();
+                       if (clients.contains(c)) {
+                               return me.getKey();
+                       }
+               }
+               return -1;
+       }
+       
+       public static Set<Client> getRoomUsers(long roomId) {
+               return ROOMS.containsKey(roomId) ? ROOMS.get(roomId) : new 
HashSet<Client>();
+       }
+       
+       public static Set<Long> getUserRooms(long userId) {
+               Set<Long> result = new HashSet<Long>();
+               for (Entry<Long, Set<Client>> me : ROOMS.entrySet()) {
+                       for (Client c : me.getValue()) {
+                               if (c.getUserId() == userId) {
+                                       result.add(me.getKey());
+                               }
+                       }
+               }
+               return result;
+       }
+       
+       public static boolean isUserInRoom(long roomId, long userId) {
+               if (ROOMS.containsKey(roomId)) {
+                       Set<Client> clients = ROOMS.get(roomId);
+                       for (Client c : clients) {
+                               if (c.getUserId() == userId) {
+                                       return true;
+                               }
+                       }
+               }
+               return false;
+       }
+       
        //TODO need more safe way FIXME
        public <T> T _getBean(Class<T> clazz) {
                WebApplicationContext wac = 
getWebApplicationContext(getServletContext());
@@ -389,11 +475,11 @@ public class Application extends Authent
                        if (i.getInvitee().getType() == Type.contact) {
                                link += "?invitationHash=" + i.getHash();
                
-                               if (i.getInvitee().getLanguage_id() > 0) {
-                                       link += "&language=" + 
i.getInvitee().getLanguage_id().toString();
+                               if (i.getInvitee().getLanguageId() > 0) {
+                                       link += "&language=" + 
i.getInvitee().getLanguageId().toString();
                                }
                        } else {
-                               link = 
getRoomUrlFragment(i.getRoom().getRooms_id()).getLink();
+                               link = 
getRoomUrlFragment(i.getRoom().getId()).getLink();
                        }
                }
                return link;

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 Fri Nov  6 06:18:44 2015
@@ -280,8 +280,6 @@
   <entry key="258">Go to last page</entry>
   <entry key="259">Zoom --</entry>
   <entry key="260">Zoom ++</entry>
-  <entry key="261">Mr</entry>
-  <entry key="262">Ms</entry>
   <entry key="263">Configuration</entry>
   <entry key="264">ID</entry>
   <entry key="265">Key</entry>
@@ -860,8 +858,6 @@
   <entry key="838">This user is a super moderator. You cannot remove the 
moderation flag.</entry>
   <entry key="839">Do you really want to delete this file/folder?</entry>
   <entry key="840">Delete file/folder?</entry>
-  <entry key="841">Mrs</entry>
-  <entry key="842">Dr</entry>
   <entry key="843">Properties</entry>
   <entry key="844">Show mouse position to viewers</entry>
   <entry key="845">Share audio with SIP applet</entry>
@@ -1483,7 +1479,6 @@
   <entry key="1461">Export/Import System Backups</entry>
   <entry key="1462">You need to be a Moderator or have the 'draw on 
whiteboard' rights to upload, add, delete or load files and folders.</entry>
   <entry key="1463">Edit text</entry>
-  <entry key="1464">Prof</entry>
   <entry key="1465">Publish</entry>
   <entry key="1466">Start Publish</entry>
   <entry key="1467">Stop Publish</entry>
@@ -1876,4 +1871,9 @@
        <entry key="install.wizard.congrats.mail">Mailing list</entry>
        <entry key="install.wizard.congrats.commercial">There are some companies
                        that also offer commercial support for Apache 
OpenMeetings:</entry>
+  <entry key="user.salutation.mr">Mr</entry>
+  <entry key="user.salutation.ms">Ms</entry>
+  <entry key="user.salutation.mrs">Mrs</entry>
+  <entry key="user.salutation.dr">Dr</entry>
+  <entry key="user.salutation.prof">Prof</entry>
 </properties>

Copied: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java
 (from r1712910, 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebClient.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java?p2=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java&p1=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebClient.java&r1=1712910&r2=1712911&rev=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebClient.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java
 Fri Nov  6 06:18:44 2015
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.app;
 
-import java.io.Serializable;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
@@ -31,7 +30,7 @@ import org.apache.wicket.protocol.ws.api
  * @author solomax
  *
  */
-public class WebClient  implements IDataProviderEntity, Serializable {
+public class Client implements IDataProviderEntity {
        private static final long serialVersionUID = 1L;
 
        public enum Right {
@@ -45,14 +44,15 @@ public class WebClient  implements IData
        private Date connectedSince;
        private int serverId = 0;
 
-       public WebClient() {
+       public Client() {
+               this.connectedSince = new Date();
        }
        
-       public WebClient(String sessionId, IKey key, long userId) {
+       public Client(String sessionId, IKey key, long userId) {
                this(sessionId, key.hashCode(), userId);
        }
        
-       public WebClient(String sessionId, int pageId, long userId) {
+       public Client(String sessionId, int pageId, long userId) {
                this.sessionId = sessionId;
                this.pageId = pageId;
                this.userId = userId;
@@ -90,17 +90,6 @@ public class WebClient  implements IData
        public void setUid(String uid) {
                this.uid = uid;
        }
-       public Date getConnectedSince() {
-               return connectedSince;
-       }
-
-       public void setConnectedSince(Date connectedSince) {
-               this.connectedSince = connectedSince;
-       }
-       
-       public int getServerId() {
-               return this.serverId;
-       }
 
        @Override
        public int hashCode() {
@@ -120,7 +109,7 @@ public class WebClient  implements IData
                        return false;
                if (getClass() != obj.getClass())
                        return false;
-               WebClient other = (WebClient) obj;
+               Client other = (Client) obj;
                if (pageId != other.pageId)
                        return false;
                if (sessionId == null) {
@@ -140,4 +129,21 @@ public class WebClient  implements IData
        public boolean hasRight(Right right) {
                return rights.contains(Right.moderator) ? true : 
rights.contains(right);
        }
+
+       public Date getConnectedSince() {
+               return connectedSince;
+       }
+
+       public void setConnectedSince(Date connectedSince) {
+               this.connectedSince = connectedSince;
+       }
+
+       @Override
+       public Long getId() {
+               return null;
+       }
+
+       @Override
+       public void setId(Long id) {
+       }
 }

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 Fri Nov  6 06:18:44 2015
@@ -199,8 +199,8 @@ public class WebSession extends Abstract
                if (soapLogin != null && !soapLogin.getUsed()) { //add code for 
 || (soapLogin.getAllowSameURLMultipleTimes())
                        SessiondataDao sessionDao = 
getBean(SessiondataDao.class);
                        Sessiondata sd = 
sessionDao.getSessionByHash(soapLogin.getSessionHash());
-                       if (sd != null && sd.getSessionXml() != null) {
-                               RemoteSessionObject remoteUser = 
RemoteSessionObject.fromXml(sd.getSessionXml());
+                       if (sd != null && sd.getXml() != null) {
+                               RemoteSessionObject remoteUser = 
RemoteSessionObject.fromXml(sd.getXml());
                                if (remoteUser != null && 
!Strings.isEmpty(remoteUser.getExternalUserId())) {
                                        UserDao userDao = 
getBean(UserDao.class);
                                        User user = 
userDao.getExternalUser(remoteUser.getExternalUserId(), 
remoteUser.getExternalUserType());
@@ -209,10 +209,10 @@ public class WebSession extends Abstract
                                                
user.setFirstname(remoteUser.getFirstname());
                                                
user.setLastname(remoteUser.getLastname());
                                                
user.setLogin(remoteUser.getUsername()); //FIXME check if login UNIQUE
-                                               
user.setExternalUserId(remoteUser.getExternalUserId());
-                                               
user.setExternalUserType(remoteUser.getExternalUserType());
+                                               
user.setExternalId(remoteUser.getExternalUserId());
+                                               
user.setExternalType(remoteUser.getExternalUserType());
                                                
user.getRights().add(Right.Room);
-                                               
user.getAdresses().setEmail(remoteUser.getEmail());
+                                               
user.getAddress().setEmail(remoteUser.getEmail());
                                                
user.setPictureuri(remoteUser.getPictureUrl());
                                        } else {
                                                
user.setFirstname(remoteUser.getFirstname());
@@ -226,7 +226,7 @@ public class WebSession extends Abstract
                                        //soapLogin.setClientURL(clientURL); 
//FIXME
                                        soapDao.update(soapLogin);
 
-                                       sessionDao.updateUser(SID, 
user.getUser_id());
+                                       sessionDao.updateUser(SID, 
user.getId());
                                        setUser(user);
                                        recordingId = 
soapLogin.getRoomRecordingId();
                                        return true;
@@ -237,10 +237,10 @@ public class WebSession extends Abstract
        }
        
        private void setUser(User u) {
-               userId = u.getUser_id();
+               userId = u.getId();
                rights = Collections.unmodifiableSet(u.getRights());
-               languageId = u.getLanguage_id();
-               externalType = u.getExternalUserType();
+               languageId = u.getLanguageId();
+               externalType = u.getExternalType();
                tz = getBean(TimezoneUtil.class).getTimeZone(u);
                ISO8601FORMAT.setTimeZone(tz);
                setLocale(languageId == 3 ? Locale.GERMANY : 
LabelDao.languages.get(languageId)); //FIXME hack
@@ -282,7 +282,7 @@ public class WebSession extends Abstract
        
        public boolean signIn(User u) {
                Sessiondata sessData = 
getBean(SessiondataDao.class).startsession();
-               SID = sessData.getSession_id();
+               SID = sessData.getSessionId();
                if (u == null) {
                        return false;
                }
@@ -307,7 +307,7 @@ public class WebSession extends Abstract
                WebSession session = get();
                if (session.languageId < 0) {
                        if (session.isSignedIn()) {
-                               session.languageId = 
getBean(UserDao.class).get(session.userId).getLanguage_id();
+                               session.languageId = 
getBean(UserDao.class).get(session.userId).getLanguageId();
                        } else {
                                session.languageId = 
getBean(ConfigurationDao.class).getConfValue(CONFIG_DEFAULT_LANG_KEY, 
Long.class, "1");
                        }
@@ -323,11 +323,11 @@ public class WebSession extends Abstract
                        if (sessionData == null) {
                                sessionData = sessionDao.startsession();
                        }
-                       if (!sessionDao.updateUser(sessionData.getSession_id(), 
userId, false, languageId)) {
+                       if (!sessionDao.updateUser(sessionData.getSessionId(), 
userId, false, languageId)) {
                                //something bad, force user to re-login
                                invalidate();
                        } else {
-                               SID = sessionData.getSession_id();
+                               SID = sessionData.getSessionId();
                        }
                }
                return SID;

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
 Fri Nov  6 06:18:44 2015
@@ -39,10 +39,10 @@
                <label><wicket:message key="111" /></label><select 
wicket:id="language_id" />
        </div>
        <div class="formelement">
-               <label><wicket:message key="137" /></label><input type="text" 
wicket:id="adresses.email" />
+               <label><wicket:message key="137" /></label><input type="text" 
wicket:id="address.email" />
        </div>
        <div class="formelement">
-               <label><wicket:message key="607" /></label><input type="text" 
wicket:id="adresses.phone" />
+               <label><wicket:message key="607" /></label><input type="text" 
wicket:id="address.phone" />
        </div>
        <div class="formelement">
                <label><wicket:message key="1503" /></label><input 
class="formcheckbox" type="checkbox" wicket:id="sendSMS" />
@@ -52,20 +52,20 @@
        </div>
        <div class="formelement">
                <label><wicket:message key="139" /></label><input type="text"
-                       wicket:id="adresses.street" style="width: 244px;" /> 
<input
-                       type="text" wicket:id="adresses.additionalname" 
style="width: 30px;" />
+                       wicket:id="address.street" style="width: 244px;" /> 
<input
+                       type="text" wicket:id="address.additionalname" 
style="width: 30px;" />
        </div>
        <div class="formelement">
                <label><wicket:message key="140" /></label><input type="text"
-                       wicket:id="adresses.zip" style="width: 60px;" /> <input 
type="text"
-                       wicket:id="adresses.town" style="width: 214px;" />
+                       wicket:id="address.zip" style="width: 60px;" /> <input 
type="text"
+                       wicket:id="address.town" style="width: 214px;" />
        </div>
        <div class="formelement">
-               <label><wicket:message key="141" /></label><select 
wicket:id="adresses.states" />
+               <label><wicket:message key="141" /></label><select 
wicket:id="address.state" />
        </div>
        <div class="formelement">
                <label><wicket:message key="142" /></label>
-               <textarea wicket:id="adresses.comment" />
+               <textarea wicket:id="address.comment" />
        </div>
        <div class="formelement">
                <label><wicket:message key="161" /></label><input type="hidden" 
class="input" wicket:id="organisation_users" style="max-height: 80px" />

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 Fri Nov  6 06:18:44 2015
@@ -21,28 +21,25 @@ package org.apache.openmeetings.web.comm
 import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
-import static org.apache.openmeetings.web.app.WebSession.getLanguage;
 import static 
org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
-import org.apache.openmeetings.db.dao.user.SalutationDao;
 import org.apache.openmeetings.db.dao.user.StateDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.Organisation;
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
-import org.apache.openmeetings.db.entity.user.Salutation;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Salutation;
 import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import 
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -71,7 +68,6 @@ import com.googlecode.wicket.kendo.ui.re
 
 public class GeneralUserForm extends Form<User> {
        private static final long serialVersionUID = 1L;
-       private Salutation salutation;
        private LocalDate age;
        private PasswordTextField passwordField;
        private RequiredTextField<String> email;
@@ -85,31 +81,21 @@ public class GeneralUserForm extends For
                
passwordField.setRequired(false).add(minimumLength(getMinPasswdLength(cfgDao)));
 
                updateModelObject(getModelObject());
-               SalutationDao salutDao = getBean(SalutationDao.class);
                add(new DropDownChoice<Salutation>("salutation"
-                               , new PropertyModel<Salutation>(this, 
"salutation")
-                               , salutDao.getUserSalutations(getLanguage())
+                               , Arrays.asList(Salutation.values())
                                , new ChoiceRenderer<Salutation>() {
                                        private static final long 
serialVersionUID = 1L;
 
                                        @Override
                                        public Object 
getDisplayValue(Salutation object) {
-                                               return getString("" + 
object.getFieldvalues_id());
+                                               return 
getString("user.salutation." + object.name());
                                        }
 
                                        @Override
                                        public String getIdValue(Salutation 
object, int index) {
-                                               return "" + 
object.getSalutations_id();
+                                               return object.name();
                                        }
-                               })
-                       .add(new AjaxFormComponentUpdatingBehavior("change") {
-                               private static final long serialVersionUID = 1L;
-
-                               @Override
-                               protected void onUpdate(AjaxRequestTarget 
target) {
-                                       
GeneralUserForm.this.getModelObject().setSalutations_id(salutation.getSalutations_id());
-                               }
-                       }));
+                               }));
                add(new TextField<String>("firstname"));
                add(new TextField<String>("lastname"));
                
@@ -117,10 +103,10 @@ public class GeneralUserForm extends For
 
                add(new LanguageDropDown("language_id"));
 
-               add(email = new RequiredTextField<String>("adresses.email"));
+               add(email = new RequiredTextField<String>("address.email"));
                email.setLabel(Model.of(Application.getString(137)));
                email.add(RfcCompliantEmailAddressValidator.getInstance());
-               add(new TextField<String>("adresses.phone"));
+               add(new TextField<String>("address.phone"));
                add(new CheckBox("sendSMS"));
                add(new AjaxDatePicker("age", new 
PropertyModel<LocalDate>(this, "age"), WebSession.get().getLocale()) {
                        private static final long serialVersionUID = 1L;
@@ -131,12 +117,12 @@ public class GeneralUserForm extends For
                                u.setAge(CalendarHelper.getDate(age, 
u.getTimeZoneId()));
                        }
                });
-               add(new TextField<String>("adresses.street"));
-               add(new TextField<String>("adresses.additionalname"));
-               add(new TextField<String>("adresses.zip"));
-               add(new TextField<String>("adresses.town"));
-               add(new DropDownChoice<State>("adresses.states", 
getBean(StateDao.class).getStates(), new ChoiceRenderer<State>("name", 
"state_id")));
-               add(new TextArea<String>("adresses.comment"));
+               add(new TextField<String>("address.street"));
+               add(new TextField<String>("address.additionalname"));
+               add(new TextField<String>("address.zip"));
+               add(new TextField<String>("address.town"));
+               add(new DropDownChoice<State>("address.state", 
getBean(StateDao.class).get(), new ChoiceRenderer<State>("name", "state_id")));
+               add(new TextArea<String>("address.comment"));
 
                final List<Organisation_Users> orgUsers;
                if (isAdminForm) {
@@ -158,7 +144,7 @@ public class GeneralUserForm extends For
 
                        @Override
                        protected Object getId(Organisation_Users choice) {
-                               return 
choice.getOrganisation().getOrganisation_id();
+                               return choice.getOrganisation().getId();
                        }
 
                        @Override
@@ -186,14 +172,13 @@ public class GeneralUserForm extends For
        }
 
        public void updateModelObject(User u) {
-               salutation = 
getBean(SalutationDao.class).get(u.getSalutations_id(), getLanguage());
                age = CalendarHelper.getDate(u.getAge(), u.getTimeZoneId());
        }
        
        @Override
        protected void onValidate() {
                User u = getModelObject();
-               
if(!getBean(UserDao.class).checkEmail(email.getConvertedInput(), u.getType(), 
u.getDomainId(), u.getUser_id())) {
+               
if(!getBean(UserDao.class).checkEmail(email.getConvertedInput(), u.getType(), 
u.getDomainId(), u.getId())) {
                        error(Application.getString(1000));
                }
                super.onValidate();
@@ -202,12 +187,11 @@ public class GeneralUserForm extends For
        public PasswordTextField getPasswordField() {
                return passwordField;
        }
-
        
        public String getEmail() {
                return email.getValue();
        }
-       
+
        @Override
        protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
                return new PanelMarkupSourcingStrategy(false);

Modified: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java
 Fri Nov  6 06:18:44 2015
@@ -24,9 +24,9 @@ import static org.apache.openmeetings.we
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.openmeetings.db.dao.room.IRoomManager;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.Room.Type;
 import org.apache.openmeetings.web.app.Application;
 import 
org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.model.IModel;
@@ -45,8 +45,8 @@ public abstract class UserPanel extends
        
        public static List<Room> getMyRooms() {
                List<Room> result = new ArrayList<Room>();
-               
result.add(getBean(IRoomManager.class).getRoomByOwnerAndTypeId(getUserId(), 1L, 
Application.getString(1306L)));
-               
result.add(getBean(IRoomManager.class).getRoomByOwnerAndTypeId(getUserId(), 3L, 
Application.getString(1307L)));
+               result.add(getBean(RoomDao.class).getUserRoom(getUserId(), 
Type.conference, Application.getString(1306L)));
+               result.add(getBean(RoomDao.class).getUserRoom(getUserId(), 
Type.conference, Application.getString(1307L)));
                
result.addAll(getBean(RoomDao.class).getAppointedRoomsByUser(getUserId()));
                return result;
        }

Copied: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.html
 (from r1712910, 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html)
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.html?p2=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.html&p1=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html&r1=1712910&r2=1712911&rev=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.html
 Fri Nov  6 06:18:44 2015
@@ -20,7 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <div wicket:id="container" class="recording dialog errors">
+       <div wicket:id="container" class="dialog errors">
                <h3 wicket:id="message"></h3>
                <table style="width: 100%">
                        <tr>

Copied: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
 (from r1712825, 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java?p2=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java&p1=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java&r1=1712825&r2=1712911&rev=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
 Fri Nov  6 06:18:44 2015
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.user.record;
+package org.apache.openmeetings.web.common.tree;
 
 import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
@@ -25,9 +25,9 @@ import static org.apache.openmeetings.we
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
-import org.apache.openmeetings.db.entity.record.FlvRecording;
-import org.apache.openmeetings.db.entity.record.FlvRecordingLog;
+import org.apache.openmeetings.db.dao.record.RecordingLogDao;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.record.RecordingLog;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -41,16 +41,16 @@ import org.apache.wicket.model.Model;
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
-public class RecordingErrorsDialog extends AbstractDialog<FlvRecording> {
+public class ConvertingErrorsDialog extends AbstractDialog<Recording> {
        private static final long serialVersionUID = 1L;
        private final WebMarkupContainer container = new 
WebMarkupContainer("container");
        private final Label message = new Label("message", 
Model.of((String)null));
-       private final ListView<FlvRecordingLog> logView = new 
ListView<FlvRecordingLog>("row") {
+       private final ListView<RecordingLog> logView = new 
ListView<RecordingLog>("row") {
                private static final long serialVersionUID = 1L;
 
                @Override
-               protected void populateItem(ListItem<FlvRecordingLog> item) {
-                       FlvRecordingLog l = item.getModelObject();
+               protected void populateItem(ListItem<RecordingLog> item) {
+                       RecordingLog l = item.getModelObject();
                        item.add(new Label("exitCode", l.getExitValue()));
                        item.add(new Label("message", l.getFullMessage()));
                        if (!"0".equals(l.getExitValue())) {
@@ -74,15 +74,15 @@ public class RecordingErrorsDialog exten
                return true;
        }
 
-       public RecordingErrorsDialog(String id, IModel<FlvRecording> model) {
+       public ConvertingErrorsDialog(String id, IModel<Recording> model) {
                super(id, Application.getString(887), model);
                add(container.add(message.setVisible(false), 
logView.setVisible(false)).setOutputMarkupId(true));
        }
        
        @Override
-       protected void onOpen(IPartialPageRequestHandler target) {
-               FlvRecording f = getModelObject();
-               List<FlvRecordingLog> logs = 
getBean(FlvRecordingLogDao.class).getByRecordingId(f.getFlvRecordingId());
+       protected void onOpen(IPartialPageRequestHandler handler) {
+               Recording f = getModelObject();
+               List<RecordingLog> logs = 
getBean(RecordingLogDao.class).getByRecordingId(f.getId());
                if (f.getFileHash() == null) {
                        message.setVisible(true);
                        
message.setDefaultModelObject(Application.getString(888));
@@ -96,12 +96,12 @@ public class RecordingErrorsDialog exten
                        logView.setVisible(false);
                        logView.setList(logs).setVisible(true);
                }
-               target.add(container);
-               super.onOpen(target);
+               handler.add(container);
+               super.onOpen(handler);
        }
        
        @Override
-       public void onClose(IPartialPageRequestHandler target, DialogButton 
button) {
+       public void onClose(IPartialPageRequestHandler handler, DialogButton 
button) {
        }
        
        @Override

Copied: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
 (from r1712825, 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java?p2=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java&p1=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java&r1=1712825&r2=1712911&rev=1712911&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
 Fri Nov  6 06:18:44 2015
@@ -16,36 +16,43 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.user.record;
+package org.apache.openmeetings.web.common.tree;
 
 import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
-import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
-import org.apache.openmeetings.db.entity.record.FlvRecording;
-import org.apache.openmeetings.db.entity.record.FlvRecording.Status;
+import org.apache.openmeetings.db.dao.record.RecordingLogDao;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.record.Recording.Status;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
 
-public class RecordingItemPanel extends RecordingPanel {
+public class FileItemPanel extends FolderPanel {
        private static final long serialVersionUID = 1L;
+       private final WebMarkupContainer errors = new 
WebMarkupContainer("errors");
 
-       public RecordingItemPanel(String id, final IModel<FlvRecording> model, 
final RecordingsPanel treePanel) {
-               super(id, model, treePanel);
-               FlvRecording r = model.getObject();
-               long errorCount = 
getBean(FlvRecordingLogDao.class).countErrors(r.getFlvRecordingId());
-               boolean visible = errorCount != 0 || (Status.RECORDING != 
r.getStatus() && Status.CONVERTING != r.getStatus() && 
!isRecordingExists(r.getFileHash() + MP4_EXTENSION));
-               drag.add(new WebMarkupContainer("errors").add(new 
AjaxEventBehavior("click") {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onEvent(AjaxRequestTarget target) {
-                               treePanel.errorsDialog.setDefaultModel(model);
-                               treePanel.errorsDialog.open(target);
-                       }
-               }).setVisible(visible));
+       public FileItemPanel(String id, final IModel<? extends FileItem> model, 
final FileTreePanel fileTreePanel) {
+               super(id, model, fileTreePanel);
+               if (model.getObject() instanceof Recording) {
+                       Recording r = (Recording)model.getObject();
+                       long errorCount = 
getBean(RecordingLogDao.class).countErrors(r.getId());
+                       boolean visible = errorCount != 0 || (Status.RECORDING 
!= r.getStatus() && Status.CONVERTING != r.getStatus() && 
!isRecordingExists(r.getFileHash() + MP4_EXTENSION));
+                       errors.add(new AjaxEventBehavior("click") {
+                               private static final long serialVersionUID = 1L;
+       
+                               @Override
+                               protected void onEvent(AjaxRequestTarget 
target) {
+                                       
fileTreePanel.errorsDialog.setDefaultModel(model);
+                                       fileTreePanel.errorsDialog.open(target);
+                               }
+                       }).setVisible(visible);
+               } else {
+                       errors.setVisible(false);
+               }
+               drag.add(errors);
        }
 }

Added: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1712911&view=auto
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
 (added)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
 Fri Nov  6 06:18:44 2015
@@ -0,0 +1,175 @@
+/*
+ * 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.web.common.tree;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.record.Recording.Status;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import 
org.apache.wicket.extensions.markup.html.repeater.tree.DefaultNestedTree;
+import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
+import org.apache.wicket.extensions.markup.html.repeater.tree.content.Folder;
+import org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+public class FileItemTree<T extends FileItem> extends DefaultNestedTree<T> {
+       private static final long serialVersionUID = 1L;
+       private final FileTreePanel treePanel;
+       private final IModel<T> selectedItem = Model.of((T)null);
+
+       public FileItemTree(String id, FileTreePanel treePanel, 
ITreeProvider<T> tp) {
+               super(id, tp);
+               this.treePanel = treePanel;
+               setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
+       }
+       
+       @Override
+       protected Component newContentComponent(String id, IModel<T> node) {
+               return new Folder<T>(id, this, node) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected Component newLabelComponent(String id, final 
IModel<T> lm) {
+                               FileItem r = lm.getObject();
+                               return Type.Folder == r.getType() || r.getId() 
< 1 ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm, treePanel);
+                       }
+                       
+                       @Override
+                       protected boolean isSelected() {
+                               return 
getModelObject().getId().equals(treePanel.selectedFile.getObject().getId());
+                       }
+                       
+                       @Override
+                       protected boolean isClickable() {
+                               return true;
+                       }
+                       
+                       @Override
+                       protected void onClick(AjaxRequestTarget target) {
+                               T r = getModelObject();
+                               treePanel.selected.resetSelected(target);
+                               selectedItem.setObject(r);
+                               treePanel.selectedFile.setObject(r);
+                               treePanel.selected = FileItemTree.this;
+                               if (Type.Folder == r.getType()) {
+                                       if (getState(r) == State.COLLAPSED) {
+                                               super.onClick(target);
+                                       }
+                                       updateBranch(r, target);
+                               } else {
+                                       treePanel.update(target, r);
+                                       updateNode(r, target);
+                               }
+                       }
+                       
+                       private String getItemStyle(T f, String def) {
+                               String style;
+                               if (f.getId() == 0) {
+                                       style = "my file om-icon";
+                               } else if (f.getId() < 0) {
+                                       style = "public file om-icon";
+                               } else {
+                                       switch(f.getType()) {
+                                               case Folder:
+                                                       style = def;
+                                                       break;
+                                               case Image:
+                                                       style = "image file 
om-icon";
+                                                       break;
+                                               case PollChart:
+                                                       style = "chart file 
om-icon";
+                                                       break;
+                                               case WmlFile:
+                                                       style = "wml file 
om-icon";
+                                                       break;
+                                               case Recording:
+                                               {
+                                                       Recording r = 
(Recording)f;
+                                                       if 
(isRecordingExists(r.getFileHash() + MP4_EXTENSION)) {
+                                                               style = 
"recording om-icon";
+                                                       } else if 
(Status.RECORDING == r.getStatus() || Status.CONVERTING == r.getStatus()) {
+                                                               style = 
"processing-recording om-icon";
+                                                       } else {
+                                                               style = 
"broken-recording om-icon";
+                                                       }
+                                               }
+                                                       break;
+                                               case Presentation:
+                                                       style = "doc file 
om-icon";
+                                                       break;
+                                               case Video:
+                                               default:
+                                                       style = "recording 
om-icon";
+                                                       break;
+                                       }
+                               }
+                               return style;
+                       }
+                       
+                       @Override
+                       protected String getOtherStyleClass(T r) {
+                               return getItemStyle(r, 
super.getOtherStyleClass(r));
+                       }
+                       
+                       @Override
+                       protected String getOpenStyleClass() {
+                               return getItemStyle(getModelObject(), 
super.getOpenStyleClass());
+                       }
+                       
+                       @Override
+                       protected String getClosedStyleClass() {
+                               return getItemStyle(getModelObject(), 
super.getClosedStyleClass());
+                       }
+                       
+                       @Override
+                       protected String getSelectedStyleClass() {
+                               return "ui-state-active";
+                       }
+                       
+                       @Override
+                       protected IModel<String> newLabelModel(IModel<T> model) 
{
+                               return 
Model.of(model.getObject().getFileName());
+                       }
+               };
+       }
+
+       private void resetSelected(AjaxRequestTarget target) {
+               T _prev = selectedItem.getObject();
+               if (_prev != null) {
+                       if (Type.Folder == _prev.getType()) {
+                               updateBranch(_prev, target);
+                       } else {
+                               updateNode(_prev, target);
+                       }
+                       selectedItem.setObject(null);
+               }
+       }
+       
+       @Override
+       protected void onDetach() {
+               selectedItem.detach();
+               super.onDetach();
+       }
+}

Added: 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1712911&view=auto
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 (added)
+++ 
openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 Fri Nov  6 06:18:44 2015
@@ -0,0 +1,58 @@
+<?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.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org";>
+<wicket:panel>
+       <script type="text/javascript">
+               function treeRevert(dropped) {
+                       $('#tree-anchor').get(0).scrollIntoView();
+                       this.parent().parent().get(0).scrollIntoView();
+                       return !dropped;
+               }
+       </script>
+       <div class="file tree">
+               <div class="icons clear trash-toolbar" 
wicket:id="trash-toolbar">
+                       <span wicket:id="create" class="folder-create om-icon 
align-left clickable" wicket:message="title:703"></span>
+                       <span wicket:id="refresh" class="refresh om-icon 
align-left clickable" wicket:message="title:704"></span>
+                       <span wicket:id="trash" class="trash om-icon 
align-right clickable"></span>
+                       <span style="padding-left: 20px;" 
wicket:message="title:705"><wicket:message key="1224"/></span>
+                       <div class="clear"></div>
+               </div>
+               <div wicket:id="tree-container" class="trees">
+                       <div id="tree-anchor" style="height: 2px; width: 
2px;"></div>
+                       <div wicket:id="tree"></div>
+               </div>
+               <div class="sizes" wicket:id="sizes">
+                       <table>
+                               <tr>
+                                       <td><wicket:message key="923"/></td>
+                                       <td><span 
wicket:id="homeSize"></span></td>
+                               </tr>
+                               <tr>
+                                       <td><wicket:message key="924"/></td>
+                                       <td><span 
wicket:id="publicSize"></span></td>
+                               </tr>
+                       </table>
+               </div>
+               <div wicket:id="addFolder"></div>
+               <div wicket:id="errors"></div>
+       </div>
+</wicket:panel>
+</html>
\ No newline at end of file


Reply via email to