You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openmeetings.apache.org by "seba.wagner@gmail.com" <se...@gmail.com> on 2012/09/30 09:59:33 UTC

Re: svn commit: r1391961 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ data/basic/dao/ persistence/beans/basic/ remote/ web/components/admin/servers/

++ I hope you don't mind if I complete the header javaDoc of the classes
with the author information including your name :)

Sebastoan

2012/9/30 seba.wagner@gmail.com <se...@gmail.com>

> Hi Maxim,
>
> public Server getServerWithMinimumUsers() in the ServerDaoImpl:
> I tried to understand it but I did not fully understood the operations
> involved in that method.
>
> Could you please write a short sentence/notice in the javaDoc at this
> method explaining it?
>
> Thanks!
> Sebastian
>
> ---------- Forwarded message ----------
> From: <se...@apache.org>
> Date: 2012/9/30
> Subject: svn commit: r1391961 - in
> /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
> axis/services/ data/basic/dao/ persistence/beans/basic/ remote/
> web/components/admin/servers/
> To: openmeetings-commits@incubator.apache.org
>
>
> Author: sebawagner
> Date: Sun Sep 30 07:52:45 2012
> New Revision: 1391961
>
> URL: http://svn.apache.org/viewvc?rev=1391961&view=rev
> Log:
> OPENMEETINGS-434 complete Server/serverDaoImpl CRUD via Wicket, add
> "comments,inserted,insertedby,updated,updatedby" fields in Server entity
>
> Modified:
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
> Sun Sep 30 07:52:45 2012
> @@ -62,7 +62,7 @@ public class ServerWebService {
>                 Long user_level =
> userManagement.getUserLevelByID(users_id);
>
>                 if (authLevelManagement.checkWebServiceLevel(user_level)) {
> -                       return serversDao.getServerList(start,
> max).toArray(new Server[0]);
> +                       return serversDao.get(start, max).toArray(new
> Server[0]);
>                 } else {
>                         log.warn("Insuffisient permissions");
>                         return null;
> @@ -81,7 +81,7 @@ public class ServerWebService {
>                 Long user_level =
> userManagement.getUserLevelByID(users_id);
>
>                 if (authLevelManagement.checkWebServiceLevel(user_level)) {
> -                       return (int)serversDao.getServerCount();
> +                       return (int)serversDao.count();
>                 } else {
>                         log.warn("Insuffisient permissions");
>                         return -1;
> @@ -123,7 +123,7 @@ public class ServerWebService {
>                 Long user_level =
> userManagement.getUserLevelByID(users_id);
>
>                 if (authLevelManagement.checkWebServiceLevel(user_level)) {
> -                       return serversDao.deleteServer(id);
> +                       return serversDao.delete(id);
>                 } else {
>                         log.warn("Insuffisient permissions");
>                         return false;
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
> Sun Sep 30 07:52:45 2012
> @@ -18,27 +18,47 @@
>   */
>  package org.apache.openmeetings.data.basic.dao;
>
> +import java.util.Date;
>  import java.util.List;
>
>  import javax.persistence.EntityManager;
>  import javax.persistence.NoResultException;
>  import javax.persistence.PersistenceContext;
> +import javax.persistence.PersistenceException;
>  import javax.persistence.TypedQuery;
>
>  import org.apache.openmeetings.OpenmeetingsVariables;
> +import org.apache.openmeetings.data.OmDAO;
> +import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
>  import org.apache.openmeetings.persistence.beans.basic.Server;
>  import org.red5.logging.Red5LoggerFactory;
>  import org.slf4j.Logger;
> +import org.springframework.beans.factory.annotation.Autowired;
>  import org.springframework.transaction.annotation.Transactional;
>
> +/**
> + *
> + * CRUD for {@link Server}
> + *
> + * @author solomax, swagner
> + *
> + */
>  @Transactional
> -public class ServerDaoImpl {
> +public class ServerDaoImpl implements OmDAO<Server> {
>         private static final Logger log = Red5LoggerFactory.getLogger(
>                         ServerDaoImpl.class,
> OpenmeetingsVariables.webAppRootKey);
>
>         @PersistenceContext
>         private EntityManager em;
>
> +       @Autowired
> +       private UsersDaoImpl usersDao;
> +
> +       /**
> +        * Get a list of all available servers
> +        *
> +        * @return
> +        */
>         public List<Server> getServerList() {
>                 log.debug("getServerList enter");
>                 TypedQuery<Server> q = em.createNamedQuery("getAllServers",
> @@ -46,8 +66,12 @@ public class ServerDaoImpl {
>                 return q.getResultList();
>         }
>
> -
> -       public List<Server> getServerList(int start, int max) {
> +       /*
> +        * (non-Javadoc)
> +        *
> +        * @see org.apache.openmeetings.data.OmDAO#get(int, int)
> +        */
> +       public List<Server> get(int start, int max) {
>                 log.debug("getServerList enter");
>                 TypedQuery<Server> q = em.createNamedQuery("getAllServers",
>                                 Server.class);
> @@ -57,14 +81,24 @@ public class ServerDaoImpl {
>                 return q.getResultList();
>         }
>
> -       public long getServerCount() {
> +       /*
> +        * (non-Javadoc)
> +        *
> +        * @see org.apache.openmeetings.data.OmDAO#count()
> +        */
> +       public long count() {
>                 log.debug("getServerCount enter");
>                 TypedQuery<Long> q = em.createNamedQuery("getServerCount",
> Long.class);
>
>                 return q.getSingleResult();
>         }
>
> -       public Server getServer(long id) {
> +       /*
> +        * (non-Javadoc)
> +        *
> +        * @see org.apache.openmeetings.data.OmDAO#get(long)
> +        */
> +       public Server get(long id) {
>                 Server result = null;
>                 log.debug("getServer enter, id = " + id);
>                 TypedQuery<Server> q =
> em.createNamedQuery("getServerById", Server.class);
> @@ -77,6 +111,12 @@ public class ServerDaoImpl {
>                 return result;
>         }
>
> +       /**
> +        * Get server by its address
> +        *
> +        * @param address
> +        * @return
> +        */
>         public Server getServerByAddress(String address) {
>                 log.debug("getServer enter, address = " + address);
>                 TypedQuery<Server> q =
> em.createNamedQuery("getServerByAddress", Server.class);
> @@ -85,6 +125,11 @@ public class ServerDaoImpl {
>                 return list.size() > 0 ? list.get(0) : null;
>         }
>
> +       /**
> +        * Get the number of minimum users for a server(?)
> +        *
> +        * @return
> +        */
>         public Server getServerWithMinimumUsers() {
>                 Server result = null;
>                 log.debug("getServerWithMinimumUsers enter");
> @@ -95,7 +140,7 @@ public class ServerDaoImpl {
>                         List<Object> r = q1.getResultList();
>                         if (!r.isEmpty()) {
>                                 // get server id from first line
> -                               result =
> getServer((Long)((Object[])r.get(0))[0]);
> +                               result =
> get((Long)((Object[])r.get(0))[0]);
>                         }
>                 } else {
>                         result = l.get(0);
> @@ -103,8 +148,17 @@ public class ServerDaoImpl {
>                 return result;
>         }
>
> +       /**
> +        * @deprecated user standard mechanism of
> +        *             {@link
> OmDAO#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
> +        * @param id
> +        * @param name
> +        * @param address
> +        * @return
> +        */
> +       @Deprecated
>         public Server saveServer(long id, String name, String address) {
> -               Server s = getServer(id);
> +               Server s = get(id);
>                 if (s == null) {
>                         s = new Server();
>                 }
> @@ -114,8 +168,15 @@ public class ServerDaoImpl {
>                 return em.merge(s);
>         }
>
> -       public boolean deleteServer(long id) {
> -               Server s = getServer(id);
> +       /**
> +        * @deprecated use standard mechanism of
> +        *             {@link
> OmDAO#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
> +        * @param id
> +        * @return
> +        */
> +       @Deprecated
> +       public boolean delete(long id) {
> +               Server s = get(id);
>                 if (s == null) {
>                         return false;
>                 }
> @@ -124,4 +185,45 @@ public class ServerDaoImpl {
>
>                 return true;
>         }
> +
> +       /*
> +        * (non-Javadoc)
> +        *
> +        * @see
> +        *
> org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
> +        * .beans.OmEntity, long)
> +        */
> +       public void update(Server entity, long userId) {
> +               try {
> +                       if (entity.getId() <= 0) {
> +                               entity.setInserted(new Date());
> +                               entity.setInsertedby(usersDao.get(userId));
> +                               entity.setDeleted(false);
> +                               em.persist(entity);
> +                       } else {
> +                               entity.setUpdated(new Date());
> +                               entity.setUpdatedby(usersDao.get(userId));
> +                               entity.setDeleted(false);
> +                               em.merge(entity);
> +                       }
> +               } catch (PersistenceException ex) {
> +                       log.error("[update LdapConfig]", ex);
> +               }
> +       }
> +
> +       /*
> +        * (non-Javadoc)
> +        *
> +        * @see
> +        *
> org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
> +        * .beans.OmEntity, long)
> +        */
> +       public void delete(Server entity, long userId) {
> +               if (entity.getId() >= 0) {
> +                       entity.setUpdated(new Date());
> +                       entity.setUpdatedby(usersDao.get(userId));
> +                       entity.setDeleted(true);
> +                       em.merge(entity);
> +               }
> +       }
>  }
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
> Sun Sep 30 07:52:45 2012
> @@ -19,73 +19,97 @@
>  package org.apache.openmeetings.persistence.beans.basic;
>
>  import java.io.Serializable;
> +import java.util.Date;
>
>  import javax.persistence.Column;
>  import javax.persistence.Entity;
> +import javax.persistence.FetchType;
>  import javax.persistence.GeneratedValue;
>  import javax.persistence.GenerationType;
>  import javax.persistence.Id;
> +import javax.persistence.JoinColumn;
> +import javax.persistence.Lob;
> +import javax.persistence.ManyToOne;
>  import javax.persistence.NamedQueries;
>  import javax.persistence.NamedQuery;
>  import javax.persistence.Table;
>
>  import org.apache.openmeetings.persistence.beans.OmEntity;
> +import org.apache.openmeetings.persistence.beans.user.Users;
>  import org.simpleframework.xml.Element;
>  import org.simpleframework.xml.Root;
>
>  @Entity
>  @NamedQueries({
> -       @NamedQuery(name="getAllServers", query="SELECT s FROM Server s
> WHERE s.deleted = false")
> -       , @NamedQuery(name="getServerCount", query="SELECT COUNT(s) FROM
> Server s WHERE s.deleted = false")
> -       , @NamedQuery(name="getServerById", query="SELECT s FROM Server s
> WHERE s.deleted = false AND s.id = :id")
> -       , @NamedQuery(name="getServerByAddress", query="SELECT s FROM
> Server s WHERE s.deleted = false AND s.address = :address")
> -       , @NamedQuery(name="getServersWithNoUsers"
> -               , query="SELECT s FROM Server s WHERE s.deleted = false
> AND s.id NOT IN (SELECT u.server.id FROM Users u where u.server.id IS NOT
> NULL)")
> -       , @NamedQuery(name="getServerWithMinimumUsers"
> -               , query="SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN
> u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt")
> -})
> +               @NamedQuery(name = "getAllServers", query = "SELECT s FROM
> Server s WHERE s.deleted = false"),
> +               @NamedQuery(name = "getServerCount", query = "SELECT
> COUNT(s) FROM Server s WHERE s.deleted = false"),
> +               @NamedQuery(name = "getServerById", query = "SELECT s FROM
> Server s WHERE s.deleted = false AND s.id = :id"),
> +               @NamedQuery(name = "getServerByAddress", query = "SELECT s
> FROM Server s WHERE s.deleted = false AND s.address = :address"),
> +               @NamedQuery(name = "getServersWithNoUsers", query =
> "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT
> u.server.id FROM Users u where u.server.id IS NOT NULL)"),
> +               @NamedQuery(name = "getServerWithMinimumUsers", query =
> "SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN u.server s WHERE
> s.deleted = false GROUP BY s.id ORDER BY cnt") })
>  @Table(name = "server")
>  @Root
>  public class Server implements Serializable, OmEntity {
> +
>         private static final long serialVersionUID = -6822732074549167727L;
> +
>         @Id
>         @GeneratedValue(strategy = GenerationType.IDENTITY)
> -       @Column(name="id")
> -       @Element(data=true)
> -       private Long id;
> -
> -       @Column(name="name")
> -       @Element(data=true)
> +       @Column(name = "id")
> +       @Element(data = true)
> +       private long id = 0;
> +
> +       @Column(name = "name")
> +       @Element(data = true)
>         private String name;
> -
> -       @Column(name="address")
> -       @Element(data=true)
> +
> +       @Column(name = "address")
> +       @Element(data = true)
>         private String address;
> -
> -       @Column(name="deleted", nullable=false)
> -       @Element(data=true)
> +
> +       @Column(name = "inserted")
> +       public Date inserted;
> +
> +       @Column(name = "updated")
> +       public Date updated;
> +
> +       @ManyToOne(fetch = FetchType.EAGER)
> +       @JoinColumn(name = "insertedby_id", updatable = true, insertable =
> true)
> +       public Users insertedby;
> +
> +       @ManyToOne(fetch = FetchType.EAGER)
> +       @JoinColumn(name = "updatedby_id", updatable = true, insertable =
> true)
> +       public Users updatedby;
> +
> +       @Lob
> +       @Column(name = "comment_field", length = 2048)
> +       @Element(data = true, required = false)
> +       private String comment;
> +
> +       @Column(name = "deleted", nullable = false)
> +       @Element(data = true)
>         private boolean deleted = false;
> -
> +
>         public Long getId() {
>                 return id;
>         }
> -
> +
>         public void setId(Long id) {
>                 this.id = id;
>         }
> -
> +
>         public String getName() {
>                 return name;
>         }
> -
> +
>         public void setName(String name) {
>                 this.name = name;
>         }
> -
> +
>         public String getAddress() {
>                 return address;
>         }
> -
> +
>         public void setAddress(String address) {
>                 this.address = address;
>         }
> @@ -98,6 +122,46 @@ public class Server implements Serializa
>                 this.deleted = deleted;
>         }
>
> +       public Date getInserted() {
> +               return inserted;
> +       }
> +
> +       public void setInserted(Date inserted) {
> +               this.inserted = inserted;
> +       }
> +
> +       public Date getUpdated() {
> +               return updated;
> +       }
> +
> +       public void setUpdated(Date updated) {
> +               this.updated = updated;
> +       }
> +
> +       public Users getInsertedby() {
> +               return insertedby;
> +       }
> +
> +       public void setInsertedby(Users insertedby) {
> +               this.insertedby = insertedby;
> +       }
> +
> +       public Users getUpdatedby() {
> +               return updatedby;
> +       }
> +
> +       public void setUpdatedby(Users updatedby) {
> +               this.updatedby = updatedby;
> +       }
> +
> +       public String getComment() {
> +               return comment;
> +       }
> +
> +       public void setComment(String comment) {
> +               this.comment = comment;
> +       }
> +
>         @Override
>         public String toString() {
>                 return "Server [id=" + id + ", name=" + name + ",
> address=" + address
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
> Sun Sep 30 07:52:45 2012
> @@ -699,7 +699,7 @@ public class ConferenceService {
>                         if (roomId > -1 && serverId > -1) {
>                                 try {
>                                         Rooms room =
> roommanagement.getRoomById(roomId);
> -
> room.setServer(serverDao.getServer(serverId));
> +
> room.setServer(serverDao.get(serverId));
>
> roommanagement.updateRoomObject(room);
>                                 } catch (Exception e) {
>                                         log.error("Error while setting
> server.");
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
> Sun Sep 30 07:52:45 2012
> @@ -495,7 +495,7 @@ public class UserService {
>                         if (userId > -1 && serverId > -1) {
>                                 try {
>                                         Users user =
> userManagement.getUserById(userId);
> -
> user.setServer(serverDao.getServer(serverId));
> +
> user.setServer(serverDao.get(serverId));
>                                         userManagement.updateUser(user);
>                                 } catch (Exception e) {
>                                         log.error("Error while setting
> server.");
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
> Sun Sep 30 07:52:45 2012
> @@ -18,24 +18,90 @@
>   */
>  package org.apache.openmeetings.web.components.admin.servers;
>
> +import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>  import org.apache.openmeetings.persistence.beans.basic.Server;
> +import org.apache.openmeetings.web.app.Application;
> +import org.apache.openmeetings.web.app.WebSession;
>  import org.apache.openmeetings.web.components.admin.AdminBaseForm;
> +import org.apache.wicket.ajax.AjaxRequestTarget;
>  import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
> +import org.apache.wicket.datetime.markup.html.basic.DateLabel;
> +import org.apache.wicket.markup.html.WebMarkupContainer;
> +import org.apache.wicket.markup.html.basic.Label;
> +import org.apache.wicket.markup.html.form.Form;
> +import org.apache.wicket.markup.html.form.RequiredTextField;
> +import org.apache.wicket.markup.html.form.TextArea;
>  import org.apache.wicket.model.CompoundPropertyModel;
>  import org.apache.wicket.util.time.Duration;
>
> +/**
> + * Form component to insert/update/delete {@link Server}
> + *
> + * @author swagner
> + *
> + */
>  public class ServerForm extends AdminBaseForm<Server> {
>
> +       private final WebMarkupContainer listContainer;
>         private static final long serialVersionUID = 1L;
>
> -       public ServerForm(String id, final Server server) {
> +       public ServerForm(String id, WebMarkupContainer listContainer,
> +                       final Server server) {
>                 super(id, new CompoundPropertyModel<Server>(server));
>                 setOutputMarkupId(true);
> +               this.listContainer = listContainer;
> +
> +               add(new RequiredTextField<String>("name"));
> +               add(new RequiredTextField<String>("address"));
> +               add(DateLabel.forDatePattern("inserted", "dd.MM.yyyy
> HH:mm:ss"));
> +               add(new Label("insertedby.login"));
> +               add(DateLabel.forDatePattern("updated", "dd.MM.yyyy
> HH:mm:ss"));
> +               add(new Label("updatedby.login"));
> +               add(new TextArea<String>("comment"));
>
> -
>                 // attach an ajax validation behavior to all form
> component's keydown
>                 // event and throttle it down to once per second
>                 AjaxFormValidatingBehavior.addToAllFormComponents(this,
> "keydown",
>                                 Duration.ONE_SECOND);
>         }
> +
> +       @Override
> +       protected void onSaveSubmit(AjaxRequestTarget target, Form<?>
> form) {
> +
> Application.getBean(ServerDaoImpl.class).update(getModelObject(),
> +                               WebSession.getUserId());
> +               Server server =
> Application.getBean(ServerDaoImpl.class).get(
> +                               getModelObject().getId());
> +               this.setModelObject(server);
> +               target.add(this);
> +               target.add(listContainer);
> +       }
> +
> +       @Override
> +       protected void onNewSubmit(AjaxRequestTarget target, Form<?> form)
> {
> +               this.setModelObject(new Server());
> +               target.add(this);
> +       }
> +
> +       @Override
> +       protected void onRefreshSubmit(AjaxRequestTarget target, Form<?>
> form) {
> +               Server server = this.getModelObject();
> +               if (server.getId() <= 0) {
> +                       server =
> Application.getBean(ServerDaoImpl.class).get(
> +                                       server.getId());
> +               } else {
> +                       server = new Server();
> +               }
> +               this.setModelObject(server);
> +               target.add(this);
> +       }
> +
> +       @Override
> +       protected void onDeleteSubmit(AjaxRequestTarget target, Form<?>
> form) {
> +
> Application.getBean(ServerDaoImpl.class).delete(this.getModelObject(),
> +                               WebSession.getUserId());
> +               this.setModelObject(new Server());
> +               target.add(listContainer);
> +               target.add(this);
> +       }
> +
>  }
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
> Sun Sep 30 07:52:45 2012
> @@ -49,6 +49,20 @@
>                                 <td class="adminPanelColumnForm">
>                                         <form wicket:id="form"
> class="adminForm">
>                                                 <div
> wicket:id="buttons"></div>
> +                                               <wicket:ommessage
> key="1500" />: <input type="text" wicket:id="name"/>
> +                                   <br/>
> +                                   <wicket:ommessage key="1501" />:
> <input type="text" wicket:id="address"/>
> +                                   <br/>
> +                                               <wicket:ommessage
> key="1110" />: <span wicket:id="inserted"/>
> +                                   <br/>
> +                                   <wicket:ommessage key="1111" />: <span
> wicket:id="insertedby.login"/>
> +                                   <br/>
> +                                   <wicket:ommessage key="1112" />: <span
> wicket:id="updated"/>
> +                                   <br/>
> +                                   <wicket:ommessage key="1113" />: <span
> wicket:id="updatedby.login"/>
> +                                   <br/>
> +                                   <wicket:ommessage key="270" />:
> <textarea wicket:id="comment"/>
> +                                   <br/>
>                                         </form>
>                                 </td>
>                         </tr>
>
> Modified:
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
> URL:
> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>
> ==============================================================================
> ---
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
> (original)
> +++
> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
> Sun Sep 30 07:52:45 2012
> @@ -18,13 +18,11 @@
>   */
>  package org.apache.openmeetings.web.components.admin.servers;
>
> -import java.util.Iterator;
> -
>  import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>  import org.apache.openmeetings.persistence.beans.basic.Server;
> -import org.apache.openmeetings.web.app.Application;
>  import org.apache.openmeetings.web.components.admin.AdminPanel;
>  import org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
> +import org.apache.openmeetings.web.data.OmDataProvider;
>  import org.apache.wicket.AttributeModifier;
>  import org.apache.wicket.ajax.AjaxEventBehavior;
>  import org.apache.wicket.ajax.AjaxRequestTarget;
> @@ -32,10 +30,13 @@ import org.apache.wicket.markup.html.Web
>  import org.apache.wicket.markup.html.basic.Label;
>  import org.apache.wicket.markup.repeater.Item;
>  import org.apache.wicket.markup.repeater.data.DataView;
> -import org.apache.wicket.markup.repeater.data.IDataProvider;
> -import org.apache.wicket.model.CompoundPropertyModel;
> -import org.apache.wicket.model.IModel;
>
> +/**
> + * Form component with list and form to manipulate {@link Server}
> + *
> + * @author swagner
> + *
> + */
>  public class ServersPanel extends AdminPanel {
>
>         private static final long serialVersionUID = -1L;
> @@ -43,26 +44,8 @@ public class ServersPanel extends AdminP
>
>         public ServersPanel(String id) {
>                 super(id);
> -               DataView<Server> dataView = new
> DataView<Server>("serverList", new IDataProvider<Server>(){
> -                       private static final long serialVersionUID = -1L;
> -
> -                       public void detach() {
> -                               //empty
> -                       }
> -
> -                       public Iterator<? extends Server> iterator(long
> first, long count) {
> -                               return
> Application.getBean(ServerDaoImpl.class).getServerList((int)first,
> (int)count).iterator();
> -                       }
> -
> -                       public long size() {
> -                               return
> Application.getBean(ServerDaoImpl.class).getServerCount();
> -                       }
> -
> -                       public IModel<Server> model(Server object) {
> -                               return new
> CompoundPropertyModel<Server>(object);
> -                       }
> -
> -               }) {
> +               DataView<Server> dataView = new
> DataView<Server>("serverList",
> +                               new
> OmDataProvider<Server>(ServerDaoImpl.class)) {
>                         private static final long serialVersionUID =
> 8715559628755439596L;
>
>                         @Override
> @@ -95,7 +78,7 @@ public class ServersPanel extends AdminP
>                 });
>
>                 Server Server = new Server();
> -               form = new ServerForm("form", Server);
> +               form = new ServerForm("form", listContainer, Server);
>          add(form);
>
>         }
>
>
>
>
>
> --
> Sebastian Wagner
> https://twitter.com/#!/dead_lock
> http://www.webbase-design.de
> http://www.wagner-sebastian.com
> seba.wagner@gmail.com
>



-- 
Sebastian Wagner
https://twitter.com/#!/dead_lock
http://www.webbase-design.de
http://www.wagner-sebastian.com
seba.wagner@gmail.com

Re: svn commit: r1391961 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ data/basic/dao/ persistence/beans/basic/ remote/ web/components/admin/servers/

Posted by "seba.wagner@gmail.com" <se...@gmail.com>.
OmLanguage is fine, similar to OmTimeZone.
That should be ok.

SOAPLogin and Invitations have quite different attributes. How do you want
to merge those tables?

SOAPLogin:
    private long soapLoginId;
    private String hash;
    private Long room_id;
    private String sessionHash;
    private Date created;
    private Boolean used;
    private Date useDate;
    private Boolean becomemoderator;
    private Boolean showAudioVideoTest;
    private Boolean allowSameURLMultipleTimes;
    private Boolean showNickNameDialog;
    private String clientURL;
    private Long roomRecordingId;
    private String landingZone;
    private Boolean allowRecording;

Invitations:
    private Long invitations_id;
    private Users invitedBy;
    private Date starttime;
    private Date updatetime;
    private boolean deleted;
    private Rooms room;
    private String hash;
    private String invitedname;
    private String invitedEMail;
    private Boolean isPasswordProtected;
    private String invitationpass;
    private String conferencedomain;
    private Boolean isValidByTime = false;
    private Date validFrom;
    private Date validTo;
    private Boolean canBeUsedOnlyOneTime = false;
    private Boolean invitationWasUsed = false;
    private Long appointmentId;
    private String baseUrl;
    private boolean allowEntry;

The only fields with similar function in both tables are:
 Id,
 room
 hash
 starttime
 updatetime
 used

I don't think that this is enough to merge it.
Also I think it is rather confusing as the logic that would fill this
merged tables would be in two completely separated mechanism's.

Sebastian

2012/9/30 Maxim Solodovnik <so...@gmail.com>

> *SOAPLogin and Invitations are not that similar.
> both of them are used to get hash, both stores user the hash is generated
> for.
> I feel its functionality is the same (or very similar)
>
> *Will result in that the Object "Fieldvalues" has a primary key called
> "fieldvalues_id"
> OK, since we can easily change it the future
>
> *"Language" might be a reserved word
> OmLanguage? :)
>
> On Sun, Sep 30, 2012 at 10:42 PM, seba.wagner@gmail.com <
> seba.wagner@gmail.com> wrote:
>
>> OpenXGReturnObject can be removed, it was part of the OpenXG integration
>> to Kamailio (former OpenSER).
>>
>> SOAPLogin and Invitations are not that similar.
>> SOAPLogin and SessionData are kind of similar. But SessionData is cleaned
>> by a Scheduler every xx minutes so I don't want to mix those tables (at the
>> moment).
>>
>> Changing table names to singular => ok
>>
>> This renaming action:
>>
>> Fieldlanguage => Language
>> Fieldvalues => Label
>> FieldLanguageValue => LabelValue
>> => Will result in that the Object "Fieldvalues" has a primary key called
>> "fieldvalues_id". Are you okay with that? We might change attribute names
>> on a later iteration. But for now the attribute names will then be quite
>> different from the Table name.
>>
>> "Language" might be a reserved word in some database vendors. Do you have
>> other ideas for this table/Object ?
>>
>>
>> Sebastian
>>
>> 2012/9/30 Maxim Solodovnik <so...@gmail.com>
>>
>>> I agree :))
>>>
>>> couple of things
>>>
>>> I would recommend to:
>>>
>>> Fieldlanguagesvalues => FieldLanguageValue
>>>
>>> Or maybe even better:
>>> Fieldlanguage => Language
>>> Fieldvalues => Label
>>> FieldLanguageValue => LabelValue
>>>
>>> I would change table name from users to user since it is common practice
>>> (like mysql.user _not_ mysql.users)
>>>
>>> i also don't really like
>>> FileExplorerItem => File (or FileItem)
>>> and
>>> FlvRecording => Recording (FlvRecordingLog, FlvRecordingMetaData,
>>> FlvRecordingMetaDelta)
>>>
>>> also I'm not sure why do we need OpenXGReturnObject, never use it :(
>>>
>>> Additionally I feel SOAPLogin and Invitations are similar objects, do we
>>> really need both?
>>>
>>>  On Sun, Sep 30, 2012 at 10:04 PM, seba.wagner@gmail.com <
>>> seba.wagner@gmail.com> wrote:
>>>
>>>> Thanks Maxim!
>>>>
>>>> I think we might also discuss those issues:
>>>>
>>>> I would like to rename some classes:
>>>> OmDAO => OmDao
>>>> Users => User
>>>> Adresses => Address
>>>> States => State
>>>> ErrorValues => ErrorValue
>>>> AppointmentReminderTyps => AppointmentReminderType
>>>> Organisation_Users => OrganisationUser
>>>> Invitations => Invitation
>>>> Fieldlanguagesvalues => Fieldlanguagesvalue
>>>> Fieldvalues => Fieldvalue
>>>> RoomPollAnswers => RoomPollAnswer
>>>> RoomModerators => RoomModerator
>>>> Rooms_Organisation => RoomOrganisation
>>>> Rooms => Room
>>>> RoomTypes => RoomType
>>>> PrivateMessages => PrivateMessage
>>>> Salutations => Salutation
>>>> UserContacts => UserContact
>>>>
>>>> The table name should stay the same, for example:
>>>> Java Object: User => Table name: users
>>>> From my point of view a table is a List of users, so in that sense
>>>> plural is ok.
>>>>
>>>> This refactoring will only affect the Java Object _names_ NO attribute
>>>> name changes.
>>>> Attribute names will stay the same (for now). You might claim that this
>>>> is only 50% of the work, but it would otherwise need heavy refactoring all
>>>> over the existing OpenLaszlo client. And we can't handle that as we would
>>>> rely on search+find mechanism.
>>>>
>>>> So for now it will be that the "User"-Object has an attribute of Type
>>>> "Address" but which attribute name is "adresses". Which is inconsistent but
>>>> from my point of view a step in the right direction.
>>>>
>>>> As soon as we have a Wicket only interface, we can effectively
>>>> refactor/rename attribute names and Eclipse will update most of the
>>>> references.
>>>>
>>>> What do you think about it?
>>>> How would this change affect the Backup Export/Import from your point
>>>> of view? Would it work (theoretically) or is there already an issue with
>>>> this change?
>>>>
>>>> Sebastian
>>>>
>>>> 2012/9/30 Maxim Solodovnik <so...@gmail.com>
>>>>
>>>>> done.
>>>>>
>>>>> As you wish :) I'm not adding it myself since I believe it is always
>>>>> possible to find via SVN history who was the author :)
>>>>>
>>>>>
>>>>> On Sun, Sep 30, 2012 at 2:59 PM, seba.wagner@gmail.com <
>>>>> seba.wagner@gmail.com> wrote:
>>>>>
>>>>>> ++ I hope you don't mind if I complete the header javaDoc of the
>>>>>> classes with the author information including your name :)
>>>>>>
>>>>>> Sebastoan
>>>>>>
>>>>>> 2012/9/30 seba.wagner@gmail.com <se...@gmail.com>
>>>>>>
>>>>>> Hi Maxim,
>>>>>>>
>>>>>>> public Server getServerWithMinimumUsers() in the ServerDaoImpl:
>>>>>>> I tried to understand it but I did not fully understood the
>>>>>>> operations involved in that method.
>>>>>>>
>>>>>>> Could you please write a short sentence/notice in the javaDoc at
>>>>>>> this method explaining it?
>>>>>>>
>>>>>>> Thanks!
>>>>>>> Sebastian
>>>>>>>
>>>>>>> ---------- Forwarded message ----------
>>>>>>> From: <se...@apache.org>
>>>>>>> Date: 2012/9/30
>>>>>>> Subject: svn commit: r1391961 - in
>>>>>>> /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
>>>>>>> axis/services/ data/basic/dao/ persistence/beans/basic/ remote/
>>>>>>> web/components/admin/servers/
>>>>>>> To: openmeetings-commits@incubator.apache.org
>>>>>>>
>>>>>>>
>>>>>>> Author: sebawagner
>>>>>>> Date: Sun Sep 30 07:52:45 2012
>>>>>>> New Revision: 1391961
>>>>>>>
>>>>>>> URL: http://svn.apache.org/viewvc?rev=1391961&view=rev
>>>>>>> Log:
>>>>>>> OPENMEETINGS-434 complete Server/serverDaoImpl CRUD via Wicket, add
>>>>>>> "comments,inserted,insertedby,updated,updatedby" fields in Server entity
>>>>>>>
>>>>>>> Modified:
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>>>
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -62,7 +62,7 @@ public class ServerWebService {
>>>>>>>                 Long user_level =
>>>>>>> userManagement.getUserLevelByID(users_id);
>>>>>>>
>>>>>>>                 if
>>>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>>>> -                       return serversDao.getServerList(start,
>>>>>>> max).toArray(new Server[0]);
>>>>>>> +                       return serversDao.get(start,
>>>>>>> max).toArray(new Server[0]);
>>>>>>>                 } else {
>>>>>>>                         log.warn("Insuffisient permissions");
>>>>>>>                         return null;
>>>>>>> @@ -81,7 +81,7 @@ public class ServerWebService {
>>>>>>>                 Long user_level =
>>>>>>> userManagement.getUserLevelByID(users_id);
>>>>>>>
>>>>>>>                 if
>>>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>>>> -                       return (int)serversDao.getServerCount();
>>>>>>> +                       return (int)serversDao.count();
>>>>>>>                 } else {
>>>>>>>                         log.warn("Insuffisient permissions");
>>>>>>>                         return -1;
>>>>>>> @@ -123,7 +123,7 @@ public class ServerWebService {
>>>>>>>                 Long user_level =
>>>>>>> userManagement.getUserLevelByID(users_id);
>>>>>>>
>>>>>>>                 if
>>>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>>>> -                       return serversDao.deleteServer(id);
>>>>>>> +                       return serversDao.delete(id);
>>>>>>>                 } else {
>>>>>>>                         log.warn("Insuffisient permissions");
>>>>>>>                         return false;
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -18,27 +18,47 @@
>>>>>>>   */
>>>>>>>  package org.apache.openmeetings.data.basic.dao;
>>>>>>>
>>>>>>> +import java.util.Date;
>>>>>>>  import java.util.List;
>>>>>>>
>>>>>>>  import javax.persistence.EntityManager;
>>>>>>>  import javax.persistence.NoResultException;
>>>>>>>  import javax.persistence.PersistenceContext;
>>>>>>> +import javax.persistence.PersistenceException;
>>>>>>>  import javax.persistence.TypedQuery;
>>>>>>>
>>>>>>>  import org.apache.openmeetings.OpenmeetingsVariables;
>>>>>>> +import org.apache.openmeetings.data.OmDAO;
>>>>>>> +import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
>>>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>>>>  import org.red5.logging.Red5LoggerFactory;
>>>>>>>  import org.slf4j.Logger;
>>>>>>> +import org.springframework.beans.factory.annotation.Autowired;
>>>>>>>  import org.springframework.transaction.annotation.Transactional;
>>>>>>>
>>>>>>> +/**
>>>>>>> + *
>>>>>>> + * CRUD for {@link Server}
>>>>>>> + *
>>>>>>> + * @author solomax, swagner
>>>>>>> + *
>>>>>>> + */
>>>>>>>  @Transactional
>>>>>>> -public class ServerDaoImpl {
>>>>>>> +public class ServerDaoImpl implements OmDAO<Server> {
>>>>>>>         private static final Logger log =
>>>>>>> Red5LoggerFactory.getLogger(
>>>>>>>                         ServerDaoImpl.class,
>>>>>>> OpenmeetingsVariables.webAppRootKey);
>>>>>>>
>>>>>>>         @PersistenceContext
>>>>>>>         private EntityManager em;
>>>>>>>
>>>>>>> +       @Autowired
>>>>>>> +       private UsersDaoImpl usersDao;
>>>>>>> +
>>>>>>> +       /**
>>>>>>> +        * Get a list of all available servers
>>>>>>> +        *
>>>>>>> +        * @return
>>>>>>> +        */
>>>>>>>         public List<Server> getServerList() {
>>>>>>>                 log.debug("getServerList enter");
>>>>>>>                 TypedQuery<Server> q =
>>>>>>> em.createNamedQuery("getAllServers",
>>>>>>> @@ -46,8 +66,12 @@ public class ServerDaoImpl {
>>>>>>>                 return q.getResultList();
>>>>>>>         }
>>>>>>>
>>>>>>> -
>>>>>>> -       public List<Server> getServerList(int start, int max) {
>>>>>>> +       /*
>>>>>>> +        * (non-Javadoc)
>>>>>>> +        *
>>>>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(int, int)
>>>>>>> +        */
>>>>>>> +       public List<Server> get(int start, int max) {
>>>>>>>                 log.debug("getServerList enter");
>>>>>>>                 TypedQuery<Server> q =
>>>>>>> em.createNamedQuery("getAllServers",
>>>>>>>                                 Server.class);
>>>>>>> @@ -57,14 +81,24 @@ public class ServerDaoImpl {
>>>>>>>                 return q.getResultList();
>>>>>>>         }
>>>>>>>
>>>>>>> -       public long getServerCount() {
>>>>>>> +       /*
>>>>>>> +        * (non-Javadoc)
>>>>>>> +        *
>>>>>>> +        * @see org.apache.openmeetings.data.OmDAO#count()
>>>>>>> +        */
>>>>>>> +       public long count() {
>>>>>>>                 log.debug("getServerCount enter");
>>>>>>>                 TypedQuery<Long> q =
>>>>>>> em.createNamedQuery("getServerCount", Long.class);
>>>>>>>
>>>>>>>                 return q.getSingleResult();
>>>>>>>         }
>>>>>>>
>>>>>>> -       public Server getServer(long id) {
>>>>>>> +       /*
>>>>>>> +        * (non-Javadoc)
>>>>>>> +        *
>>>>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(long)
>>>>>>> +        */
>>>>>>> +       public Server get(long id) {
>>>>>>>                 Server result = null;
>>>>>>>                 log.debug("getServer enter, id = " + id);
>>>>>>>                 TypedQuery<Server> q =
>>>>>>> em.createNamedQuery("getServerById", Server.class);
>>>>>>> @@ -77,6 +111,12 @@ public class ServerDaoImpl {
>>>>>>>                 return result;
>>>>>>>         }
>>>>>>>
>>>>>>> +       /**
>>>>>>> +        * Get server by its address
>>>>>>> +        *
>>>>>>> +        * @param address
>>>>>>> +        * @return
>>>>>>> +        */
>>>>>>>         public Server getServerByAddress(String address) {
>>>>>>>                 log.debug("getServer enter, address = " + address);
>>>>>>>                 TypedQuery<Server> q =
>>>>>>> em.createNamedQuery("getServerByAddress", Server.class);
>>>>>>> @@ -85,6 +125,11 @@ public class ServerDaoImpl {
>>>>>>>                 return list.size() > 0 ? list.get(0) : null;
>>>>>>>         }
>>>>>>>
>>>>>>> +       /**
>>>>>>> +        * Get the number of minimum users for a server(?)
>>>>>>> +        *
>>>>>>> +        * @return
>>>>>>> +        */
>>>>>>>         public Server getServerWithMinimumUsers() {
>>>>>>>                 Server result = null;
>>>>>>>                 log.debug("getServerWithMinimumUsers enter");
>>>>>>> @@ -95,7 +140,7 @@ public class ServerDaoImpl {
>>>>>>>                         List<Object> r = q1.getResultList();
>>>>>>>                         if (!r.isEmpty()) {
>>>>>>>                                 // get server id from first line
>>>>>>> -                               result =
>>>>>>> getServer((Long)((Object[])r.get(0))[0]);
>>>>>>> +                               result =
>>>>>>> get((Long)((Object[])r.get(0))[0]);
>>>>>>>                         }
>>>>>>>                 } else {
>>>>>>>                         result = l.get(0);
>>>>>>> @@ -103,8 +148,17 @@ public class ServerDaoImpl {
>>>>>>>                 return result;
>>>>>>>         }
>>>>>>>
>>>>>>> +       /**
>>>>>>> +        * @deprecated user standard mechanism of
>>>>>>> +        *             {@link
>>>>>>> OmDAO#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>>>>> +        * @param id
>>>>>>> +        * @param name
>>>>>>> +        * @param address
>>>>>>> +        * @return
>>>>>>> +        */
>>>>>>> +       @Deprecated
>>>>>>>         public Server saveServer(long id, String name, String
>>>>>>> address) {
>>>>>>> -               Server s = getServer(id);
>>>>>>> +               Server s = get(id);
>>>>>>>                 if (s == null) {
>>>>>>>                         s = new Server();
>>>>>>>                 }
>>>>>>> @@ -114,8 +168,15 @@ public class ServerDaoImpl {
>>>>>>>                 return em.merge(s);
>>>>>>>         }
>>>>>>>
>>>>>>> -       public boolean deleteServer(long id) {
>>>>>>> -               Server s = getServer(id);
>>>>>>> +       /**
>>>>>>> +        * @deprecated use standard mechanism of
>>>>>>> +        *             {@link
>>>>>>> OmDAO#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>>>>> +        * @param id
>>>>>>> +        * @return
>>>>>>> +        */
>>>>>>> +       @Deprecated
>>>>>>> +       public boolean delete(long id) {
>>>>>>> +               Server s = get(id);
>>>>>>>                 if (s == null) {
>>>>>>>                         return false;
>>>>>>>                 }
>>>>>>> @@ -124,4 +185,45 @@ public class ServerDaoImpl {
>>>>>>>
>>>>>>>                 return true;
>>>>>>>         }
>>>>>>> +
>>>>>>> +       /*
>>>>>>> +        * (non-Javadoc)
>>>>>>> +        *
>>>>>>> +        * @see
>>>>>>> +        *
>>>>>>> org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
>>>>>>> +        * .beans.OmEntity, long)
>>>>>>> +        */
>>>>>>> +       public void update(Server entity, long userId) {
>>>>>>> +               try {
>>>>>>> +                       if (entity.getId() <= 0) {
>>>>>>> +                               entity.setInserted(new Date());
>>>>>>> +
>>>>>>> entity.setInsertedby(usersDao.get(userId));
>>>>>>> +                               entity.setDeleted(false);
>>>>>>> +                               em.persist(entity);
>>>>>>> +                       } else {
>>>>>>> +                               entity.setUpdated(new Date());
>>>>>>> +
>>>>>>> entity.setUpdatedby(usersDao.get(userId));
>>>>>>> +                               entity.setDeleted(false);
>>>>>>> +                               em.merge(entity);
>>>>>>> +                       }
>>>>>>> +               } catch (PersistenceException ex) {
>>>>>>> +                       log.error("[update LdapConfig]", ex);
>>>>>>> +               }
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       /*
>>>>>>> +        * (non-Javadoc)
>>>>>>> +        *
>>>>>>> +        * @see
>>>>>>> +        *
>>>>>>> org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
>>>>>>> +        * .beans.OmEntity, long)
>>>>>>> +        */
>>>>>>> +       public void delete(Server entity, long userId) {
>>>>>>> +               if (entity.getId() >= 0) {
>>>>>>> +                       entity.setUpdated(new Date());
>>>>>>> +                       entity.setUpdatedby(usersDao.get(userId));
>>>>>>> +                       entity.setDeleted(true);
>>>>>>> +                       em.merge(entity);
>>>>>>> +               }
>>>>>>> +       }
>>>>>>>  }
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -19,73 +19,97 @@
>>>>>>>  package org.apache.openmeetings.persistence.beans.basic;
>>>>>>>
>>>>>>>  import java.io.Serializable;
>>>>>>> +import java.util.Date;
>>>>>>>
>>>>>>>  import javax.persistence.Column;
>>>>>>>  import javax.persistence.Entity;
>>>>>>> +import javax.persistence.FetchType;
>>>>>>>  import javax.persistence.GeneratedValue;
>>>>>>>  import javax.persistence.GenerationType;
>>>>>>>  import javax.persistence.Id;
>>>>>>> +import javax.persistence.JoinColumn;
>>>>>>> +import javax.persistence.Lob;
>>>>>>> +import javax.persistence.ManyToOne;
>>>>>>>  import javax.persistence.NamedQueries;
>>>>>>>  import javax.persistence.NamedQuery;
>>>>>>>  import javax.persistence.Table;
>>>>>>>
>>>>>>>  import org.apache.openmeetings.persistence.beans.OmEntity;
>>>>>>> +import org.apache.openmeetings.persistence.beans.user.Users;
>>>>>>>  import org.simpleframework.xml.Element;
>>>>>>>  import org.simpleframework.xml.Root;
>>>>>>>
>>>>>>>  @Entity
>>>>>>>  @NamedQueries({
>>>>>>> -       @NamedQuery(name="getAllServers", query="SELECT s FROM
>>>>>>> Server s WHERE s.deleted = false")
>>>>>>> -       , @NamedQuery(name="getServerCount", query="SELECT COUNT(s)
>>>>>>> FROM Server s WHERE s.deleted = false")
>>>>>>> -       , @NamedQuery(name="getServerById", query="SELECT s FROM
>>>>>>> Server s WHERE s.deleted = false AND s.id = :id")
>>>>>>> -       , @NamedQuery(name="getServerByAddress", query="SELECT s
>>>>>>> FROM Server s WHERE s.deleted = false AND s.address = :address")
>>>>>>> -       , @NamedQuery(name="getServersWithNoUsers"
>>>>>>> -               , query="SELECT s FROM Server s WHERE s.deleted =
>>>>>>> false AND s.id NOT IN (SELECT u.server.id FROM Users u where
>>>>>>> u.server.id IS NOT NULL)")
>>>>>>> -       , @NamedQuery(name="getServerWithMinimumUsers"
>>>>>>> -               , query="SELECT s.id, COUNT(u) AS cnt FROM Users u
>>>>>>> JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt")
>>>>>>> -})
>>>>>>> +               @NamedQuery(name = "getAllServers", query = "SELECT
>>>>>>> s FROM Server s WHERE s.deleted = false"),
>>>>>>> +               @NamedQuery(name = "getServerCount", query = "SELECT
>>>>>>> COUNT(s) FROM Server s WHERE s.deleted = false"),
>>>>>>> +               @NamedQuery(name = "getServerById", query = "SELECT
>>>>>>> s FROM Server s WHERE s.deleted = false AND s.id = :id"),
>>>>>>> +               @NamedQuery(name = "getServerByAddress", query =
>>>>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.address = :address"),
>>>>>>> +               @NamedQuery(name = "getServersWithNoUsers", query =
>>>>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN
>>>>>>> (SELECT u.server.id FROM Users u where u.server.id IS NOT NULL)"),
>>>>>>> +               @NamedQuery(name = "getServerWithMinimumUsers",
>>>>>>> query = "SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN u.server s
>>>>>>> WHERE s.deleted = false GROUP BY s.id ORDER BY cnt") })
>>>>>>>  @Table(name = "server")
>>>>>>>  @Root
>>>>>>>  public class Server implements Serializable, OmEntity {
>>>>>>> +
>>>>>>>         private static final long serialVersionUID =
>>>>>>> -6822732074549167727L;
>>>>>>> +
>>>>>>>         @Id
>>>>>>>         @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>>>> -       @Column(name="id")
>>>>>>> -       @Element(data=true)
>>>>>>> -       private Long id;
>>>>>>> -
>>>>>>> -       @Column(name="name")
>>>>>>> -       @Element(data=true)
>>>>>>> +       @Column(name = "id")
>>>>>>> +       @Element(data = true)
>>>>>>> +       private long id = 0;
>>>>>>> +
>>>>>>> +       @Column(name = "name")
>>>>>>> +       @Element(data = true)
>>>>>>>         private String name;
>>>>>>> -
>>>>>>> -       @Column(name="address")
>>>>>>> -       @Element(data=true)
>>>>>>> +
>>>>>>> +       @Column(name = "address")
>>>>>>> +       @Element(data = true)
>>>>>>>         private String address;
>>>>>>> -
>>>>>>> -       @Column(name="deleted", nullable=false)
>>>>>>> -       @Element(data=true)
>>>>>>> +
>>>>>>> +       @Column(name = "inserted")
>>>>>>> +       public Date inserted;
>>>>>>> +
>>>>>>> +       @Column(name = "updated")
>>>>>>> +       public Date updated;
>>>>>>> +
>>>>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>>>>> +       @JoinColumn(name = "insertedby_id", updatable = true,
>>>>>>> insertable = true)
>>>>>>> +       public Users insertedby;
>>>>>>> +
>>>>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>>>>> +       @JoinColumn(name = "updatedby_id", updatable = true,
>>>>>>> insertable = true)
>>>>>>> +       public Users updatedby;
>>>>>>> +
>>>>>>> +       @Lob
>>>>>>> +       @Column(name = "comment_field", length = 2048)
>>>>>>> +       @Element(data = true, required = false)
>>>>>>> +       private String comment;
>>>>>>> +
>>>>>>> +       @Column(name = "deleted", nullable = false)
>>>>>>> +       @Element(data = true)
>>>>>>>         private boolean deleted = false;
>>>>>>> -
>>>>>>> +
>>>>>>>         public Long getId() {
>>>>>>>                 return id;
>>>>>>>         }
>>>>>>> -
>>>>>>> +
>>>>>>>         public void setId(Long id) {
>>>>>>>                 this.id = id;
>>>>>>>         }
>>>>>>> -
>>>>>>> +
>>>>>>>         public String getName() {
>>>>>>>                 return name;
>>>>>>>         }
>>>>>>> -
>>>>>>> +
>>>>>>>         public void setName(String name) {
>>>>>>>                 this.name = name;
>>>>>>>         }
>>>>>>> -
>>>>>>> +
>>>>>>>         public String getAddress() {
>>>>>>>                 return address;
>>>>>>>         }
>>>>>>> -
>>>>>>> +
>>>>>>>         public void setAddress(String address) {
>>>>>>>                 this.address = address;
>>>>>>>         }
>>>>>>> @@ -98,6 +122,46 @@ public class Server implements Serializa
>>>>>>>                 this.deleted = deleted;
>>>>>>>         }
>>>>>>>
>>>>>>> +       public Date getInserted() {
>>>>>>> +               return inserted;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public void setInserted(Date inserted) {
>>>>>>> +               this.inserted = inserted;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public Date getUpdated() {
>>>>>>> +               return updated;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public void setUpdated(Date updated) {
>>>>>>> +               this.updated = updated;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public Users getInsertedby() {
>>>>>>> +               return insertedby;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public void setInsertedby(Users insertedby) {
>>>>>>> +               this.insertedby = insertedby;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public Users getUpdatedby() {
>>>>>>> +               return updatedby;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public void setUpdatedby(Users updatedby) {
>>>>>>> +               this.updatedby = updatedby;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public String getComment() {
>>>>>>> +               return comment;
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       public void setComment(String comment) {
>>>>>>> +               this.comment = comment;
>>>>>>> +       }
>>>>>>> +
>>>>>>>         @Override
>>>>>>>         public String toString() {
>>>>>>>                 return "Server [id=" + id + ", name=" + name + ",
>>>>>>> address=" + address
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -699,7 +699,7 @@ public class ConferenceService {
>>>>>>>                         if (roomId > -1 && serverId > -1) {
>>>>>>>                                 try {
>>>>>>>                                         Rooms room =
>>>>>>> roommanagement.getRoomById(roomId);
>>>>>>> -
>>>>>>> room.setServer(serverDao.getServer(serverId));
>>>>>>> +
>>>>>>> room.setServer(serverDao.get(serverId));
>>>>>>>
>>>>>>> roommanagement.updateRoomObject(room);
>>>>>>>                                 } catch (Exception e) {
>>>>>>>                                         log.error("Error while
>>>>>>> setting server.");
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -495,7 +495,7 @@ public class UserService {
>>>>>>>                         if (userId > -1 && serverId > -1) {
>>>>>>>                                 try {
>>>>>>>                                         Users user =
>>>>>>> userManagement.getUserById(userId);
>>>>>>> -
>>>>>>> user.setServer(serverDao.getServer(serverId));
>>>>>>> +
>>>>>>> user.setServer(serverDao.get(serverId));
>>>>>>>
>>>>>>> userManagement.updateUser(user);
>>>>>>>                                 } catch (Exception e) {
>>>>>>>                                         log.error("Error while
>>>>>>> setting server.");
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -18,24 +18,90 @@
>>>>>>>   */
>>>>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>>>>
>>>>>>> +import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>>>> +import org.apache.openmeetings.web.app.Application;
>>>>>>> +import org.apache.openmeetings.web.app.WebSession;
>>>>>>>  import org.apache.openmeetings.web.components.admin.AdminBaseForm;
>>>>>>> +import org.apache.wicket.ajax.AjaxRequestTarget;
>>>>>>>  import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
>>>>>>> +import org.apache.wicket.datetime.markup.html.basic.DateLabel;
>>>>>>> +import org.apache.wicket.markup.html.WebMarkupContainer;
>>>>>>> +import org.apache.wicket.markup.html.basic.Label;
>>>>>>> +import org.apache.wicket.markup.html.form.Form;
>>>>>>> +import org.apache.wicket.markup.html.form.RequiredTextField;
>>>>>>> +import org.apache.wicket.markup.html.form.TextArea;
>>>>>>>  import org.apache.wicket.model.CompoundPropertyModel;
>>>>>>>  import org.apache.wicket.util.time.Duration;
>>>>>>>
>>>>>>> +/**
>>>>>>> + * Form component to insert/update/delete {@link Server}
>>>>>>> + *
>>>>>>> + * @author swagner
>>>>>>> + *
>>>>>>> + */
>>>>>>>  public class ServerForm extends AdminBaseForm<Server> {
>>>>>>>
>>>>>>> +       private final WebMarkupContainer listContainer;
>>>>>>>         private static final long serialVersionUID = 1L;
>>>>>>>
>>>>>>> -       public ServerForm(String id, final Server server) {
>>>>>>> +       public ServerForm(String id, WebMarkupContainer
>>>>>>> listContainer,
>>>>>>> +                       final Server server) {
>>>>>>>                 super(id, new CompoundPropertyModel<Server>(server));
>>>>>>>                 setOutputMarkupId(true);
>>>>>>> +               this.listContainer = listContainer;
>>>>>>> +
>>>>>>> +               add(new RequiredTextField<String>("name"));
>>>>>>> +               add(new RequiredTextField<String>("address"));
>>>>>>> +               add(DateLabel.forDatePattern("inserted", "dd.MM.yyyy
>>>>>>> HH:mm:ss"));
>>>>>>> +               add(new Label("insertedby.login"));
>>>>>>> +               add(DateLabel.forDatePattern("updated", "dd.MM.yyyy
>>>>>>> HH:mm:ss"));
>>>>>>> +               add(new Label("updatedby.login"));
>>>>>>> +               add(new TextArea<String>("comment"));
>>>>>>>
>>>>>>> -
>>>>>>>                 // attach an ajax validation behavior to all form
>>>>>>> component's keydown
>>>>>>>                 // event and throttle it down to once per second
>>>>>>>
>>>>>>> AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown",
>>>>>>>                                 Duration.ONE_SECOND);
>>>>>>>         }
>>>>>>> +
>>>>>>> +       @Override
>>>>>>> +       protected void onSaveSubmit(AjaxRequestTarget target,
>>>>>>> Form<?> form) {
>>>>>>> +
>>>>>>> Application.getBean(ServerDaoImpl.class).update(getModelObject(),
>>>>>>> +                               WebSession.getUserId());
>>>>>>> +               Server server =
>>>>>>> Application.getBean(ServerDaoImpl.class).get(
>>>>>>> +                               getModelObject().getId());
>>>>>>> +               this.setModelObject(server);
>>>>>>> +               target.add(this);
>>>>>>> +               target.add(listContainer);
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       @Override
>>>>>>> +       protected void onNewSubmit(AjaxRequestTarget target, Form<?>
>>>>>>> form) {
>>>>>>> +               this.setModelObject(new Server());
>>>>>>> +               target.add(this);
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       @Override
>>>>>>> +       protected void onRefreshSubmit(AjaxRequestTarget target,
>>>>>>> Form<?> form) {
>>>>>>> +               Server server = this.getModelObject();
>>>>>>> +               if (server.getId() <= 0) {
>>>>>>> +                       server =
>>>>>>> Application.getBean(ServerDaoImpl.class).get(
>>>>>>> +                                       server.getId());
>>>>>>> +               } else {
>>>>>>> +                       server = new Server();
>>>>>>> +               }
>>>>>>> +               this.setModelObject(server);
>>>>>>> +               target.add(this);
>>>>>>> +       }
>>>>>>> +
>>>>>>> +       @Override
>>>>>>> +       protected void onDeleteSubmit(AjaxRequestTarget target,
>>>>>>> Form<?> form) {
>>>>>>> +
>>>>>>> Application.getBean(ServerDaoImpl.class).delete(this.getModelObject(),
>>>>>>> +                               WebSession.getUserId());
>>>>>>> +               this.setModelObject(new Server());
>>>>>>> +               target.add(listContainer);
>>>>>>> +               target.add(this);
>>>>>>> +       }
>>>>>>> +
>>>>>>>  }
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -49,6 +49,20 @@
>>>>>>>                                 <td class="adminPanelColumnForm">
>>>>>>>                                         <form wicket:id="form"
>>>>>>> class="adminForm">
>>>>>>>                                                 <div
>>>>>>> wicket:id="buttons"></div>
>>>>>>> +                                               <wicket:ommessage
>>>>>>> key="1500" />: <input type="text" wicket:id="name"/>
>>>>>>> +                                   <br/>
>>>>>>> +                                   <wicket:ommessage key="1501" />:
>>>>>>> <input type="text" wicket:id="address"/>
>>>>>>> +                                   <br/>
>>>>>>> +                                               <wicket:ommessage
>>>>>>> key="1110" />: <span wicket:id="inserted"/>
>>>>>>> +                                   <br/>
>>>>>>> +                                   <wicket:ommessage key="1111" />:
>>>>>>> <span wicket:id="insertedby.login"/>
>>>>>>> +                                   <br/>
>>>>>>> +                                   <wicket:ommessage key="1112" />:
>>>>>>> <span wicket:id="updated"/>
>>>>>>> +                                   <br/>
>>>>>>> +                                   <wicket:ommessage key="1113" />:
>>>>>>> <span wicket:id="updatedby.login"/>
>>>>>>> +                                   <br/>
>>>>>>> +                                   <wicket:ommessage key="270" />:
>>>>>>> <textarea wicket:id="comment"/>
>>>>>>> +                                   <br/>
>>>>>>>                                         </form>
>>>>>>>                                 </td>
>>>>>>>                         </tr>
>>>>>>>
>>>>>>> Modified:
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>>> URL:
>>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> ---
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>>> (original)
>>>>>>> +++
>>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>>> Sun Sep 30 07:52:45 2012
>>>>>>> @@ -18,13 +18,11 @@
>>>>>>>   */
>>>>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>>>>
>>>>>>> -import java.util.Iterator;
>>>>>>> -
>>>>>>>  import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>>>> -import org.apache.openmeetings.web.app.Application;
>>>>>>>  import org.apache.openmeetings.web.components.admin.AdminPanel;
>>>>>>>  import
>>>>>>> org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
>>>>>>> +import org.apache.openmeetings.web.data.OmDataProvider;
>>>>>>>  import org.apache.wicket.AttributeModifier;
>>>>>>>  import org.apache.wicket.ajax.AjaxEventBehavior;
>>>>>>>  import org.apache.wicket.ajax.AjaxRequestTarget;
>>>>>>> @@ -32,10 +30,13 @@ import org.apache.wicket.markup.html.Web
>>>>>>>  import org.apache.wicket.markup.html.basic.Label;
>>>>>>>  import org.apache.wicket.markup.repeater.Item;
>>>>>>>  import org.apache.wicket.markup.repeater.data.DataView;
>>>>>>> -import org.apache.wicket.markup.repeater.data.IDataProvider;
>>>>>>> -import org.apache.wicket.model.CompoundPropertyModel;
>>>>>>> -import org.apache.wicket.model.IModel;
>>>>>>>
>>>>>>> +/**
>>>>>>> + * Form component with list and form to manipulate {@link Server}
>>>>>>> + *
>>>>>>> + * @author swagner
>>>>>>> + *
>>>>>>> + */
>>>>>>>  public class ServersPanel extends AdminPanel {
>>>>>>>
>>>>>>>         private static final long serialVersionUID = -1L;
>>>>>>> @@ -43,26 +44,8 @@ public class ServersPanel extends AdminP
>>>>>>>
>>>>>>>         public ServersPanel(String id) {
>>>>>>>                 super(id);
>>>>>>> -               DataView<Server> dataView = new
>>>>>>> DataView<Server>("serverList", new IDataProvider<Server>(){
>>>>>>> -                       private static final long serialVersionUID =
>>>>>>> -1L;
>>>>>>> -
>>>>>>> -                       public void detach() {
>>>>>>> -                               //empty
>>>>>>> -                       }
>>>>>>> -
>>>>>>> -                       public Iterator<? extends Server>
>>>>>>> iterator(long first, long count) {
>>>>>>> -                               return
>>>>>>> Application.getBean(ServerDaoImpl.class).getServerList((int)first,
>>>>>>> (int)count).iterator();
>>>>>>> -                       }
>>>>>>> -
>>>>>>> -                       public long size() {
>>>>>>> -                               return
>>>>>>> Application.getBean(ServerDaoImpl.class).getServerCount();
>>>>>>> -                       }
>>>>>>> -
>>>>>>> -                       public IModel<Server> model(Server object) {
>>>>>>> -                               return new
>>>>>>> CompoundPropertyModel<Server>(object);
>>>>>>> -                       }
>>>>>>> -
>>>>>>> -               }) {
>>>>>>> +               DataView<Server> dataView = new
>>>>>>> DataView<Server>("serverList",
>>>>>>> +                               new
>>>>>>> OmDataProvider<Server>(ServerDaoImpl.class)) {
>>>>>>>                         private static final long serialVersionUID =
>>>>>>> 8715559628755439596L;
>>>>>>>
>>>>>>>                         @Override
>>>>>>> @@ -95,7 +78,7 @@ public class ServersPanel extends AdminP
>>>>>>>                 });
>>>>>>>
>>>>>>>                 Server Server = new Server();
>>>>>>> -               form = new ServerForm("form", Server);
>>>>>>> +               form = new ServerForm("form", listContainer, Server);
>>>>>>>          add(form);
>>>>>>>
>>>>>>>         }
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Sebastian Wagner
>>>>>>> https://twitter.com/#!/dead_lock
>>>>>>> http://www.webbase-design.de
>>>>>>> http://www.wagner-sebastian.com
>>>>>>> seba.wagner@gmail.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Sebastian Wagner
>>>>>> https://twitter.com/#!/dead_lock
>>>>>> http://www.webbase-design.de
>>>>>> http://www.wagner-sebastian.com
>>>>>> seba.wagner@gmail.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> WBR
>>>>> Maxim aka solomax
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Sebastian Wagner
>>>> https://twitter.com/#!/dead_lock
>>>> http://www.webbase-design.de
>>>> http://www.wagner-sebastian.com
>>>> seba.wagner@gmail.com
>>>>
>>>
>>>
>>>
>>> --
>>> WBR
>>> Maxim aka solomax
>>>
>>
>>
>>
>> --
>> Sebastian Wagner
>> https://twitter.com/#!/dead_lock
>> http://www.webbase-design.de
>> http://www.wagner-sebastian.com
>> seba.wagner@gmail.com
>>
>
>
>
> --
> WBR
> Maxim aka solomax
>



-- 
Sebastian Wagner
https://twitter.com/#!/dead_lock
http://www.webbase-design.de
http://www.wagner-sebastian.com
seba.wagner@gmail.com

Re: svn commit: r1391961 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ data/basic/dao/ persistence/beans/basic/ remote/ web/components/admin/servers/

Posted by Maxim Solodovnik <so...@gmail.com>.
*SOAPLogin and Invitations are not that similar.
both of them are used to get hash, both stores user the hash is generated
for.
I feel its functionality is the same (or very similar)

*Will result in that the Object "Fieldvalues" has a primary key called
"fieldvalues_id"
OK, since we can easily change it the future

*"Language" might be a reserved word
OmLanguage? :)

On Sun, Sep 30, 2012 at 10:42 PM, seba.wagner@gmail.com <
seba.wagner@gmail.com> wrote:

> OpenXGReturnObject can be removed, it was part of the OpenXG integration
> to Kamailio (former OpenSER).
>
> SOAPLogin and Invitations are not that similar.
> SOAPLogin and SessionData are kind of similar. But SessionData is cleaned
> by a Scheduler every xx minutes so I don't want to mix those tables (at the
> moment).
>
> Changing table names to singular => ok
>
> This renaming action:
>
> Fieldlanguage => Language
> Fieldvalues => Label
> FieldLanguageValue => LabelValue
> => Will result in that the Object "Fieldvalues" has a primary key called
> "fieldvalues_id". Are you okay with that? We might change attribute names
> on a later iteration. But for now the attribute names will then be quite
> different from the Table name.
>
> "Language" might be a reserved word in some database vendors. Do you have
> other ideas for this table/Object ?
>
>
> Sebastian
>
> 2012/9/30 Maxim Solodovnik <so...@gmail.com>
>
>> I agree :))
>>
>> couple of things
>>
>> I would recommend to:
>>
>> Fieldlanguagesvalues => FieldLanguageValue
>>
>> Or maybe even better:
>> Fieldlanguage => Language
>> Fieldvalues => Label
>> FieldLanguageValue => LabelValue
>>
>> I would change table name from users to user since it is common practice
>> (like mysql.user _not_ mysql.users)
>>
>> i also don't really like
>> FileExplorerItem => File (or FileItem)
>> and
>> FlvRecording => Recording (FlvRecordingLog, FlvRecordingMetaData,
>> FlvRecordingMetaDelta)
>>
>> also I'm not sure why do we need OpenXGReturnObject, never use it :(
>>
>> Additionally I feel SOAPLogin and Invitations are similar objects, do we
>> really need both?
>>
>>  On Sun, Sep 30, 2012 at 10:04 PM, seba.wagner@gmail.com <
>> seba.wagner@gmail.com> wrote:
>>
>>> Thanks Maxim!
>>>
>>> I think we might also discuss those issues:
>>>
>>> I would like to rename some classes:
>>> OmDAO => OmDao
>>> Users => User
>>> Adresses => Address
>>> States => State
>>> ErrorValues => ErrorValue
>>> AppointmentReminderTyps => AppointmentReminderType
>>> Organisation_Users => OrganisationUser
>>> Invitations => Invitation
>>> Fieldlanguagesvalues => Fieldlanguagesvalue
>>> Fieldvalues => Fieldvalue
>>> RoomPollAnswers => RoomPollAnswer
>>> RoomModerators => RoomModerator
>>> Rooms_Organisation => RoomOrganisation
>>> Rooms => Room
>>> RoomTypes => RoomType
>>> PrivateMessages => PrivateMessage
>>> Salutations => Salutation
>>> UserContacts => UserContact
>>>
>>> The table name should stay the same, for example:
>>> Java Object: User => Table name: users
>>> From my point of view a table is a List of users, so in that sense
>>> plural is ok.
>>>
>>> This refactoring will only affect the Java Object _names_ NO attribute
>>> name changes.
>>> Attribute names will stay the same (for now). You might claim that this
>>> is only 50% of the work, but it would otherwise need heavy refactoring all
>>> over the existing OpenLaszlo client. And we can't handle that as we would
>>> rely on search+find mechanism.
>>>
>>> So for now it will be that the "User"-Object has an attribute of Type
>>> "Address" but which attribute name is "adresses". Which is inconsistent but
>>> from my point of view a step in the right direction.
>>>
>>> As soon as we have a Wicket only interface, we can effectively
>>> refactor/rename attribute names and Eclipse will update most of the
>>> references.
>>>
>>> What do you think about it?
>>> How would this change affect the Backup Export/Import from your point of
>>> view? Would it work (theoretically) or is there already an issue with this
>>> change?
>>>
>>> Sebastian
>>>
>>> 2012/9/30 Maxim Solodovnik <so...@gmail.com>
>>>
>>>> done.
>>>>
>>>> As you wish :) I'm not adding it myself since I believe it is always
>>>> possible to find via SVN history who was the author :)
>>>>
>>>>
>>>> On Sun, Sep 30, 2012 at 2:59 PM, seba.wagner@gmail.com <
>>>> seba.wagner@gmail.com> wrote:
>>>>
>>>>> ++ I hope you don't mind if I complete the header javaDoc of the
>>>>> classes with the author information including your name :)
>>>>>
>>>>> Sebastoan
>>>>>
>>>>> 2012/9/30 seba.wagner@gmail.com <se...@gmail.com>
>>>>>
>>>>> Hi Maxim,
>>>>>>
>>>>>> public Server getServerWithMinimumUsers() in the ServerDaoImpl:
>>>>>> I tried to understand it but I did not fully understood the
>>>>>> operations involved in that method.
>>>>>>
>>>>>> Could you please write a short sentence/notice in the javaDoc at this
>>>>>> method explaining it?
>>>>>>
>>>>>> Thanks!
>>>>>> Sebastian
>>>>>>
>>>>>> ---------- Forwarded message ----------
>>>>>> From: <se...@apache.org>
>>>>>> Date: 2012/9/30
>>>>>> Subject: svn commit: r1391961 - in
>>>>>> /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
>>>>>> axis/services/ data/basic/dao/ persistence/beans/basic/ remote/
>>>>>> web/components/admin/servers/
>>>>>> To: openmeetings-commits@incubator.apache.org
>>>>>>
>>>>>>
>>>>>> Author: sebawagner
>>>>>> Date: Sun Sep 30 07:52:45 2012
>>>>>> New Revision: 1391961
>>>>>>
>>>>>> URL: http://svn.apache.org/viewvc?rev=1391961&view=rev
>>>>>> Log:
>>>>>> OPENMEETINGS-434 complete Server/serverDaoImpl CRUD via Wicket, add
>>>>>> "comments,inserted,insertedby,updated,updatedby" fields in Server entity
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>>
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -62,7 +62,7 @@ public class ServerWebService {
>>>>>>                 Long user_level =
>>>>>> userManagement.getUserLevelByID(users_id);
>>>>>>
>>>>>>                 if
>>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>>> -                       return serversDao.getServerList(start,
>>>>>> max).toArray(new Server[0]);
>>>>>> +                       return serversDao.get(start, max).toArray(new
>>>>>> Server[0]);
>>>>>>                 } else {
>>>>>>                         log.warn("Insuffisient permissions");
>>>>>>                         return null;
>>>>>> @@ -81,7 +81,7 @@ public class ServerWebService {
>>>>>>                 Long user_level =
>>>>>> userManagement.getUserLevelByID(users_id);
>>>>>>
>>>>>>                 if
>>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>>> -                       return (int)serversDao.getServerCount();
>>>>>> +                       return (int)serversDao.count();
>>>>>>                 } else {
>>>>>>                         log.warn("Insuffisient permissions");
>>>>>>                         return -1;
>>>>>> @@ -123,7 +123,7 @@ public class ServerWebService {
>>>>>>                 Long user_level =
>>>>>> userManagement.getUserLevelByID(users_id);
>>>>>>
>>>>>>                 if
>>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>>> -                       return serversDao.deleteServer(id);
>>>>>> +                       return serversDao.delete(id);
>>>>>>                 } else {
>>>>>>                         log.warn("Insuffisient permissions");
>>>>>>                         return false;
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -18,27 +18,47 @@
>>>>>>   */
>>>>>>  package org.apache.openmeetings.data.basic.dao;
>>>>>>
>>>>>> +import java.util.Date;
>>>>>>  import java.util.List;
>>>>>>
>>>>>>  import javax.persistence.EntityManager;
>>>>>>  import javax.persistence.NoResultException;
>>>>>>  import javax.persistence.PersistenceContext;
>>>>>> +import javax.persistence.PersistenceException;
>>>>>>  import javax.persistence.TypedQuery;
>>>>>>
>>>>>>  import org.apache.openmeetings.OpenmeetingsVariables;
>>>>>> +import org.apache.openmeetings.data.OmDAO;
>>>>>> +import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
>>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>>>  import org.red5.logging.Red5LoggerFactory;
>>>>>>  import org.slf4j.Logger;
>>>>>> +import org.springframework.beans.factory.annotation.Autowired;
>>>>>>  import org.springframework.transaction.annotation.Transactional;
>>>>>>
>>>>>> +/**
>>>>>> + *
>>>>>> + * CRUD for {@link Server}
>>>>>> + *
>>>>>> + * @author solomax, swagner
>>>>>> + *
>>>>>> + */
>>>>>>  @Transactional
>>>>>> -public class ServerDaoImpl {
>>>>>> +public class ServerDaoImpl implements OmDAO<Server> {
>>>>>>         private static final Logger log = Red5LoggerFactory.getLogger(
>>>>>>                         ServerDaoImpl.class,
>>>>>> OpenmeetingsVariables.webAppRootKey);
>>>>>>
>>>>>>         @PersistenceContext
>>>>>>         private EntityManager em;
>>>>>>
>>>>>> +       @Autowired
>>>>>> +       private UsersDaoImpl usersDao;
>>>>>> +
>>>>>> +       /**
>>>>>> +        * Get a list of all available servers
>>>>>> +        *
>>>>>> +        * @return
>>>>>> +        */
>>>>>>         public List<Server> getServerList() {
>>>>>>                 log.debug("getServerList enter");
>>>>>>                 TypedQuery<Server> q =
>>>>>> em.createNamedQuery("getAllServers",
>>>>>> @@ -46,8 +66,12 @@ public class ServerDaoImpl {
>>>>>>                 return q.getResultList();
>>>>>>         }
>>>>>>
>>>>>> -
>>>>>> -       public List<Server> getServerList(int start, int max) {
>>>>>> +       /*
>>>>>> +        * (non-Javadoc)
>>>>>> +        *
>>>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(int, int)
>>>>>> +        */
>>>>>> +       public List<Server> get(int start, int max) {
>>>>>>                 log.debug("getServerList enter");
>>>>>>                 TypedQuery<Server> q =
>>>>>> em.createNamedQuery("getAllServers",
>>>>>>                                 Server.class);
>>>>>> @@ -57,14 +81,24 @@ public class ServerDaoImpl {
>>>>>>                 return q.getResultList();
>>>>>>         }
>>>>>>
>>>>>> -       public long getServerCount() {
>>>>>> +       /*
>>>>>> +        * (non-Javadoc)
>>>>>> +        *
>>>>>> +        * @see org.apache.openmeetings.data.OmDAO#count()
>>>>>> +        */
>>>>>> +       public long count() {
>>>>>>                 log.debug("getServerCount enter");
>>>>>>                 TypedQuery<Long> q =
>>>>>> em.createNamedQuery("getServerCount", Long.class);
>>>>>>
>>>>>>                 return q.getSingleResult();
>>>>>>         }
>>>>>>
>>>>>> -       public Server getServer(long id) {
>>>>>> +       /*
>>>>>> +        * (non-Javadoc)
>>>>>> +        *
>>>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(long)
>>>>>> +        */
>>>>>> +       public Server get(long id) {
>>>>>>                 Server result = null;
>>>>>>                 log.debug("getServer enter, id = " + id);
>>>>>>                 TypedQuery<Server> q =
>>>>>> em.createNamedQuery("getServerById", Server.class);
>>>>>> @@ -77,6 +111,12 @@ public class ServerDaoImpl {
>>>>>>                 return result;
>>>>>>         }
>>>>>>
>>>>>> +       /**
>>>>>> +        * Get server by its address
>>>>>> +        *
>>>>>> +        * @param address
>>>>>> +        * @return
>>>>>> +        */
>>>>>>         public Server getServerByAddress(String address) {
>>>>>>                 log.debug("getServer enter, address = " + address);
>>>>>>                 TypedQuery<Server> q =
>>>>>> em.createNamedQuery("getServerByAddress", Server.class);
>>>>>> @@ -85,6 +125,11 @@ public class ServerDaoImpl {
>>>>>>                 return list.size() > 0 ? list.get(0) : null;
>>>>>>         }
>>>>>>
>>>>>> +       /**
>>>>>> +        * Get the number of minimum users for a server(?)
>>>>>> +        *
>>>>>> +        * @return
>>>>>> +        */
>>>>>>         public Server getServerWithMinimumUsers() {
>>>>>>                 Server result = null;
>>>>>>                 log.debug("getServerWithMinimumUsers enter");
>>>>>> @@ -95,7 +140,7 @@ public class ServerDaoImpl {
>>>>>>                         List<Object> r = q1.getResultList();
>>>>>>                         if (!r.isEmpty()) {
>>>>>>                                 // get server id from first line
>>>>>> -                               result =
>>>>>> getServer((Long)((Object[])r.get(0))[0]);
>>>>>> +                               result =
>>>>>> get((Long)((Object[])r.get(0))[0]);
>>>>>>                         }
>>>>>>                 } else {
>>>>>>                         result = l.get(0);
>>>>>> @@ -103,8 +148,17 @@ public class ServerDaoImpl {
>>>>>>                 return result;
>>>>>>         }
>>>>>>
>>>>>> +       /**
>>>>>> +        * @deprecated user standard mechanism of
>>>>>> +        *             {@link
>>>>>> OmDAO#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>>>> +        * @param id
>>>>>> +        * @param name
>>>>>> +        * @param address
>>>>>> +        * @return
>>>>>> +        */
>>>>>> +       @Deprecated
>>>>>>         public Server saveServer(long id, String name, String
>>>>>> address) {
>>>>>> -               Server s = getServer(id);
>>>>>> +               Server s = get(id);
>>>>>>                 if (s == null) {
>>>>>>                         s = new Server();
>>>>>>                 }
>>>>>> @@ -114,8 +168,15 @@ public class ServerDaoImpl {
>>>>>>                 return em.merge(s);
>>>>>>         }
>>>>>>
>>>>>> -       public boolean deleteServer(long id) {
>>>>>> -               Server s = getServer(id);
>>>>>> +       /**
>>>>>> +        * @deprecated use standard mechanism of
>>>>>> +        *             {@link
>>>>>> OmDAO#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>>>> +        * @param id
>>>>>> +        * @return
>>>>>> +        */
>>>>>> +       @Deprecated
>>>>>> +       public boolean delete(long id) {
>>>>>> +               Server s = get(id);
>>>>>>                 if (s == null) {
>>>>>>                         return false;
>>>>>>                 }
>>>>>> @@ -124,4 +185,45 @@ public class ServerDaoImpl {
>>>>>>
>>>>>>                 return true;
>>>>>>         }
>>>>>> +
>>>>>> +       /*
>>>>>> +        * (non-Javadoc)
>>>>>> +        *
>>>>>> +        * @see
>>>>>> +        *
>>>>>> org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
>>>>>> +        * .beans.OmEntity, long)
>>>>>> +        */
>>>>>> +       public void update(Server entity, long userId) {
>>>>>> +               try {
>>>>>> +                       if (entity.getId() <= 0) {
>>>>>> +                               entity.setInserted(new Date());
>>>>>> +
>>>>>> entity.setInsertedby(usersDao.get(userId));
>>>>>> +                               entity.setDeleted(false);
>>>>>> +                               em.persist(entity);
>>>>>> +                       } else {
>>>>>> +                               entity.setUpdated(new Date());
>>>>>> +
>>>>>> entity.setUpdatedby(usersDao.get(userId));
>>>>>> +                               entity.setDeleted(false);
>>>>>> +                               em.merge(entity);
>>>>>> +                       }
>>>>>> +               } catch (PersistenceException ex) {
>>>>>> +                       log.error("[update LdapConfig]", ex);
>>>>>> +               }
>>>>>> +       }
>>>>>> +
>>>>>> +       /*
>>>>>> +        * (non-Javadoc)
>>>>>> +        *
>>>>>> +        * @see
>>>>>> +        *
>>>>>> org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
>>>>>> +        * .beans.OmEntity, long)
>>>>>> +        */
>>>>>> +       public void delete(Server entity, long userId) {
>>>>>> +               if (entity.getId() >= 0) {
>>>>>> +                       entity.setUpdated(new Date());
>>>>>> +                       entity.setUpdatedby(usersDao.get(userId));
>>>>>> +                       entity.setDeleted(true);
>>>>>> +                       em.merge(entity);
>>>>>> +               }
>>>>>> +       }
>>>>>>  }
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -19,73 +19,97 @@
>>>>>>  package org.apache.openmeetings.persistence.beans.basic;
>>>>>>
>>>>>>  import java.io.Serializable;
>>>>>> +import java.util.Date;
>>>>>>
>>>>>>  import javax.persistence.Column;
>>>>>>  import javax.persistence.Entity;
>>>>>> +import javax.persistence.FetchType;
>>>>>>  import javax.persistence.GeneratedValue;
>>>>>>  import javax.persistence.GenerationType;
>>>>>>  import javax.persistence.Id;
>>>>>> +import javax.persistence.JoinColumn;
>>>>>> +import javax.persistence.Lob;
>>>>>> +import javax.persistence.ManyToOne;
>>>>>>  import javax.persistence.NamedQueries;
>>>>>>  import javax.persistence.NamedQuery;
>>>>>>  import javax.persistence.Table;
>>>>>>
>>>>>>  import org.apache.openmeetings.persistence.beans.OmEntity;
>>>>>> +import org.apache.openmeetings.persistence.beans.user.Users;
>>>>>>  import org.simpleframework.xml.Element;
>>>>>>  import org.simpleframework.xml.Root;
>>>>>>
>>>>>>  @Entity
>>>>>>  @NamedQueries({
>>>>>> -       @NamedQuery(name="getAllServers", query="SELECT s FROM Server
>>>>>> s WHERE s.deleted = false")
>>>>>> -       , @NamedQuery(name="getServerCount", query="SELECT COUNT(s)
>>>>>> FROM Server s WHERE s.deleted = false")
>>>>>> -       , @NamedQuery(name="getServerById", query="SELECT s FROM
>>>>>> Server s WHERE s.deleted = false AND s.id = :id")
>>>>>> -       , @NamedQuery(name="getServerByAddress", query="SELECT s FROM
>>>>>> Server s WHERE s.deleted = false AND s.address = :address")
>>>>>> -       , @NamedQuery(name="getServersWithNoUsers"
>>>>>> -               , query="SELECT s FROM Server s WHERE s.deleted =
>>>>>> false AND s.id NOT IN (SELECT u.server.id FROM Users u where
>>>>>> u.server.id IS NOT NULL)")
>>>>>> -       , @NamedQuery(name="getServerWithMinimumUsers"
>>>>>> -               , query="SELECT s.id, COUNT(u) AS cnt FROM Users u
>>>>>> JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt")
>>>>>> -})
>>>>>> +               @NamedQuery(name = "getAllServers", query = "SELECT s
>>>>>> FROM Server s WHERE s.deleted = false"),
>>>>>> +               @NamedQuery(name = "getServerCount", query = "SELECT
>>>>>> COUNT(s) FROM Server s WHERE s.deleted = false"),
>>>>>> +               @NamedQuery(name = "getServerById", query = "SELECT s
>>>>>> FROM Server s WHERE s.deleted = false AND s.id = :id"),
>>>>>> +               @NamedQuery(name = "getServerByAddress", query =
>>>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.address = :address"),
>>>>>> +               @NamedQuery(name = "getServersWithNoUsers", query =
>>>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN
>>>>>> (SELECT u.server.id FROM Users u where u.server.id IS NOT NULL)"),
>>>>>> +               @NamedQuery(name = "getServerWithMinimumUsers", query
>>>>>> = "SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN u.server s WHERE
>>>>>> s.deleted = false GROUP BY s.id ORDER BY cnt") })
>>>>>>  @Table(name = "server")
>>>>>>  @Root
>>>>>>  public class Server implements Serializable, OmEntity {
>>>>>> +
>>>>>>         private static final long serialVersionUID =
>>>>>> -6822732074549167727L;
>>>>>> +
>>>>>>         @Id
>>>>>>         @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>>> -       @Column(name="id")
>>>>>> -       @Element(data=true)
>>>>>> -       private Long id;
>>>>>> -
>>>>>> -       @Column(name="name")
>>>>>> -       @Element(data=true)
>>>>>> +       @Column(name = "id")
>>>>>> +       @Element(data = true)
>>>>>> +       private long id = 0;
>>>>>> +
>>>>>> +       @Column(name = "name")
>>>>>> +       @Element(data = true)
>>>>>>         private String name;
>>>>>> -
>>>>>> -       @Column(name="address")
>>>>>> -       @Element(data=true)
>>>>>> +
>>>>>> +       @Column(name = "address")
>>>>>> +       @Element(data = true)
>>>>>>         private String address;
>>>>>> -
>>>>>> -       @Column(name="deleted", nullable=false)
>>>>>> -       @Element(data=true)
>>>>>> +
>>>>>> +       @Column(name = "inserted")
>>>>>> +       public Date inserted;
>>>>>> +
>>>>>> +       @Column(name = "updated")
>>>>>> +       public Date updated;
>>>>>> +
>>>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>>>> +       @JoinColumn(name = "insertedby_id", updatable = true,
>>>>>> insertable = true)
>>>>>> +       public Users insertedby;
>>>>>> +
>>>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>>>> +       @JoinColumn(name = "updatedby_id", updatable = true,
>>>>>> insertable = true)
>>>>>> +       public Users updatedby;
>>>>>> +
>>>>>> +       @Lob
>>>>>> +       @Column(name = "comment_field", length = 2048)
>>>>>> +       @Element(data = true, required = false)
>>>>>> +       private String comment;
>>>>>> +
>>>>>> +       @Column(name = "deleted", nullable = false)
>>>>>> +       @Element(data = true)
>>>>>>         private boolean deleted = false;
>>>>>> -
>>>>>> +
>>>>>>         public Long getId() {
>>>>>>                 return id;
>>>>>>         }
>>>>>> -
>>>>>> +
>>>>>>         public void setId(Long id) {
>>>>>>                 this.id = id;
>>>>>>         }
>>>>>> -
>>>>>> +
>>>>>>         public String getName() {
>>>>>>                 return name;
>>>>>>         }
>>>>>> -
>>>>>> +
>>>>>>         public void setName(String name) {
>>>>>>                 this.name = name;
>>>>>>         }
>>>>>> -
>>>>>> +
>>>>>>         public String getAddress() {
>>>>>>                 return address;
>>>>>>         }
>>>>>> -
>>>>>> +
>>>>>>         public void setAddress(String address) {
>>>>>>                 this.address = address;
>>>>>>         }
>>>>>> @@ -98,6 +122,46 @@ public class Server implements Serializa
>>>>>>                 this.deleted = deleted;
>>>>>>         }
>>>>>>
>>>>>> +       public Date getInserted() {
>>>>>> +               return inserted;
>>>>>> +       }
>>>>>> +
>>>>>> +       public void setInserted(Date inserted) {
>>>>>> +               this.inserted = inserted;
>>>>>> +       }
>>>>>> +
>>>>>> +       public Date getUpdated() {
>>>>>> +               return updated;
>>>>>> +       }
>>>>>> +
>>>>>> +       public void setUpdated(Date updated) {
>>>>>> +               this.updated = updated;
>>>>>> +       }
>>>>>> +
>>>>>> +       public Users getInsertedby() {
>>>>>> +               return insertedby;
>>>>>> +       }
>>>>>> +
>>>>>> +       public void setInsertedby(Users insertedby) {
>>>>>> +               this.insertedby = insertedby;
>>>>>> +       }
>>>>>> +
>>>>>> +       public Users getUpdatedby() {
>>>>>> +               return updatedby;
>>>>>> +       }
>>>>>> +
>>>>>> +       public void setUpdatedby(Users updatedby) {
>>>>>> +               this.updatedby = updatedby;
>>>>>> +       }
>>>>>> +
>>>>>> +       public String getComment() {
>>>>>> +               return comment;
>>>>>> +       }
>>>>>> +
>>>>>> +       public void setComment(String comment) {
>>>>>> +               this.comment = comment;
>>>>>> +       }
>>>>>> +
>>>>>>         @Override
>>>>>>         public String toString() {
>>>>>>                 return "Server [id=" + id + ", name=" + name + ",
>>>>>> address=" + address
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -699,7 +699,7 @@ public class ConferenceService {
>>>>>>                         if (roomId > -1 && serverId > -1) {
>>>>>>                                 try {
>>>>>>                                         Rooms room =
>>>>>> roommanagement.getRoomById(roomId);
>>>>>> -
>>>>>> room.setServer(serverDao.getServer(serverId));
>>>>>> +
>>>>>> room.setServer(serverDao.get(serverId));
>>>>>>
>>>>>> roommanagement.updateRoomObject(room);
>>>>>>                                 } catch (Exception e) {
>>>>>>                                         log.error("Error while
>>>>>> setting server.");
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -495,7 +495,7 @@ public class UserService {
>>>>>>                         if (userId > -1 && serverId > -1) {
>>>>>>                                 try {
>>>>>>                                         Users user =
>>>>>> userManagement.getUserById(userId);
>>>>>> -
>>>>>> user.setServer(serverDao.getServer(serverId));
>>>>>> +
>>>>>> user.setServer(serverDao.get(serverId));
>>>>>>
>>>>>> userManagement.updateUser(user);
>>>>>>                                 } catch (Exception e) {
>>>>>>                                         log.error("Error while
>>>>>> setting server.");
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -18,24 +18,90 @@
>>>>>>   */
>>>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>>>
>>>>>> +import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>>> +import org.apache.openmeetings.web.app.Application;
>>>>>> +import org.apache.openmeetings.web.app.WebSession;
>>>>>>  import org.apache.openmeetings.web.components.admin.AdminBaseForm;
>>>>>> +import org.apache.wicket.ajax.AjaxRequestTarget;
>>>>>>  import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
>>>>>> +import org.apache.wicket.datetime.markup.html.basic.DateLabel;
>>>>>> +import org.apache.wicket.markup.html.WebMarkupContainer;
>>>>>> +import org.apache.wicket.markup.html.basic.Label;
>>>>>> +import org.apache.wicket.markup.html.form.Form;
>>>>>> +import org.apache.wicket.markup.html.form.RequiredTextField;
>>>>>> +import org.apache.wicket.markup.html.form.TextArea;
>>>>>>  import org.apache.wicket.model.CompoundPropertyModel;
>>>>>>  import org.apache.wicket.util.time.Duration;
>>>>>>
>>>>>> +/**
>>>>>> + * Form component to insert/update/delete {@link Server}
>>>>>> + *
>>>>>> + * @author swagner
>>>>>> + *
>>>>>> + */
>>>>>>  public class ServerForm extends AdminBaseForm<Server> {
>>>>>>
>>>>>> +       private final WebMarkupContainer listContainer;
>>>>>>         private static final long serialVersionUID = 1L;
>>>>>>
>>>>>> -       public ServerForm(String id, final Server server) {
>>>>>> +       public ServerForm(String id, WebMarkupContainer listContainer,
>>>>>> +                       final Server server) {
>>>>>>                 super(id, new CompoundPropertyModel<Server>(server));
>>>>>>                 setOutputMarkupId(true);
>>>>>> +               this.listContainer = listContainer;
>>>>>> +
>>>>>> +               add(new RequiredTextField<String>("name"));
>>>>>> +               add(new RequiredTextField<String>("address"));
>>>>>> +               add(DateLabel.forDatePattern("inserted", "dd.MM.yyyy
>>>>>> HH:mm:ss"));
>>>>>> +               add(new Label("insertedby.login"));
>>>>>> +               add(DateLabel.forDatePattern("updated", "dd.MM.yyyy
>>>>>> HH:mm:ss"));
>>>>>> +               add(new Label("updatedby.login"));
>>>>>> +               add(new TextArea<String>("comment"));
>>>>>>
>>>>>> -
>>>>>>                 // attach an ajax validation behavior to all form
>>>>>> component's keydown
>>>>>>                 // event and throttle it down to once per second
>>>>>>
>>>>>> AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown",
>>>>>>                                 Duration.ONE_SECOND);
>>>>>>         }
>>>>>> +
>>>>>> +       @Override
>>>>>> +       protected void onSaveSubmit(AjaxRequestTarget target, Form<?>
>>>>>> form) {
>>>>>> +
>>>>>> Application.getBean(ServerDaoImpl.class).update(getModelObject(),
>>>>>> +                               WebSession.getUserId());
>>>>>> +               Server server =
>>>>>> Application.getBean(ServerDaoImpl.class).get(
>>>>>> +                               getModelObject().getId());
>>>>>> +               this.setModelObject(server);
>>>>>> +               target.add(this);
>>>>>> +               target.add(listContainer);
>>>>>> +       }
>>>>>> +
>>>>>> +       @Override
>>>>>> +       protected void onNewSubmit(AjaxRequestTarget target, Form<?>
>>>>>> form) {
>>>>>> +               this.setModelObject(new Server());
>>>>>> +               target.add(this);
>>>>>> +       }
>>>>>> +
>>>>>> +       @Override
>>>>>> +       protected void onRefreshSubmit(AjaxRequestTarget target,
>>>>>> Form<?> form) {
>>>>>> +               Server server = this.getModelObject();
>>>>>> +               if (server.getId() <= 0) {
>>>>>> +                       server =
>>>>>> Application.getBean(ServerDaoImpl.class).get(
>>>>>> +                                       server.getId());
>>>>>> +               } else {
>>>>>> +                       server = new Server();
>>>>>> +               }
>>>>>> +               this.setModelObject(server);
>>>>>> +               target.add(this);
>>>>>> +       }
>>>>>> +
>>>>>> +       @Override
>>>>>> +       protected void onDeleteSubmit(AjaxRequestTarget target,
>>>>>> Form<?> form) {
>>>>>> +
>>>>>> Application.getBean(ServerDaoImpl.class).delete(this.getModelObject(),
>>>>>> +                               WebSession.getUserId());
>>>>>> +               this.setModelObject(new Server());
>>>>>> +               target.add(listContainer);
>>>>>> +               target.add(this);
>>>>>> +       }
>>>>>> +
>>>>>>  }
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -49,6 +49,20 @@
>>>>>>                                 <td class="adminPanelColumnForm">
>>>>>>                                         <form wicket:id="form"
>>>>>> class="adminForm">
>>>>>>                                                 <div
>>>>>> wicket:id="buttons"></div>
>>>>>> +                                               <wicket:ommessage
>>>>>> key="1500" />: <input type="text" wicket:id="name"/>
>>>>>> +                                   <br/>
>>>>>> +                                   <wicket:ommessage key="1501" />:
>>>>>> <input type="text" wicket:id="address"/>
>>>>>> +                                   <br/>
>>>>>> +                                               <wicket:ommessage
>>>>>> key="1110" />: <span wicket:id="inserted"/>
>>>>>> +                                   <br/>
>>>>>> +                                   <wicket:ommessage key="1111" />:
>>>>>> <span wicket:id="insertedby.login"/>
>>>>>> +                                   <br/>
>>>>>> +                                   <wicket:ommessage key="1112" />:
>>>>>> <span wicket:id="updated"/>
>>>>>> +                                   <br/>
>>>>>> +                                   <wicket:ommessage key="1113" />:
>>>>>> <span wicket:id="updatedby.login"/>
>>>>>> +                                   <br/>
>>>>>> +                                   <wicket:ommessage key="270" />:
>>>>>> <textarea wicket:id="comment"/>
>>>>>> +                                   <br/>
>>>>>>                                         </form>
>>>>>>                                 </td>
>>>>>>                         </tr>
>>>>>>
>>>>>> Modified:
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>> URL:
>>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> ---
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>> (original)
>>>>>> +++
>>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>> Sun Sep 30 07:52:45 2012
>>>>>> @@ -18,13 +18,11 @@
>>>>>>   */
>>>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>>>
>>>>>> -import java.util.Iterator;
>>>>>> -
>>>>>>  import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>>> -import org.apache.openmeetings.web.app.Application;
>>>>>>  import org.apache.openmeetings.web.components.admin.AdminPanel;
>>>>>>  import
>>>>>> org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
>>>>>> +import org.apache.openmeetings.web.data.OmDataProvider;
>>>>>>  import org.apache.wicket.AttributeModifier;
>>>>>>  import org.apache.wicket.ajax.AjaxEventBehavior;
>>>>>>  import org.apache.wicket.ajax.AjaxRequestTarget;
>>>>>> @@ -32,10 +30,13 @@ import org.apache.wicket.markup.html.Web
>>>>>>  import org.apache.wicket.markup.html.basic.Label;
>>>>>>  import org.apache.wicket.markup.repeater.Item;
>>>>>>  import org.apache.wicket.markup.repeater.data.DataView;
>>>>>> -import org.apache.wicket.markup.repeater.data.IDataProvider;
>>>>>> -import org.apache.wicket.model.CompoundPropertyModel;
>>>>>> -import org.apache.wicket.model.IModel;
>>>>>>
>>>>>> +/**
>>>>>> + * Form component with list and form to manipulate {@link Server}
>>>>>> + *
>>>>>> + * @author swagner
>>>>>> + *
>>>>>> + */
>>>>>>  public class ServersPanel extends AdminPanel {
>>>>>>
>>>>>>         private static final long serialVersionUID = -1L;
>>>>>> @@ -43,26 +44,8 @@ public class ServersPanel extends AdminP
>>>>>>
>>>>>>         public ServersPanel(String id) {
>>>>>>                 super(id);
>>>>>> -               DataView<Server> dataView = new
>>>>>> DataView<Server>("serverList", new IDataProvider<Server>(){
>>>>>> -                       private static final long serialVersionUID =
>>>>>> -1L;
>>>>>> -
>>>>>> -                       public void detach() {
>>>>>> -                               //empty
>>>>>> -                       }
>>>>>> -
>>>>>> -                       public Iterator<? extends Server>
>>>>>> iterator(long first, long count) {
>>>>>> -                               return
>>>>>> Application.getBean(ServerDaoImpl.class).getServerList((int)first,
>>>>>> (int)count).iterator();
>>>>>> -                       }
>>>>>> -
>>>>>> -                       public long size() {
>>>>>> -                               return
>>>>>> Application.getBean(ServerDaoImpl.class).getServerCount();
>>>>>> -                       }
>>>>>> -
>>>>>> -                       public IModel<Server> model(Server object) {
>>>>>> -                               return new
>>>>>> CompoundPropertyModel<Server>(object);
>>>>>> -                       }
>>>>>> -
>>>>>> -               }) {
>>>>>> +               DataView<Server> dataView = new
>>>>>> DataView<Server>("serverList",
>>>>>> +                               new
>>>>>> OmDataProvider<Server>(ServerDaoImpl.class)) {
>>>>>>                         private static final long serialVersionUID =
>>>>>> 8715559628755439596L;
>>>>>>
>>>>>>                         @Override
>>>>>> @@ -95,7 +78,7 @@ public class ServersPanel extends AdminP
>>>>>>                 });
>>>>>>
>>>>>>                 Server Server = new Server();
>>>>>> -               form = new ServerForm("form", Server);
>>>>>> +               form = new ServerForm("form", listContainer, Server);
>>>>>>          add(form);
>>>>>>
>>>>>>         }
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Sebastian Wagner
>>>>>> https://twitter.com/#!/dead_lock
>>>>>> http://www.webbase-design.de
>>>>>> http://www.wagner-sebastian.com
>>>>>> seba.wagner@gmail.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sebastian Wagner
>>>>> https://twitter.com/#!/dead_lock
>>>>> http://www.webbase-design.de
>>>>> http://www.wagner-sebastian.com
>>>>> seba.wagner@gmail.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> WBR
>>>> Maxim aka solomax
>>>>
>>>
>>>
>>>
>>> --
>>> Sebastian Wagner
>>> https://twitter.com/#!/dead_lock
>>> http://www.webbase-design.de
>>> http://www.wagner-sebastian.com
>>> seba.wagner@gmail.com
>>>
>>
>>
>>
>> --
>> WBR
>> Maxim aka solomax
>>
>
>
>
> --
> Sebastian Wagner
> https://twitter.com/#!/dead_lock
> http://www.webbase-design.de
> http://www.wagner-sebastian.com
> seba.wagner@gmail.com
>



-- 
WBR
Maxim aka solomax

Re: svn commit: r1391961 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ data/basic/dao/ persistence/beans/basic/ remote/ web/components/admin/servers/

Posted by "seba.wagner@gmail.com" <se...@gmail.com>.
OpenXGReturnObject can be removed, it was part of the OpenXG
integration to Kamailio
(former OpenSER).

SOAPLogin and Invitations are not that similar.
SOAPLogin and SessionData are kind of similar. But SessionData is cleaned
by a Scheduler every xx minutes so I don't want to mix those tables (at the
moment).

Changing table names to singular => ok

This renaming action:
Fieldlanguage => Language
Fieldvalues => Label
FieldLanguageValue => LabelValue
=> Will result in that the Object "Fieldvalues" has a primary key called
"fieldvalues_id". Are you okay with that? We might change attribute names
on a later iteration. But for now the attribute names will then be quite
different from the Table name.

"Language" might be a reserved word in some database vendors. Do you have
other ideas for this table/Object ?

Sebastian

2012/9/30 Maxim Solodovnik <so...@gmail.com>

> I agree :))
>
> couple of things
>
> I would recommend to:
>
> Fieldlanguagesvalues => FieldLanguageValue
>
> Or maybe even better:
> Fieldlanguage => Language
> Fieldvalues => Label
> FieldLanguageValue => LabelValue
>
> I would change table name from users to user since it is common practice
> (like mysql.user _not_ mysql.users)
>
> i also don't really like
> FileExplorerItem => File (or FileItem)
> and
> FlvRecording => Recording (FlvRecordingLog, FlvRecordingMetaData,
> FlvRecordingMetaDelta)
>
> also I'm not sure why do we need OpenXGReturnObject, never use it :(
>
> Additionally I feel SOAPLogin and Invitations are similar objects, do we
> really need both?
>
>  On Sun, Sep 30, 2012 at 10:04 PM, seba.wagner@gmail.com <
> seba.wagner@gmail.com> wrote:
>
>> Thanks Maxim!
>>
>> I think we might also discuss those issues:
>>
>> I would like to rename some classes:
>> OmDAO => OmDao
>> Users => User
>> Adresses => Address
>> States => State
>> ErrorValues => ErrorValue
>> AppointmentReminderTyps => AppointmentReminderType
>> Organisation_Users => OrganisationUser
>> Invitations => Invitation
>> Fieldlanguagesvalues => Fieldlanguagesvalue
>> Fieldvalues => Fieldvalue
>> RoomPollAnswers => RoomPollAnswer
>> RoomModerators => RoomModerator
>> Rooms_Organisation => RoomOrganisation
>> Rooms => Room
>> RoomTypes => RoomType
>> PrivateMessages => PrivateMessage
>> Salutations => Salutation
>> UserContacts => UserContact
>>
>> The table name should stay the same, for example:
>> Java Object: User => Table name: users
>> From my point of view a table is a List of users, so in that sense plural
>> is ok.
>>
>> This refactoring will only affect the Java Object _names_ NO attribute
>> name changes.
>> Attribute names will stay the same (for now). You might claim that this
>> is only 50% of the work, but it would otherwise need heavy refactoring all
>> over the existing OpenLaszlo client. And we can't handle that as we would
>> rely on search+find mechanism.
>>
>> So for now it will be that the "User"-Object has an attribute of Type
>> "Address" but which attribute name is "adresses". Which is inconsistent but
>> from my point of view a step in the right direction.
>>
>> As soon as we have a Wicket only interface, we can effectively
>> refactor/rename attribute names and Eclipse will update most of the
>> references.
>>
>> What do you think about it?
>> How would this change affect the Backup Export/Import from your point of
>> view? Would it work (theoretically) or is there already an issue with this
>> change?
>>
>> Sebastian
>>
>> 2012/9/30 Maxim Solodovnik <so...@gmail.com>
>>
>>> done.
>>>
>>> As you wish :) I'm not adding it myself since I believe it is always
>>> possible to find via SVN history who was the author :)
>>>
>>>
>>> On Sun, Sep 30, 2012 at 2:59 PM, seba.wagner@gmail.com <
>>> seba.wagner@gmail.com> wrote:
>>>
>>>> ++ I hope you don't mind if I complete the header javaDoc of the
>>>> classes with the author information including your name :)
>>>>
>>>> Sebastoan
>>>>
>>>> 2012/9/30 seba.wagner@gmail.com <se...@gmail.com>
>>>>
>>>> Hi Maxim,
>>>>>
>>>>> public Server getServerWithMinimumUsers() in the ServerDaoImpl:
>>>>> I tried to understand it but I did not fully understood the operations
>>>>> involved in that method.
>>>>>
>>>>> Could you please write a short sentence/notice in the javaDoc at this
>>>>> method explaining it?
>>>>>
>>>>> Thanks!
>>>>> Sebastian
>>>>>
>>>>> ---------- Forwarded message ----------
>>>>> From: <se...@apache.org>
>>>>> Date: 2012/9/30
>>>>> Subject: svn commit: r1391961 - in
>>>>> /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
>>>>> axis/services/ data/basic/dao/ persistence/beans/basic/ remote/
>>>>> web/components/admin/servers/
>>>>> To: openmeetings-commits@incubator.apache.org
>>>>>
>>>>>
>>>>> Author: sebawagner
>>>>> Date: Sun Sep 30 07:52:45 2012
>>>>> New Revision: 1391961
>>>>>
>>>>> URL: http://svn.apache.org/viewvc?rev=1391961&view=rev
>>>>> Log:
>>>>> OPENMEETINGS-434 complete Server/serverDaoImpl CRUD via Wicket, add
>>>>> "comments,inserted,insertedby,updated,updatedby" fields in Server entity
>>>>>
>>>>> Modified:
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>>
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -62,7 +62,7 @@ public class ServerWebService {
>>>>>                 Long user_level =
>>>>> userManagement.getUserLevelByID(users_id);
>>>>>
>>>>>                 if
>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>> -                       return serversDao.getServerList(start,
>>>>> max).toArray(new Server[0]);
>>>>> +                       return serversDao.get(start, max).toArray(new
>>>>> Server[0]);
>>>>>                 } else {
>>>>>                         log.warn("Insuffisient permissions");
>>>>>                         return null;
>>>>> @@ -81,7 +81,7 @@ public class ServerWebService {
>>>>>                 Long user_level =
>>>>> userManagement.getUserLevelByID(users_id);
>>>>>
>>>>>                 if
>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>> -                       return (int)serversDao.getServerCount();
>>>>> +                       return (int)serversDao.count();
>>>>>                 } else {
>>>>>                         log.warn("Insuffisient permissions");
>>>>>                         return -1;
>>>>> @@ -123,7 +123,7 @@ public class ServerWebService {
>>>>>                 Long user_level =
>>>>> userManagement.getUserLevelByID(users_id);
>>>>>
>>>>>                 if
>>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>>> -                       return serversDao.deleteServer(id);
>>>>> +                       return serversDao.delete(id);
>>>>>                 } else {
>>>>>                         log.warn("Insuffisient permissions");
>>>>>                         return false;
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -18,27 +18,47 @@
>>>>>   */
>>>>>  package org.apache.openmeetings.data.basic.dao;
>>>>>
>>>>> +import java.util.Date;
>>>>>  import java.util.List;
>>>>>
>>>>>  import javax.persistence.EntityManager;
>>>>>  import javax.persistence.NoResultException;
>>>>>  import javax.persistence.PersistenceContext;
>>>>> +import javax.persistence.PersistenceException;
>>>>>  import javax.persistence.TypedQuery;
>>>>>
>>>>>  import org.apache.openmeetings.OpenmeetingsVariables;
>>>>> +import org.apache.openmeetings.data.OmDAO;
>>>>> +import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>>  import org.red5.logging.Red5LoggerFactory;
>>>>>  import org.slf4j.Logger;
>>>>> +import org.springframework.beans.factory.annotation.Autowired;
>>>>>  import org.springframework.transaction.annotation.Transactional;
>>>>>
>>>>> +/**
>>>>> + *
>>>>> + * CRUD for {@link Server}
>>>>> + *
>>>>> + * @author solomax, swagner
>>>>> + *
>>>>> + */
>>>>>  @Transactional
>>>>> -public class ServerDaoImpl {
>>>>> +public class ServerDaoImpl implements OmDAO<Server> {
>>>>>         private static final Logger log = Red5LoggerFactory.getLogger(
>>>>>                         ServerDaoImpl.class,
>>>>> OpenmeetingsVariables.webAppRootKey);
>>>>>
>>>>>         @PersistenceContext
>>>>>         private EntityManager em;
>>>>>
>>>>> +       @Autowired
>>>>> +       private UsersDaoImpl usersDao;
>>>>> +
>>>>> +       /**
>>>>> +        * Get a list of all available servers
>>>>> +        *
>>>>> +        * @return
>>>>> +        */
>>>>>         public List<Server> getServerList() {
>>>>>                 log.debug("getServerList enter");
>>>>>                 TypedQuery<Server> q =
>>>>> em.createNamedQuery("getAllServers",
>>>>> @@ -46,8 +66,12 @@ public class ServerDaoImpl {
>>>>>                 return q.getResultList();
>>>>>         }
>>>>>
>>>>> -
>>>>> -       public List<Server> getServerList(int start, int max) {
>>>>> +       /*
>>>>> +        * (non-Javadoc)
>>>>> +        *
>>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(int, int)
>>>>> +        */
>>>>> +       public List<Server> get(int start, int max) {
>>>>>                 log.debug("getServerList enter");
>>>>>                 TypedQuery<Server> q =
>>>>> em.createNamedQuery("getAllServers",
>>>>>                                 Server.class);
>>>>> @@ -57,14 +81,24 @@ public class ServerDaoImpl {
>>>>>                 return q.getResultList();
>>>>>         }
>>>>>
>>>>> -       public long getServerCount() {
>>>>> +       /*
>>>>> +        * (non-Javadoc)
>>>>> +        *
>>>>> +        * @see org.apache.openmeetings.data.OmDAO#count()
>>>>> +        */
>>>>> +       public long count() {
>>>>>                 log.debug("getServerCount enter");
>>>>>                 TypedQuery<Long> q =
>>>>> em.createNamedQuery("getServerCount", Long.class);
>>>>>
>>>>>                 return q.getSingleResult();
>>>>>         }
>>>>>
>>>>> -       public Server getServer(long id) {
>>>>> +       /*
>>>>> +        * (non-Javadoc)
>>>>> +        *
>>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(long)
>>>>> +        */
>>>>> +       public Server get(long id) {
>>>>>                 Server result = null;
>>>>>                 log.debug("getServer enter, id = " + id);
>>>>>                 TypedQuery<Server> q =
>>>>> em.createNamedQuery("getServerById", Server.class);
>>>>> @@ -77,6 +111,12 @@ public class ServerDaoImpl {
>>>>>                 return result;
>>>>>         }
>>>>>
>>>>> +       /**
>>>>> +        * Get server by its address
>>>>> +        *
>>>>> +        * @param address
>>>>> +        * @return
>>>>> +        */
>>>>>         public Server getServerByAddress(String address) {
>>>>>                 log.debug("getServer enter, address = " + address);
>>>>>                 TypedQuery<Server> q =
>>>>> em.createNamedQuery("getServerByAddress", Server.class);
>>>>> @@ -85,6 +125,11 @@ public class ServerDaoImpl {
>>>>>                 return list.size() > 0 ? list.get(0) : null;
>>>>>         }
>>>>>
>>>>> +       /**
>>>>> +        * Get the number of minimum users for a server(?)
>>>>> +        *
>>>>> +        * @return
>>>>> +        */
>>>>>         public Server getServerWithMinimumUsers() {
>>>>>                 Server result = null;
>>>>>                 log.debug("getServerWithMinimumUsers enter");
>>>>> @@ -95,7 +140,7 @@ public class ServerDaoImpl {
>>>>>                         List<Object> r = q1.getResultList();
>>>>>                         if (!r.isEmpty()) {
>>>>>                                 // get server id from first line
>>>>> -                               result =
>>>>> getServer((Long)((Object[])r.get(0))[0]);
>>>>> +                               result =
>>>>> get((Long)((Object[])r.get(0))[0]);
>>>>>                         }
>>>>>                 } else {
>>>>>                         result = l.get(0);
>>>>> @@ -103,8 +148,17 @@ public class ServerDaoImpl {
>>>>>                 return result;
>>>>>         }
>>>>>
>>>>> +       /**
>>>>> +        * @deprecated user standard mechanism of
>>>>> +        *             {@link
>>>>> OmDAO#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>>> +        * @param id
>>>>> +        * @param name
>>>>> +        * @param address
>>>>> +        * @return
>>>>> +        */
>>>>> +       @Deprecated
>>>>>         public Server saveServer(long id, String name, String address)
>>>>> {
>>>>> -               Server s = getServer(id);
>>>>> +               Server s = get(id);
>>>>>                 if (s == null) {
>>>>>                         s = new Server();
>>>>>                 }
>>>>> @@ -114,8 +168,15 @@ public class ServerDaoImpl {
>>>>>                 return em.merge(s);
>>>>>         }
>>>>>
>>>>> -       public boolean deleteServer(long id) {
>>>>> -               Server s = getServer(id);
>>>>> +       /**
>>>>> +        * @deprecated use standard mechanism of
>>>>> +        *             {@link
>>>>> OmDAO#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>>> +        * @param id
>>>>> +        * @return
>>>>> +        */
>>>>> +       @Deprecated
>>>>> +       public boolean delete(long id) {
>>>>> +               Server s = get(id);
>>>>>                 if (s == null) {
>>>>>                         return false;
>>>>>                 }
>>>>> @@ -124,4 +185,45 @@ public class ServerDaoImpl {
>>>>>
>>>>>                 return true;
>>>>>         }
>>>>> +
>>>>> +       /*
>>>>> +        * (non-Javadoc)
>>>>> +        *
>>>>> +        * @see
>>>>> +        *
>>>>> org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
>>>>> +        * .beans.OmEntity, long)
>>>>> +        */
>>>>> +       public void update(Server entity, long userId) {
>>>>> +               try {
>>>>> +                       if (entity.getId() <= 0) {
>>>>> +                               entity.setInserted(new Date());
>>>>> +
>>>>> entity.setInsertedby(usersDao.get(userId));
>>>>> +                               entity.setDeleted(false);
>>>>> +                               em.persist(entity);
>>>>> +                       } else {
>>>>> +                               entity.setUpdated(new Date());
>>>>> +
>>>>> entity.setUpdatedby(usersDao.get(userId));
>>>>> +                               entity.setDeleted(false);
>>>>> +                               em.merge(entity);
>>>>> +                       }
>>>>> +               } catch (PersistenceException ex) {
>>>>> +                       log.error("[update LdapConfig]", ex);
>>>>> +               }
>>>>> +       }
>>>>> +
>>>>> +       /*
>>>>> +        * (non-Javadoc)
>>>>> +        *
>>>>> +        * @see
>>>>> +        *
>>>>> org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
>>>>> +        * .beans.OmEntity, long)
>>>>> +        */
>>>>> +       public void delete(Server entity, long userId) {
>>>>> +               if (entity.getId() >= 0) {
>>>>> +                       entity.setUpdated(new Date());
>>>>> +                       entity.setUpdatedby(usersDao.get(userId));
>>>>> +                       entity.setDeleted(true);
>>>>> +                       em.merge(entity);
>>>>> +               }
>>>>> +       }
>>>>>  }
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -19,73 +19,97 @@
>>>>>  package org.apache.openmeetings.persistence.beans.basic;
>>>>>
>>>>>  import java.io.Serializable;
>>>>> +import java.util.Date;
>>>>>
>>>>>  import javax.persistence.Column;
>>>>>  import javax.persistence.Entity;
>>>>> +import javax.persistence.FetchType;
>>>>>  import javax.persistence.GeneratedValue;
>>>>>  import javax.persistence.GenerationType;
>>>>>  import javax.persistence.Id;
>>>>> +import javax.persistence.JoinColumn;
>>>>> +import javax.persistence.Lob;
>>>>> +import javax.persistence.ManyToOne;
>>>>>  import javax.persistence.NamedQueries;
>>>>>  import javax.persistence.NamedQuery;
>>>>>  import javax.persistence.Table;
>>>>>
>>>>>  import org.apache.openmeetings.persistence.beans.OmEntity;
>>>>> +import org.apache.openmeetings.persistence.beans.user.Users;
>>>>>  import org.simpleframework.xml.Element;
>>>>>  import org.simpleframework.xml.Root;
>>>>>
>>>>>  @Entity
>>>>>  @NamedQueries({
>>>>> -       @NamedQuery(name="getAllServers", query="SELECT s FROM Server
>>>>> s WHERE s.deleted = false")
>>>>> -       , @NamedQuery(name="getServerCount", query="SELECT COUNT(s)
>>>>> FROM Server s WHERE s.deleted = false")
>>>>> -       , @NamedQuery(name="getServerById", query="SELECT s FROM
>>>>> Server s WHERE s.deleted = false AND s.id = :id")
>>>>> -       , @NamedQuery(name="getServerByAddress", query="SELECT s FROM
>>>>> Server s WHERE s.deleted = false AND s.address = :address")
>>>>> -       , @NamedQuery(name="getServersWithNoUsers"
>>>>> -               , query="SELECT s FROM Server s WHERE s.deleted =
>>>>> false AND s.id NOT IN (SELECT u.server.id FROM Users u where
>>>>> u.server.id IS NOT NULL)")
>>>>> -       , @NamedQuery(name="getServerWithMinimumUsers"
>>>>> -               , query="SELECT s.id, COUNT(u) AS cnt FROM Users u
>>>>> JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt")
>>>>> -})
>>>>> +               @NamedQuery(name = "getAllServers", query = "SELECT s
>>>>> FROM Server s WHERE s.deleted = false"),
>>>>> +               @NamedQuery(name = "getServerCount", query = "SELECT
>>>>> COUNT(s) FROM Server s WHERE s.deleted = false"),
>>>>> +               @NamedQuery(name = "getServerById", query = "SELECT s
>>>>> FROM Server s WHERE s.deleted = false AND s.id = :id"),
>>>>> +               @NamedQuery(name = "getServerByAddress", query =
>>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.address = :address"),
>>>>> +               @NamedQuery(name = "getServersWithNoUsers", query =
>>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN
>>>>> (SELECT u.server.id FROM Users u where u.server.id IS NOT NULL)"),
>>>>> +               @NamedQuery(name = "getServerWithMinimumUsers", query
>>>>> = "SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN u.server s WHERE
>>>>> s.deleted = false GROUP BY s.id ORDER BY cnt") })
>>>>>  @Table(name = "server")
>>>>>  @Root
>>>>>  public class Server implements Serializable, OmEntity {
>>>>> +
>>>>>         private static final long serialVersionUID =
>>>>> -6822732074549167727L;
>>>>> +
>>>>>         @Id
>>>>>         @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>> -       @Column(name="id")
>>>>> -       @Element(data=true)
>>>>> -       private Long id;
>>>>> -
>>>>> -       @Column(name="name")
>>>>> -       @Element(data=true)
>>>>> +       @Column(name = "id")
>>>>> +       @Element(data = true)
>>>>> +       private long id = 0;
>>>>> +
>>>>> +       @Column(name = "name")
>>>>> +       @Element(data = true)
>>>>>         private String name;
>>>>> -
>>>>> -       @Column(name="address")
>>>>> -       @Element(data=true)
>>>>> +
>>>>> +       @Column(name = "address")
>>>>> +       @Element(data = true)
>>>>>         private String address;
>>>>> -
>>>>> -       @Column(name="deleted", nullable=false)
>>>>> -       @Element(data=true)
>>>>> +
>>>>> +       @Column(name = "inserted")
>>>>> +       public Date inserted;
>>>>> +
>>>>> +       @Column(name = "updated")
>>>>> +       public Date updated;
>>>>> +
>>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>>> +       @JoinColumn(name = "insertedby_id", updatable = true,
>>>>> insertable = true)
>>>>> +       public Users insertedby;
>>>>> +
>>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>>> +       @JoinColumn(name = "updatedby_id", updatable = true,
>>>>> insertable = true)
>>>>> +       public Users updatedby;
>>>>> +
>>>>> +       @Lob
>>>>> +       @Column(name = "comment_field", length = 2048)
>>>>> +       @Element(data = true, required = false)
>>>>> +       private String comment;
>>>>> +
>>>>> +       @Column(name = "deleted", nullable = false)
>>>>> +       @Element(data = true)
>>>>>         private boolean deleted = false;
>>>>> -
>>>>> +
>>>>>         public Long getId() {
>>>>>                 return id;
>>>>>         }
>>>>> -
>>>>> +
>>>>>         public void setId(Long id) {
>>>>>                 this.id = id;
>>>>>         }
>>>>> -
>>>>> +
>>>>>         public String getName() {
>>>>>                 return name;
>>>>>         }
>>>>> -
>>>>> +
>>>>>         public void setName(String name) {
>>>>>                 this.name = name;
>>>>>         }
>>>>> -
>>>>> +
>>>>>         public String getAddress() {
>>>>>                 return address;
>>>>>         }
>>>>> -
>>>>> +
>>>>>         public void setAddress(String address) {
>>>>>                 this.address = address;
>>>>>         }
>>>>> @@ -98,6 +122,46 @@ public class Server implements Serializa
>>>>>                 this.deleted = deleted;
>>>>>         }
>>>>>
>>>>> +       public Date getInserted() {
>>>>> +               return inserted;
>>>>> +       }
>>>>> +
>>>>> +       public void setInserted(Date inserted) {
>>>>> +               this.inserted = inserted;
>>>>> +       }
>>>>> +
>>>>> +       public Date getUpdated() {
>>>>> +               return updated;
>>>>> +       }
>>>>> +
>>>>> +       public void setUpdated(Date updated) {
>>>>> +               this.updated = updated;
>>>>> +       }
>>>>> +
>>>>> +       public Users getInsertedby() {
>>>>> +               return insertedby;
>>>>> +       }
>>>>> +
>>>>> +       public void setInsertedby(Users insertedby) {
>>>>> +               this.insertedby = insertedby;
>>>>> +       }
>>>>> +
>>>>> +       public Users getUpdatedby() {
>>>>> +               return updatedby;
>>>>> +       }
>>>>> +
>>>>> +       public void setUpdatedby(Users updatedby) {
>>>>> +               this.updatedby = updatedby;
>>>>> +       }
>>>>> +
>>>>> +       public String getComment() {
>>>>> +               return comment;
>>>>> +       }
>>>>> +
>>>>> +       public void setComment(String comment) {
>>>>> +               this.comment = comment;
>>>>> +       }
>>>>> +
>>>>>         @Override
>>>>>         public String toString() {
>>>>>                 return "Server [id=" + id + ", name=" + name + ",
>>>>> address=" + address
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -699,7 +699,7 @@ public class ConferenceService {
>>>>>                         if (roomId > -1 && serverId > -1) {
>>>>>                                 try {
>>>>>                                         Rooms room =
>>>>> roommanagement.getRoomById(roomId);
>>>>> -
>>>>> room.setServer(serverDao.getServer(serverId));
>>>>> +
>>>>> room.setServer(serverDao.get(serverId));
>>>>>
>>>>> roommanagement.updateRoomObject(room);
>>>>>                                 } catch (Exception e) {
>>>>>                                         log.error("Error while setting
>>>>> server.");
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -495,7 +495,7 @@ public class UserService {
>>>>>                         if (userId > -1 && serverId > -1) {
>>>>>                                 try {
>>>>>                                         Users user =
>>>>> userManagement.getUserById(userId);
>>>>> -
>>>>> user.setServer(serverDao.getServer(serverId));
>>>>> +
>>>>> user.setServer(serverDao.get(serverId));
>>>>>
>>>>> userManagement.updateUser(user);
>>>>>                                 } catch (Exception e) {
>>>>>                                         log.error("Error while setting
>>>>> server.");
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -18,24 +18,90 @@
>>>>>   */
>>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>>
>>>>> +import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>> +import org.apache.openmeetings.web.app.Application;
>>>>> +import org.apache.openmeetings.web.app.WebSession;
>>>>>  import org.apache.openmeetings.web.components.admin.AdminBaseForm;
>>>>> +import org.apache.wicket.ajax.AjaxRequestTarget;
>>>>>  import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
>>>>> +import org.apache.wicket.datetime.markup.html.basic.DateLabel;
>>>>> +import org.apache.wicket.markup.html.WebMarkupContainer;
>>>>> +import org.apache.wicket.markup.html.basic.Label;
>>>>> +import org.apache.wicket.markup.html.form.Form;
>>>>> +import org.apache.wicket.markup.html.form.RequiredTextField;
>>>>> +import org.apache.wicket.markup.html.form.TextArea;
>>>>>  import org.apache.wicket.model.CompoundPropertyModel;
>>>>>  import org.apache.wicket.util.time.Duration;
>>>>>
>>>>> +/**
>>>>> + * Form component to insert/update/delete {@link Server}
>>>>> + *
>>>>> + * @author swagner
>>>>> + *
>>>>> + */
>>>>>  public class ServerForm extends AdminBaseForm<Server> {
>>>>>
>>>>> +       private final WebMarkupContainer listContainer;
>>>>>         private static final long serialVersionUID = 1L;
>>>>>
>>>>> -       public ServerForm(String id, final Server server) {
>>>>> +       public ServerForm(String id, WebMarkupContainer listContainer,
>>>>> +                       final Server server) {
>>>>>                 super(id, new CompoundPropertyModel<Server>(server));
>>>>>                 setOutputMarkupId(true);
>>>>> +               this.listContainer = listContainer;
>>>>> +
>>>>> +               add(new RequiredTextField<String>("name"));
>>>>> +               add(new RequiredTextField<String>("address"));
>>>>> +               add(DateLabel.forDatePattern("inserted", "dd.MM.yyyy
>>>>> HH:mm:ss"));
>>>>> +               add(new Label("insertedby.login"));
>>>>> +               add(DateLabel.forDatePattern("updated", "dd.MM.yyyy
>>>>> HH:mm:ss"));
>>>>> +               add(new Label("updatedby.login"));
>>>>> +               add(new TextArea<String>("comment"));
>>>>>
>>>>> -
>>>>>                 // attach an ajax validation behavior to all form
>>>>> component's keydown
>>>>>                 // event and throttle it down to once per second
>>>>>
>>>>> AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown",
>>>>>                                 Duration.ONE_SECOND);
>>>>>         }
>>>>> +
>>>>> +       @Override
>>>>> +       protected void onSaveSubmit(AjaxRequestTarget target, Form<?>
>>>>> form) {
>>>>> +
>>>>> Application.getBean(ServerDaoImpl.class).update(getModelObject(),
>>>>> +                               WebSession.getUserId());
>>>>> +               Server server =
>>>>> Application.getBean(ServerDaoImpl.class).get(
>>>>> +                               getModelObject().getId());
>>>>> +               this.setModelObject(server);
>>>>> +               target.add(this);
>>>>> +               target.add(listContainer);
>>>>> +       }
>>>>> +
>>>>> +       @Override
>>>>> +       protected void onNewSubmit(AjaxRequestTarget target, Form<?>
>>>>> form) {
>>>>> +               this.setModelObject(new Server());
>>>>> +               target.add(this);
>>>>> +       }
>>>>> +
>>>>> +       @Override
>>>>> +       protected void onRefreshSubmit(AjaxRequestTarget target,
>>>>> Form<?> form) {
>>>>> +               Server server = this.getModelObject();
>>>>> +               if (server.getId() <= 0) {
>>>>> +                       server =
>>>>> Application.getBean(ServerDaoImpl.class).get(
>>>>> +                                       server.getId());
>>>>> +               } else {
>>>>> +                       server = new Server();
>>>>> +               }
>>>>> +               this.setModelObject(server);
>>>>> +               target.add(this);
>>>>> +       }
>>>>> +
>>>>> +       @Override
>>>>> +       protected void onDeleteSubmit(AjaxRequestTarget target,
>>>>> Form<?> form) {
>>>>> +
>>>>> Application.getBean(ServerDaoImpl.class).delete(this.getModelObject(),
>>>>> +                               WebSession.getUserId());
>>>>> +               this.setModelObject(new Server());
>>>>> +               target.add(listContainer);
>>>>> +               target.add(this);
>>>>> +       }
>>>>> +
>>>>>  }
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -49,6 +49,20 @@
>>>>>                                 <td class="adminPanelColumnForm">
>>>>>                                         <form wicket:id="form"
>>>>> class="adminForm">
>>>>>                                                 <div
>>>>> wicket:id="buttons"></div>
>>>>> +                                               <wicket:ommessage
>>>>> key="1500" />: <input type="text" wicket:id="name"/>
>>>>> +                                   <br/>
>>>>> +                                   <wicket:ommessage key="1501" />:
>>>>> <input type="text" wicket:id="address"/>
>>>>> +                                   <br/>
>>>>> +                                               <wicket:ommessage
>>>>> key="1110" />: <span wicket:id="inserted"/>
>>>>> +                                   <br/>
>>>>> +                                   <wicket:ommessage key="1111" />:
>>>>> <span wicket:id="insertedby.login"/>
>>>>> +                                   <br/>
>>>>> +                                   <wicket:ommessage key="1112" />:
>>>>> <span wicket:id="updated"/>
>>>>> +                                   <br/>
>>>>> +                                   <wicket:ommessage key="1113" />:
>>>>> <span wicket:id="updatedby.login"/>
>>>>> +                                   <br/>
>>>>> +                                   <wicket:ommessage key="270" />:
>>>>> <textarea wicket:id="comment"/>
>>>>> +                                   <br/>
>>>>>                                         </form>
>>>>>                                 </td>
>>>>>                         </tr>
>>>>>
>>>>> Modified:
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>> URL:
>>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>> (original)
>>>>> +++
>>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>> Sun Sep 30 07:52:45 2012
>>>>> @@ -18,13 +18,11 @@
>>>>>   */
>>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>>
>>>>> -import java.util.Iterator;
>>>>> -
>>>>>  import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>> -import org.apache.openmeetings.web.app.Application;
>>>>>  import org.apache.openmeetings.web.components.admin.AdminPanel;
>>>>>  import
>>>>> org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
>>>>> +import org.apache.openmeetings.web.data.OmDataProvider;
>>>>>  import org.apache.wicket.AttributeModifier;
>>>>>  import org.apache.wicket.ajax.AjaxEventBehavior;
>>>>>  import org.apache.wicket.ajax.AjaxRequestTarget;
>>>>> @@ -32,10 +30,13 @@ import org.apache.wicket.markup.html.Web
>>>>>  import org.apache.wicket.markup.html.basic.Label;
>>>>>  import org.apache.wicket.markup.repeater.Item;
>>>>>  import org.apache.wicket.markup.repeater.data.DataView;
>>>>> -import org.apache.wicket.markup.repeater.data.IDataProvider;
>>>>> -import org.apache.wicket.model.CompoundPropertyModel;
>>>>> -import org.apache.wicket.model.IModel;
>>>>>
>>>>> +/**
>>>>> + * Form component with list and form to manipulate {@link Server}
>>>>> + *
>>>>> + * @author swagner
>>>>> + *
>>>>> + */
>>>>>  public class ServersPanel extends AdminPanel {
>>>>>
>>>>>         private static final long serialVersionUID = -1L;
>>>>> @@ -43,26 +44,8 @@ public class ServersPanel extends AdminP
>>>>>
>>>>>         public ServersPanel(String id) {
>>>>>                 super(id);
>>>>> -               DataView<Server> dataView = new
>>>>> DataView<Server>("serverList", new IDataProvider<Server>(){
>>>>> -                       private static final long serialVersionUID =
>>>>> -1L;
>>>>> -
>>>>> -                       public void detach() {
>>>>> -                               //empty
>>>>> -                       }
>>>>> -
>>>>> -                       public Iterator<? extends Server>
>>>>> iterator(long first, long count) {
>>>>> -                               return
>>>>> Application.getBean(ServerDaoImpl.class).getServerList((int)first,
>>>>> (int)count).iterator();
>>>>> -                       }
>>>>> -
>>>>> -                       public long size() {
>>>>> -                               return
>>>>> Application.getBean(ServerDaoImpl.class).getServerCount();
>>>>> -                       }
>>>>> -
>>>>> -                       public IModel<Server> model(Server object) {
>>>>> -                               return new
>>>>> CompoundPropertyModel<Server>(object);
>>>>> -                       }
>>>>> -
>>>>> -               }) {
>>>>> +               DataView<Server> dataView = new
>>>>> DataView<Server>("serverList",
>>>>> +                               new
>>>>> OmDataProvider<Server>(ServerDaoImpl.class)) {
>>>>>                         private static final long serialVersionUID =
>>>>> 8715559628755439596L;
>>>>>
>>>>>                         @Override
>>>>> @@ -95,7 +78,7 @@ public class ServersPanel extends AdminP
>>>>>                 });
>>>>>
>>>>>                 Server Server = new Server();
>>>>> -               form = new ServerForm("form", Server);
>>>>> +               form = new ServerForm("form", listContainer, Server);
>>>>>          add(form);
>>>>>
>>>>>         }
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sebastian Wagner
>>>>> https://twitter.com/#!/dead_lock
>>>>> http://www.webbase-design.de
>>>>> http://www.wagner-sebastian.com
>>>>> seba.wagner@gmail.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Sebastian Wagner
>>>> https://twitter.com/#!/dead_lock
>>>> http://www.webbase-design.de
>>>> http://www.wagner-sebastian.com
>>>> seba.wagner@gmail.com
>>>>
>>>
>>>
>>>
>>> --
>>> WBR
>>> Maxim aka solomax
>>>
>>
>>
>>
>> --
>> Sebastian Wagner
>> https://twitter.com/#!/dead_lock
>> http://www.webbase-design.de
>> http://www.wagner-sebastian.com
>> seba.wagner@gmail.com
>>
>
>
>
> --
> WBR
> Maxim aka solomax
>



-- 
Sebastian Wagner
https://twitter.com/#!/dead_lock
http://www.webbase-design.de
http://www.wagner-sebastian.com
seba.wagner@gmail.com

Re: svn commit: r1391961 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ data/basic/dao/ persistence/beans/basic/ remote/ web/components/admin/servers/

Posted by Maxim Solodovnik <so...@gmail.com>.
I agree :))

couple of things

I would recommend to:

Fieldlanguagesvalues => FieldLanguageValue

Or maybe even better:
Fieldlanguage => Language
Fieldvalues => Label
FieldLanguageValue => LabelValue

I would change table name from users to user since it is common practice
(like mysql.user _not_ mysql.users)

i also don't really like
FileExplorerItem => File (or FileItem)
and
FlvRecording => Recording (FlvRecordingLog, FlvRecordingMetaData,
FlvRecordingMetaDelta)

also I'm not sure why do we need OpenXGReturnObject, never use it :(

Additionally I feel SOAPLogin and Invitations are similar objects, do we
really need both?

On Sun, Sep 30, 2012 at 10:04 PM, seba.wagner@gmail.com <
seba.wagner@gmail.com> wrote:

> Thanks Maxim!
>
> I think we might also discuss those issues:
>
> I would like to rename some classes:
> OmDAO => OmDao
> Users => User
> Adresses => Address
> States => State
> ErrorValues => ErrorValue
> AppointmentReminderTyps => AppointmentReminderType
> Organisation_Users => OrganisationUser
> Invitations => Invitation
> Fieldlanguagesvalues => Fieldlanguagesvalue
> Fieldvalues => Fieldvalue
> RoomPollAnswers => RoomPollAnswer
> RoomModerators => RoomModerator
> Rooms_Organisation => RoomOrganisation
> Rooms => Room
> RoomTypes => RoomType
> PrivateMessages => PrivateMessage
> Salutations => Salutation
> UserContacts => UserContact
>
> The table name should stay the same, for example:
> Java Object: User => Table name: users
> From my point of view a table is a List of users, so in that sense plural
> is ok.
>
> This refactoring will only affect the Java Object _names_ NO attribute
> name changes.
> Attribute names will stay the same (for now). You might claim that this is
> only 50% of the work, but it would otherwise need heavy refactoring all
> over the existing OpenLaszlo client. And we can't handle that as we would
> rely on search+find mechanism.
>
> So for now it will be that the "User"-Object has an attribute of Type
> "Address" but which attribute name is "adresses". Which is inconsistent but
> from my point of view a step in the right direction.
>
> As soon as we have a Wicket only interface, we can effectively
> refactor/rename attribute names and Eclipse will update most of the
> references.
>
> What do you think about it?
> How would this change affect the Backup Export/Import from your point of
> view? Would it work (theoretically) or is there already an issue with this
> change?
>
> Sebastian
>
> 2012/9/30 Maxim Solodovnik <so...@gmail.com>
>
>> done.
>>
>> As you wish :) I'm not adding it myself since I believe it is always
>> possible to find via SVN history who was the author :)
>>
>>
>> On Sun, Sep 30, 2012 at 2:59 PM, seba.wagner@gmail.com <
>> seba.wagner@gmail.com> wrote:
>>
>>> ++ I hope you don't mind if I complete the header javaDoc of the classes
>>> with the author information including your name :)
>>>
>>> Sebastoan
>>>
>>> 2012/9/30 seba.wagner@gmail.com <se...@gmail.com>
>>>
>>> Hi Maxim,
>>>>
>>>> public Server getServerWithMinimumUsers() in the ServerDaoImpl:
>>>> I tried to understand it but I did not fully understood the operations
>>>> involved in that method.
>>>>
>>>> Could you please write a short sentence/notice in the javaDoc at this
>>>> method explaining it?
>>>>
>>>> Thanks!
>>>> Sebastian
>>>>
>>>> ---------- Forwarded message ----------
>>>> From: <se...@apache.org>
>>>> Date: 2012/9/30
>>>> Subject: svn commit: r1391961 - in
>>>> /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
>>>> axis/services/ data/basic/dao/ persistence/beans/basic/ remote/
>>>> web/components/admin/servers/
>>>> To: openmeetings-commits@incubator.apache.org
>>>>
>>>>
>>>> Author: sebawagner
>>>> Date: Sun Sep 30 07:52:45 2012
>>>> New Revision: 1391961
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1391961&view=rev
>>>> Log:
>>>> OPENMEETINGS-434 complete Server/serverDaoImpl CRUD via Wicket, add
>>>> "comments,inserted,insertedby,updated,updatedby" fields in Server entity
>>>>
>>>> Modified:
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>>
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -62,7 +62,7 @@ public class ServerWebService {
>>>>                 Long user_level =
>>>> userManagement.getUserLevelByID(users_id);
>>>>
>>>>                 if
>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>> -                       return serversDao.getServerList(start,
>>>> max).toArray(new Server[0]);
>>>> +                       return serversDao.get(start, max).toArray(new
>>>> Server[0]);
>>>>                 } else {
>>>>                         log.warn("Insuffisient permissions");
>>>>                         return null;
>>>> @@ -81,7 +81,7 @@ public class ServerWebService {
>>>>                 Long user_level =
>>>> userManagement.getUserLevelByID(users_id);
>>>>
>>>>                 if
>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>> -                       return (int)serversDao.getServerCount();
>>>> +                       return (int)serversDao.count();
>>>>                 } else {
>>>>                         log.warn("Insuffisient permissions");
>>>>                         return -1;
>>>> @@ -123,7 +123,7 @@ public class ServerWebService {
>>>>                 Long user_level =
>>>> userManagement.getUserLevelByID(users_id);
>>>>
>>>>                 if
>>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>>> -                       return serversDao.deleteServer(id);
>>>> +                       return serversDao.delete(id);
>>>>                 } else {
>>>>                         log.warn("Insuffisient permissions");
>>>>                         return false;
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -18,27 +18,47 @@
>>>>   */
>>>>  package org.apache.openmeetings.data.basic.dao;
>>>>
>>>> +import java.util.Date;
>>>>  import java.util.List;
>>>>
>>>>  import javax.persistence.EntityManager;
>>>>  import javax.persistence.NoResultException;
>>>>  import javax.persistence.PersistenceContext;
>>>> +import javax.persistence.PersistenceException;
>>>>  import javax.persistence.TypedQuery;
>>>>
>>>>  import org.apache.openmeetings.OpenmeetingsVariables;
>>>> +import org.apache.openmeetings.data.OmDAO;
>>>> +import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>>  import org.red5.logging.Red5LoggerFactory;
>>>>  import org.slf4j.Logger;
>>>> +import org.springframework.beans.factory.annotation.Autowired;
>>>>  import org.springframework.transaction.annotation.Transactional;
>>>>
>>>> +/**
>>>> + *
>>>> + * CRUD for {@link Server}
>>>> + *
>>>> + * @author solomax, swagner
>>>> + *
>>>> + */
>>>>  @Transactional
>>>> -public class ServerDaoImpl {
>>>> +public class ServerDaoImpl implements OmDAO<Server> {
>>>>         private static final Logger log = Red5LoggerFactory.getLogger(
>>>>                         ServerDaoImpl.class,
>>>> OpenmeetingsVariables.webAppRootKey);
>>>>
>>>>         @PersistenceContext
>>>>         private EntityManager em;
>>>>
>>>> +       @Autowired
>>>> +       private UsersDaoImpl usersDao;
>>>> +
>>>> +       /**
>>>> +        * Get a list of all available servers
>>>> +        *
>>>> +        * @return
>>>> +        */
>>>>         public List<Server> getServerList() {
>>>>                 log.debug("getServerList enter");
>>>>                 TypedQuery<Server> q =
>>>> em.createNamedQuery("getAllServers",
>>>> @@ -46,8 +66,12 @@ public class ServerDaoImpl {
>>>>                 return q.getResultList();
>>>>         }
>>>>
>>>> -
>>>> -       public List<Server> getServerList(int start, int max) {
>>>> +       /*
>>>> +        * (non-Javadoc)
>>>> +        *
>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(int, int)
>>>> +        */
>>>> +       public List<Server> get(int start, int max) {
>>>>                 log.debug("getServerList enter");
>>>>                 TypedQuery<Server> q =
>>>> em.createNamedQuery("getAllServers",
>>>>                                 Server.class);
>>>> @@ -57,14 +81,24 @@ public class ServerDaoImpl {
>>>>                 return q.getResultList();
>>>>         }
>>>>
>>>> -       public long getServerCount() {
>>>> +       /*
>>>> +        * (non-Javadoc)
>>>> +        *
>>>> +        * @see org.apache.openmeetings.data.OmDAO#count()
>>>> +        */
>>>> +       public long count() {
>>>>                 log.debug("getServerCount enter");
>>>>                 TypedQuery<Long> q =
>>>> em.createNamedQuery("getServerCount", Long.class);
>>>>
>>>>                 return q.getSingleResult();
>>>>         }
>>>>
>>>> -       public Server getServer(long id) {
>>>> +       /*
>>>> +        * (non-Javadoc)
>>>> +        *
>>>> +        * @see org.apache.openmeetings.data.OmDAO#get(long)
>>>> +        */
>>>> +       public Server get(long id) {
>>>>                 Server result = null;
>>>>                 log.debug("getServer enter, id = " + id);
>>>>                 TypedQuery<Server> q =
>>>> em.createNamedQuery("getServerById", Server.class);
>>>> @@ -77,6 +111,12 @@ public class ServerDaoImpl {
>>>>                 return result;
>>>>         }
>>>>
>>>> +       /**
>>>> +        * Get server by its address
>>>> +        *
>>>> +        * @param address
>>>> +        * @return
>>>> +        */
>>>>         public Server getServerByAddress(String address) {
>>>>                 log.debug("getServer enter, address = " + address);
>>>>                 TypedQuery<Server> q =
>>>> em.createNamedQuery("getServerByAddress", Server.class);
>>>> @@ -85,6 +125,11 @@ public class ServerDaoImpl {
>>>>                 return list.size() > 0 ? list.get(0) : null;
>>>>         }
>>>>
>>>> +       /**
>>>> +        * Get the number of minimum users for a server(?)
>>>> +        *
>>>> +        * @return
>>>> +        */
>>>>         public Server getServerWithMinimumUsers() {
>>>>                 Server result = null;
>>>>                 log.debug("getServerWithMinimumUsers enter");
>>>> @@ -95,7 +140,7 @@ public class ServerDaoImpl {
>>>>                         List<Object> r = q1.getResultList();
>>>>                         if (!r.isEmpty()) {
>>>>                                 // get server id from first line
>>>> -                               result =
>>>> getServer((Long)((Object[])r.get(0))[0]);
>>>> +                               result =
>>>> get((Long)((Object[])r.get(0))[0]);
>>>>                         }
>>>>                 } else {
>>>>                         result = l.get(0);
>>>> @@ -103,8 +148,17 @@ public class ServerDaoImpl {
>>>>                 return result;
>>>>         }
>>>>
>>>> +       /**
>>>> +        * @deprecated user standard mechanism of
>>>> +        *             {@link
>>>> OmDAO#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>> +        * @param id
>>>> +        * @param name
>>>> +        * @param address
>>>> +        * @return
>>>> +        */
>>>> +       @Deprecated
>>>>         public Server saveServer(long id, String name, String address) {
>>>> -               Server s = getServer(id);
>>>> +               Server s = get(id);
>>>>                 if (s == null) {
>>>>                         s = new Server();
>>>>                 }
>>>> @@ -114,8 +168,15 @@ public class ServerDaoImpl {
>>>>                 return em.merge(s);
>>>>         }
>>>>
>>>> -       public boolean deleteServer(long id) {
>>>> -               Server s = getServer(id);
>>>> +       /**
>>>> +        * @deprecated use standard mechanism of
>>>> +        *             {@link
>>>> OmDAO#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>>> +        * @param id
>>>> +        * @return
>>>> +        */
>>>> +       @Deprecated
>>>> +       public boolean delete(long id) {
>>>> +               Server s = get(id);
>>>>                 if (s == null) {
>>>>                         return false;
>>>>                 }
>>>> @@ -124,4 +185,45 @@ public class ServerDaoImpl {
>>>>
>>>>                 return true;
>>>>         }
>>>> +
>>>> +       /*
>>>> +        * (non-Javadoc)
>>>> +        *
>>>> +        * @see
>>>> +        *
>>>> org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
>>>> +        * .beans.OmEntity, long)
>>>> +        */
>>>> +       public void update(Server entity, long userId) {
>>>> +               try {
>>>> +                       if (entity.getId() <= 0) {
>>>> +                               entity.setInserted(new Date());
>>>> +
>>>> entity.setInsertedby(usersDao.get(userId));
>>>> +                               entity.setDeleted(false);
>>>> +                               em.persist(entity);
>>>> +                       } else {
>>>> +                               entity.setUpdated(new Date());
>>>> +
>>>> entity.setUpdatedby(usersDao.get(userId));
>>>> +                               entity.setDeleted(false);
>>>> +                               em.merge(entity);
>>>> +                       }
>>>> +               } catch (PersistenceException ex) {
>>>> +                       log.error("[update LdapConfig]", ex);
>>>> +               }
>>>> +       }
>>>> +
>>>> +       /*
>>>> +        * (non-Javadoc)
>>>> +        *
>>>> +        * @see
>>>> +        *
>>>> org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
>>>> +        * .beans.OmEntity, long)
>>>> +        */
>>>> +       public void delete(Server entity, long userId) {
>>>> +               if (entity.getId() >= 0) {
>>>> +                       entity.setUpdated(new Date());
>>>> +                       entity.setUpdatedby(usersDao.get(userId));
>>>> +                       entity.setDeleted(true);
>>>> +                       em.merge(entity);
>>>> +               }
>>>> +       }
>>>>  }
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -19,73 +19,97 @@
>>>>  package org.apache.openmeetings.persistence.beans.basic;
>>>>
>>>>  import java.io.Serializable;
>>>> +import java.util.Date;
>>>>
>>>>  import javax.persistence.Column;
>>>>  import javax.persistence.Entity;
>>>> +import javax.persistence.FetchType;
>>>>  import javax.persistence.GeneratedValue;
>>>>  import javax.persistence.GenerationType;
>>>>  import javax.persistence.Id;
>>>> +import javax.persistence.JoinColumn;
>>>> +import javax.persistence.Lob;
>>>> +import javax.persistence.ManyToOne;
>>>>  import javax.persistence.NamedQueries;
>>>>  import javax.persistence.NamedQuery;
>>>>  import javax.persistence.Table;
>>>>
>>>>  import org.apache.openmeetings.persistence.beans.OmEntity;
>>>> +import org.apache.openmeetings.persistence.beans.user.Users;
>>>>  import org.simpleframework.xml.Element;
>>>>  import org.simpleframework.xml.Root;
>>>>
>>>>  @Entity
>>>>  @NamedQueries({
>>>> -       @NamedQuery(name="getAllServers", query="SELECT s FROM Server s
>>>> WHERE s.deleted = false")
>>>> -       , @NamedQuery(name="getServerCount", query="SELECT COUNT(s)
>>>> FROM Server s WHERE s.deleted = false")
>>>> -       , @NamedQuery(name="getServerById", query="SELECT s FROM Server
>>>> s WHERE s.deleted = false AND s.id = :id")
>>>> -       , @NamedQuery(name="getServerByAddress", query="SELECT s FROM
>>>> Server s WHERE s.deleted = false AND s.address = :address")
>>>> -       , @NamedQuery(name="getServersWithNoUsers"
>>>> -               , query="SELECT s FROM Server s WHERE s.deleted = false
>>>> AND s.id NOT IN (SELECT u.server.id FROM Users u where u.server.id IS
>>>> NOT NULL)")
>>>> -       , @NamedQuery(name="getServerWithMinimumUsers"
>>>> -               , query="SELECT s.id, COUNT(u) AS cnt FROM Users u
>>>> JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt")
>>>> -})
>>>> +               @NamedQuery(name = "getAllServers", query = "SELECT s
>>>> FROM Server s WHERE s.deleted = false"),
>>>> +               @NamedQuery(name = "getServerCount", query = "SELECT
>>>> COUNT(s) FROM Server s WHERE s.deleted = false"),
>>>> +               @NamedQuery(name = "getServerById", query = "SELECT s
>>>> FROM Server s WHERE s.deleted = false AND s.id = :id"),
>>>> +               @NamedQuery(name = "getServerByAddress", query =
>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.address = :address"),
>>>> +               @NamedQuery(name = "getServersWithNoUsers", query =
>>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN
>>>> (SELECT u.server.id FROM Users u where u.server.id IS NOT NULL)"),
>>>> +               @NamedQuery(name = "getServerWithMinimumUsers", query =
>>>> "SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN u.server s WHERE
>>>> s.deleted = false GROUP BY s.id ORDER BY cnt") })
>>>>  @Table(name = "server")
>>>>  @Root
>>>>  public class Server implements Serializable, OmEntity {
>>>> +
>>>>         private static final long serialVersionUID =
>>>> -6822732074549167727L;
>>>> +
>>>>         @Id
>>>>         @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>> -       @Column(name="id")
>>>> -       @Element(data=true)
>>>> -       private Long id;
>>>> -
>>>> -       @Column(name="name")
>>>> -       @Element(data=true)
>>>> +       @Column(name = "id")
>>>> +       @Element(data = true)
>>>> +       private long id = 0;
>>>> +
>>>> +       @Column(name = "name")
>>>> +       @Element(data = true)
>>>>         private String name;
>>>> -
>>>> -       @Column(name="address")
>>>> -       @Element(data=true)
>>>> +
>>>> +       @Column(name = "address")
>>>> +       @Element(data = true)
>>>>         private String address;
>>>> -
>>>> -       @Column(name="deleted", nullable=false)
>>>> -       @Element(data=true)
>>>> +
>>>> +       @Column(name = "inserted")
>>>> +       public Date inserted;
>>>> +
>>>> +       @Column(name = "updated")
>>>> +       public Date updated;
>>>> +
>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>> +       @JoinColumn(name = "insertedby_id", updatable = true,
>>>> insertable = true)
>>>> +       public Users insertedby;
>>>> +
>>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>>> +       @JoinColumn(name = "updatedby_id", updatable = true, insertable
>>>> = true)
>>>> +       public Users updatedby;
>>>> +
>>>> +       @Lob
>>>> +       @Column(name = "comment_field", length = 2048)
>>>> +       @Element(data = true, required = false)
>>>> +       private String comment;
>>>> +
>>>> +       @Column(name = "deleted", nullable = false)
>>>> +       @Element(data = true)
>>>>         private boolean deleted = false;
>>>> -
>>>> +
>>>>         public Long getId() {
>>>>                 return id;
>>>>         }
>>>> -
>>>> +
>>>>         public void setId(Long id) {
>>>>                 this.id = id;
>>>>         }
>>>> -
>>>> +
>>>>         public String getName() {
>>>>                 return name;
>>>>         }
>>>> -
>>>> +
>>>>         public void setName(String name) {
>>>>                 this.name = name;
>>>>         }
>>>> -
>>>> +
>>>>         public String getAddress() {
>>>>                 return address;
>>>>         }
>>>> -
>>>> +
>>>>         public void setAddress(String address) {
>>>>                 this.address = address;
>>>>         }
>>>> @@ -98,6 +122,46 @@ public class Server implements Serializa
>>>>                 this.deleted = deleted;
>>>>         }
>>>>
>>>> +       public Date getInserted() {
>>>> +               return inserted;
>>>> +       }
>>>> +
>>>> +       public void setInserted(Date inserted) {
>>>> +               this.inserted = inserted;
>>>> +       }
>>>> +
>>>> +       public Date getUpdated() {
>>>> +               return updated;
>>>> +       }
>>>> +
>>>> +       public void setUpdated(Date updated) {
>>>> +               this.updated = updated;
>>>> +       }
>>>> +
>>>> +       public Users getInsertedby() {
>>>> +               return insertedby;
>>>> +       }
>>>> +
>>>> +       public void setInsertedby(Users insertedby) {
>>>> +               this.insertedby = insertedby;
>>>> +       }
>>>> +
>>>> +       public Users getUpdatedby() {
>>>> +               return updatedby;
>>>> +       }
>>>> +
>>>> +       public void setUpdatedby(Users updatedby) {
>>>> +               this.updatedby = updatedby;
>>>> +       }
>>>> +
>>>> +       public String getComment() {
>>>> +               return comment;
>>>> +       }
>>>> +
>>>> +       public void setComment(String comment) {
>>>> +               this.comment = comment;
>>>> +       }
>>>> +
>>>>         @Override
>>>>         public String toString() {
>>>>                 return "Server [id=" + id + ", name=" + name + ",
>>>> address=" + address
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -699,7 +699,7 @@ public class ConferenceService {
>>>>                         if (roomId > -1 && serverId > -1) {
>>>>                                 try {
>>>>                                         Rooms room =
>>>> roommanagement.getRoomById(roomId);
>>>> -
>>>> room.setServer(serverDao.getServer(serverId));
>>>> +
>>>> room.setServer(serverDao.get(serverId));
>>>>
>>>> roommanagement.updateRoomObject(room);
>>>>                                 } catch (Exception e) {
>>>>                                         log.error("Error while setting
>>>> server.");
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -495,7 +495,7 @@ public class UserService {
>>>>                         if (userId > -1 && serverId > -1) {
>>>>                                 try {
>>>>                                         Users user =
>>>> userManagement.getUserById(userId);
>>>> -
>>>> user.setServer(serverDao.getServer(serverId));
>>>> +
>>>> user.setServer(serverDao.get(serverId));
>>>>                                         userManagement.updateUser(user);
>>>>                                 } catch (Exception e) {
>>>>                                         log.error("Error while setting
>>>> server.");
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -18,24 +18,90 @@
>>>>   */
>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>
>>>> +import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>> +import org.apache.openmeetings.web.app.Application;
>>>> +import org.apache.openmeetings.web.app.WebSession;
>>>>  import org.apache.openmeetings.web.components.admin.AdminBaseForm;
>>>> +import org.apache.wicket.ajax.AjaxRequestTarget;
>>>>  import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
>>>> +import org.apache.wicket.datetime.markup.html.basic.DateLabel;
>>>> +import org.apache.wicket.markup.html.WebMarkupContainer;
>>>> +import org.apache.wicket.markup.html.basic.Label;
>>>> +import org.apache.wicket.markup.html.form.Form;
>>>> +import org.apache.wicket.markup.html.form.RequiredTextField;
>>>> +import org.apache.wicket.markup.html.form.TextArea;
>>>>  import org.apache.wicket.model.CompoundPropertyModel;
>>>>  import org.apache.wicket.util.time.Duration;
>>>>
>>>> +/**
>>>> + * Form component to insert/update/delete {@link Server}
>>>> + *
>>>> + * @author swagner
>>>> + *
>>>> + */
>>>>  public class ServerForm extends AdminBaseForm<Server> {
>>>>
>>>> +       private final WebMarkupContainer listContainer;
>>>>         private static final long serialVersionUID = 1L;
>>>>
>>>> -       public ServerForm(String id, final Server server) {
>>>> +       public ServerForm(String id, WebMarkupContainer listContainer,
>>>> +                       final Server server) {
>>>>                 super(id, new CompoundPropertyModel<Server>(server));
>>>>                 setOutputMarkupId(true);
>>>> +               this.listContainer = listContainer;
>>>> +
>>>> +               add(new RequiredTextField<String>("name"));
>>>> +               add(new RequiredTextField<String>("address"));
>>>> +               add(DateLabel.forDatePattern("inserted", "dd.MM.yyyy
>>>> HH:mm:ss"));
>>>> +               add(new Label("insertedby.login"));
>>>> +               add(DateLabel.forDatePattern("updated", "dd.MM.yyyy
>>>> HH:mm:ss"));
>>>> +               add(new Label("updatedby.login"));
>>>> +               add(new TextArea<String>("comment"));
>>>>
>>>> -
>>>>                 // attach an ajax validation behavior to all form
>>>> component's keydown
>>>>                 // event and throttle it down to once per second
>>>>                 AjaxFormValidatingBehavior.addToAllFormComponents(this,
>>>> "keydown",
>>>>                                 Duration.ONE_SECOND);
>>>>         }
>>>> +
>>>> +       @Override
>>>> +       protected void onSaveSubmit(AjaxRequestTarget target, Form<?>
>>>> form) {
>>>> +
>>>> Application.getBean(ServerDaoImpl.class).update(getModelObject(),
>>>> +                               WebSession.getUserId());
>>>> +               Server server =
>>>> Application.getBean(ServerDaoImpl.class).get(
>>>> +                               getModelObject().getId());
>>>> +               this.setModelObject(server);
>>>> +               target.add(this);
>>>> +               target.add(listContainer);
>>>> +       }
>>>> +
>>>> +       @Override
>>>> +       protected void onNewSubmit(AjaxRequestTarget target, Form<?>
>>>> form) {
>>>> +               this.setModelObject(new Server());
>>>> +               target.add(this);
>>>> +       }
>>>> +
>>>> +       @Override
>>>> +       protected void onRefreshSubmit(AjaxRequestTarget target,
>>>> Form<?> form) {
>>>> +               Server server = this.getModelObject();
>>>> +               if (server.getId() <= 0) {
>>>> +                       server =
>>>> Application.getBean(ServerDaoImpl.class).get(
>>>> +                                       server.getId());
>>>> +               } else {
>>>> +                       server = new Server();
>>>> +               }
>>>> +               this.setModelObject(server);
>>>> +               target.add(this);
>>>> +       }
>>>> +
>>>> +       @Override
>>>> +       protected void onDeleteSubmit(AjaxRequestTarget target, Form<?>
>>>> form) {
>>>> +
>>>> Application.getBean(ServerDaoImpl.class).delete(this.getModelObject(),
>>>> +                               WebSession.getUserId());
>>>> +               this.setModelObject(new Server());
>>>> +               target.add(listContainer);
>>>> +               target.add(this);
>>>> +       }
>>>> +
>>>>  }
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -49,6 +49,20 @@
>>>>                                 <td class="adminPanelColumnForm">
>>>>                                         <form wicket:id="form"
>>>> class="adminForm">
>>>>                                                 <div
>>>> wicket:id="buttons"></div>
>>>> +                                               <wicket:ommessage
>>>> key="1500" />: <input type="text" wicket:id="name"/>
>>>> +                                   <br/>
>>>> +                                   <wicket:ommessage key="1501" />:
>>>> <input type="text" wicket:id="address"/>
>>>> +                                   <br/>
>>>> +                                               <wicket:ommessage
>>>> key="1110" />: <span wicket:id="inserted"/>
>>>> +                                   <br/>
>>>> +                                   <wicket:ommessage key="1111" />:
>>>> <span wicket:id="insertedby.login"/>
>>>> +                                   <br/>
>>>> +                                   <wicket:ommessage key="1112" />:
>>>> <span wicket:id="updated"/>
>>>> +                                   <br/>
>>>> +                                   <wicket:ommessage key="1113" />:
>>>> <span wicket:id="updatedby.login"/>
>>>> +                                   <br/>
>>>> +                                   <wicket:ommessage key="270" />:
>>>> <textarea wicket:id="comment"/>
>>>> +                                   <br/>
>>>>                                         </form>
>>>>                                 </td>
>>>>                         </tr>
>>>>
>>>> Modified:
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>> (original)
>>>> +++
>>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>> Sun Sep 30 07:52:45 2012
>>>> @@ -18,13 +18,11 @@
>>>>   */
>>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>>
>>>> -import java.util.Iterator;
>>>> -
>>>>  import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>> -import org.apache.openmeetings.web.app.Application;
>>>>  import org.apache.openmeetings.web.components.admin.AdminPanel;
>>>>  import
>>>> org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
>>>> +import org.apache.openmeetings.web.data.OmDataProvider;
>>>>  import org.apache.wicket.AttributeModifier;
>>>>  import org.apache.wicket.ajax.AjaxEventBehavior;
>>>>  import org.apache.wicket.ajax.AjaxRequestTarget;
>>>> @@ -32,10 +30,13 @@ import org.apache.wicket.markup.html.Web
>>>>  import org.apache.wicket.markup.html.basic.Label;
>>>>  import org.apache.wicket.markup.repeater.Item;
>>>>  import org.apache.wicket.markup.repeater.data.DataView;
>>>> -import org.apache.wicket.markup.repeater.data.IDataProvider;
>>>> -import org.apache.wicket.model.CompoundPropertyModel;
>>>> -import org.apache.wicket.model.IModel;
>>>>
>>>> +/**
>>>> + * Form component with list and form to manipulate {@link Server}
>>>> + *
>>>> + * @author swagner
>>>> + *
>>>> + */
>>>>  public class ServersPanel extends AdminPanel {
>>>>
>>>>         private static final long serialVersionUID = -1L;
>>>> @@ -43,26 +44,8 @@ public class ServersPanel extends AdminP
>>>>
>>>>         public ServersPanel(String id) {
>>>>                 super(id);
>>>> -               DataView<Server> dataView = new
>>>> DataView<Server>("serverList", new IDataProvider<Server>(){
>>>> -                       private static final long serialVersionUID =
>>>> -1L;
>>>> -
>>>> -                       public void detach() {
>>>> -                               //empty
>>>> -                       }
>>>> -
>>>> -                       public Iterator<? extends Server> iterator(long
>>>> first, long count) {
>>>> -                               return
>>>> Application.getBean(ServerDaoImpl.class).getServerList((int)first,
>>>> (int)count).iterator();
>>>> -                       }
>>>> -
>>>> -                       public long size() {
>>>> -                               return
>>>> Application.getBean(ServerDaoImpl.class).getServerCount();
>>>> -                       }
>>>> -
>>>> -                       public IModel<Server> model(Server object) {
>>>> -                               return new
>>>> CompoundPropertyModel<Server>(object);
>>>> -                       }
>>>> -
>>>> -               }) {
>>>> +               DataView<Server> dataView = new
>>>> DataView<Server>("serverList",
>>>> +                               new
>>>> OmDataProvider<Server>(ServerDaoImpl.class)) {
>>>>                         private static final long serialVersionUID =
>>>> 8715559628755439596L;
>>>>
>>>>                         @Override
>>>> @@ -95,7 +78,7 @@ public class ServersPanel extends AdminP
>>>>                 });
>>>>
>>>>                 Server Server = new Server();
>>>> -               form = new ServerForm("form", Server);
>>>> +               form = new ServerForm("form", listContainer, Server);
>>>>          add(form);
>>>>
>>>>         }
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Sebastian Wagner
>>>> https://twitter.com/#!/dead_lock
>>>> http://www.webbase-design.de
>>>> http://www.wagner-sebastian.com
>>>> seba.wagner@gmail.com
>>>>
>>>
>>>
>>>
>>> --
>>> Sebastian Wagner
>>> https://twitter.com/#!/dead_lock
>>> http://www.webbase-design.de
>>> http://www.wagner-sebastian.com
>>> seba.wagner@gmail.com
>>>
>>
>>
>>
>> --
>> WBR
>> Maxim aka solomax
>>
>
>
>
> --
> Sebastian Wagner
> https://twitter.com/#!/dead_lock
> http://www.webbase-design.de
> http://www.wagner-sebastian.com
> seba.wagner@gmail.com
>



-- 
WBR
Maxim aka solomax

Re: svn commit: r1391961 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ data/basic/dao/ persistence/beans/basic/ remote/ web/components/admin/servers/

Posted by "seba.wagner@gmail.com" <se...@gmail.com>.
Thanks Maxim!

I think we might also discuss those issues:

I would like to rename some classes:
OmDAO => OmDao
Users => User
Adresses => Address
States => State
ErrorValues => ErrorValue
AppointmentReminderTyps => AppointmentReminderType
Organisation_Users => OrganisationUser
Invitations => Invitation
Fieldlanguagesvalues => Fieldlanguagesvalue
Fieldvalues => Fieldvalue
RoomPollAnswers => RoomPollAnswer
RoomModerators => RoomModerator
Rooms_Organisation => RoomOrganisation
Rooms => Room
RoomTypes => RoomType
PrivateMessages => PrivateMessage
Salutations => Salutation
UserContacts => UserContact

The table name should stay the same, for example:
Java Object: User => Table name: users
>From my point of view a table is a List of users, so in that sense plural
is ok.

This refactoring will only affect the Java Object _names_ NO attribute name
changes.
Attribute names will stay the same (for now). You might claim that this is
only 50% of the work, but it would otherwise need heavy refactoring all
over the existing OpenLaszlo client. And we can't handle that as we would
rely on search+find mechanism.

So for now it will be that the "User"-Object has an attribute of Type
"Address" but which attribute name is "adresses". Which is inconsistent but
from my point of view a step in the right direction.

As soon as we have a Wicket only interface, we can effectively
refactor/rename attribute names and Eclipse will update most of the
references.

What do you think about it?
How would this change affect the Backup Export/Import from your point of
view? Would it work (theoretically) or is there already an issue with this
change?

Sebastian

2012/9/30 Maxim Solodovnik <so...@gmail.com>

> done.
>
> As you wish :) I'm not adding it myself since I believe it is always
> possible to find via SVN history who was the author :)
>
>
> On Sun, Sep 30, 2012 at 2:59 PM, seba.wagner@gmail.com <
> seba.wagner@gmail.com> wrote:
>
>> ++ I hope you don't mind if I complete the header javaDoc of the classes
>> with the author information including your name :)
>>
>> Sebastoan
>>
>> 2012/9/30 seba.wagner@gmail.com <se...@gmail.com>
>>
>> Hi Maxim,
>>>
>>> public Server getServerWithMinimumUsers() in the ServerDaoImpl:
>>> I tried to understand it but I did not fully understood the operations
>>> involved in that method.
>>>
>>> Could you please write a short sentence/notice in the javaDoc at this
>>> method explaining it?
>>>
>>> Thanks!
>>> Sebastian
>>>
>>> ---------- Forwarded message ----------
>>> From: <se...@apache.org>
>>> Date: 2012/9/30
>>> Subject: svn commit: r1391961 - in
>>> /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
>>> axis/services/ data/basic/dao/ persistence/beans/basic/ remote/
>>> web/components/admin/servers/
>>> To: openmeetings-commits@incubator.apache.org
>>>
>>>
>>> Author: sebawagner
>>> Date: Sun Sep 30 07:52:45 2012
>>> New Revision: 1391961
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1391961&view=rev
>>> Log:
>>> OPENMEETINGS-434 complete Server/serverDaoImpl CRUD via Wicket, add
>>> "comments,inserted,insertedby,updated,updatedby" fields in Server entity
>>>
>>> Modified:
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>>
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>> Sun Sep 30 07:52:45 2012
>>> @@ -62,7 +62,7 @@ public class ServerWebService {
>>>                 Long user_level =
>>> userManagement.getUserLevelByID(users_id);
>>>
>>>                 if
>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>> -                       return serversDao.getServerList(start,
>>> max).toArray(new Server[0]);
>>> +                       return serversDao.get(start, max).toArray(new
>>> Server[0]);
>>>                 } else {
>>>                         log.warn("Insuffisient permissions");
>>>                         return null;
>>> @@ -81,7 +81,7 @@ public class ServerWebService {
>>>                 Long user_level =
>>> userManagement.getUserLevelByID(users_id);
>>>
>>>                 if
>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>> -                       return (int)serversDao.getServerCount();
>>> +                       return (int)serversDao.count();
>>>                 } else {
>>>                         log.warn("Insuffisient permissions");
>>>                         return -1;
>>> @@ -123,7 +123,7 @@ public class ServerWebService {
>>>                 Long user_level =
>>> userManagement.getUserLevelByID(users_id);
>>>
>>>                 if
>>> (authLevelManagement.checkWebServiceLevel(user_level)) {
>>> -                       return serversDao.deleteServer(id);
>>> +                       return serversDao.delete(id);
>>>                 } else {
>>>                         log.warn("Insuffisient permissions");
>>>                         return false;
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>> Sun Sep 30 07:52:45 2012
>>> @@ -18,27 +18,47 @@
>>>   */
>>>  package org.apache.openmeetings.data.basic.dao;
>>>
>>> +import java.util.Date;
>>>  import java.util.List;
>>>
>>>  import javax.persistence.EntityManager;
>>>  import javax.persistence.NoResultException;
>>>  import javax.persistence.PersistenceContext;
>>> +import javax.persistence.PersistenceException;
>>>  import javax.persistence.TypedQuery;
>>>
>>>  import org.apache.openmeetings.OpenmeetingsVariables;
>>> +import org.apache.openmeetings.data.OmDAO;
>>> +import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>>  import org.red5.logging.Red5LoggerFactory;
>>>  import org.slf4j.Logger;
>>> +import org.springframework.beans.factory.annotation.Autowired;
>>>  import org.springframework.transaction.annotation.Transactional;
>>>
>>> +/**
>>> + *
>>> + * CRUD for {@link Server}
>>> + *
>>> + * @author solomax, swagner
>>> + *
>>> + */
>>>  @Transactional
>>> -public class ServerDaoImpl {
>>> +public class ServerDaoImpl implements OmDAO<Server> {
>>>         private static final Logger log = Red5LoggerFactory.getLogger(
>>>                         ServerDaoImpl.class,
>>> OpenmeetingsVariables.webAppRootKey);
>>>
>>>         @PersistenceContext
>>>         private EntityManager em;
>>>
>>> +       @Autowired
>>> +       private UsersDaoImpl usersDao;
>>> +
>>> +       /**
>>> +        * Get a list of all available servers
>>> +        *
>>> +        * @return
>>> +        */
>>>         public List<Server> getServerList() {
>>>                 log.debug("getServerList enter");
>>>                 TypedQuery<Server> q =
>>> em.createNamedQuery("getAllServers",
>>> @@ -46,8 +66,12 @@ public class ServerDaoImpl {
>>>                 return q.getResultList();
>>>         }
>>>
>>> -
>>> -       public List<Server> getServerList(int start, int max) {
>>> +       /*
>>> +        * (non-Javadoc)
>>> +        *
>>> +        * @see org.apache.openmeetings.data.OmDAO#get(int, int)
>>> +        */
>>> +       public List<Server> get(int start, int max) {
>>>                 log.debug("getServerList enter");
>>>                 TypedQuery<Server> q =
>>> em.createNamedQuery("getAllServers",
>>>                                 Server.class);
>>> @@ -57,14 +81,24 @@ public class ServerDaoImpl {
>>>                 return q.getResultList();
>>>         }
>>>
>>> -       public long getServerCount() {
>>> +       /*
>>> +        * (non-Javadoc)
>>> +        *
>>> +        * @see org.apache.openmeetings.data.OmDAO#count()
>>> +        */
>>> +       public long count() {
>>>                 log.debug("getServerCount enter");
>>>                 TypedQuery<Long> q =
>>> em.createNamedQuery("getServerCount", Long.class);
>>>
>>>                 return q.getSingleResult();
>>>         }
>>>
>>> -       public Server getServer(long id) {
>>> +       /*
>>> +        * (non-Javadoc)
>>> +        *
>>> +        * @see org.apache.openmeetings.data.OmDAO#get(long)
>>> +        */
>>> +       public Server get(long id) {
>>>                 Server result = null;
>>>                 log.debug("getServer enter, id = " + id);
>>>                 TypedQuery<Server> q =
>>> em.createNamedQuery("getServerById", Server.class);
>>> @@ -77,6 +111,12 @@ public class ServerDaoImpl {
>>>                 return result;
>>>         }
>>>
>>> +       /**
>>> +        * Get server by its address
>>> +        *
>>> +        * @param address
>>> +        * @return
>>> +        */
>>>         public Server getServerByAddress(String address) {
>>>                 log.debug("getServer enter, address = " + address);
>>>                 TypedQuery<Server> q =
>>> em.createNamedQuery("getServerByAddress", Server.class);
>>> @@ -85,6 +125,11 @@ public class ServerDaoImpl {
>>>                 return list.size() > 0 ? list.get(0) : null;
>>>         }
>>>
>>> +       /**
>>> +        * Get the number of minimum users for a server(?)
>>> +        *
>>> +        * @return
>>> +        */
>>>         public Server getServerWithMinimumUsers() {
>>>                 Server result = null;
>>>                 log.debug("getServerWithMinimumUsers enter");
>>> @@ -95,7 +140,7 @@ public class ServerDaoImpl {
>>>                         List<Object> r = q1.getResultList();
>>>                         if (!r.isEmpty()) {
>>>                                 // get server id from first line
>>> -                               result =
>>> getServer((Long)((Object[])r.get(0))[0]);
>>> +                               result =
>>> get((Long)((Object[])r.get(0))[0]);
>>>                         }
>>>                 } else {
>>>                         result = l.get(0);
>>> @@ -103,8 +148,17 @@ public class ServerDaoImpl {
>>>                 return result;
>>>         }
>>>
>>> +       /**
>>> +        * @deprecated user standard mechanism of
>>> +        *             {@link
>>> OmDAO#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>> +        * @param id
>>> +        * @param name
>>> +        * @param address
>>> +        * @return
>>> +        */
>>> +       @Deprecated
>>>         public Server saveServer(long id, String name, String address) {
>>> -               Server s = getServer(id);
>>> +               Server s = get(id);
>>>                 if (s == null) {
>>>                         s = new Server();
>>>                 }
>>> @@ -114,8 +168,15 @@ public class ServerDaoImpl {
>>>                 return em.merge(s);
>>>         }
>>>
>>> -       public boolean deleteServer(long id) {
>>> -               Server s = getServer(id);
>>> +       /**
>>> +        * @deprecated use standard mechanism of
>>> +        *             {@link
>>> OmDAO#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>>> +        * @param id
>>> +        * @return
>>> +        */
>>> +       @Deprecated
>>> +       public boolean delete(long id) {
>>> +               Server s = get(id);
>>>                 if (s == null) {
>>>                         return false;
>>>                 }
>>> @@ -124,4 +185,45 @@ public class ServerDaoImpl {
>>>
>>>                 return true;
>>>         }
>>> +
>>> +       /*
>>> +        * (non-Javadoc)
>>> +        *
>>> +        * @see
>>> +        *
>>> org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
>>> +        * .beans.OmEntity, long)
>>> +        */
>>> +       public void update(Server entity, long userId) {
>>> +               try {
>>> +                       if (entity.getId() <= 0) {
>>> +                               entity.setInserted(new Date());
>>> +
>>> entity.setInsertedby(usersDao.get(userId));
>>> +                               entity.setDeleted(false);
>>> +                               em.persist(entity);
>>> +                       } else {
>>> +                               entity.setUpdated(new Date());
>>> +
>>> entity.setUpdatedby(usersDao.get(userId));
>>> +                               entity.setDeleted(false);
>>> +                               em.merge(entity);
>>> +                       }
>>> +               } catch (PersistenceException ex) {
>>> +                       log.error("[update LdapConfig]", ex);
>>> +               }
>>> +       }
>>> +
>>> +       /*
>>> +        * (non-Javadoc)
>>> +        *
>>> +        * @see
>>> +        *
>>> org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
>>> +        * .beans.OmEntity, long)
>>> +        */
>>> +       public void delete(Server entity, long userId) {
>>> +               if (entity.getId() >= 0) {
>>> +                       entity.setUpdated(new Date());
>>> +                       entity.setUpdatedby(usersDao.get(userId));
>>> +                       entity.setDeleted(true);
>>> +                       em.merge(entity);
>>> +               }
>>> +       }
>>>  }
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>> Sun Sep 30 07:52:45 2012
>>> @@ -19,73 +19,97 @@
>>>  package org.apache.openmeetings.persistence.beans.basic;
>>>
>>>  import java.io.Serializable;
>>> +import java.util.Date;
>>>
>>>  import javax.persistence.Column;
>>>  import javax.persistence.Entity;
>>> +import javax.persistence.FetchType;
>>>  import javax.persistence.GeneratedValue;
>>>  import javax.persistence.GenerationType;
>>>  import javax.persistence.Id;
>>> +import javax.persistence.JoinColumn;
>>> +import javax.persistence.Lob;
>>> +import javax.persistence.ManyToOne;
>>>  import javax.persistence.NamedQueries;
>>>  import javax.persistence.NamedQuery;
>>>  import javax.persistence.Table;
>>>
>>>  import org.apache.openmeetings.persistence.beans.OmEntity;
>>> +import org.apache.openmeetings.persistence.beans.user.Users;
>>>  import org.simpleframework.xml.Element;
>>>  import org.simpleframework.xml.Root;
>>>
>>>  @Entity
>>>  @NamedQueries({
>>> -       @NamedQuery(name="getAllServers", query="SELECT s FROM Server s
>>> WHERE s.deleted = false")
>>> -       , @NamedQuery(name="getServerCount", query="SELECT COUNT(s) FROM
>>> Server s WHERE s.deleted = false")
>>> -       , @NamedQuery(name="getServerById", query="SELECT s FROM Server
>>> s WHERE s.deleted = false AND s.id = :id")
>>> -       , @NamedQuery(name="getServerByAddress", query="SELECT s FROM
>>> Server s WHERE s.deleted = false AND s.address = :address")
>>> -       , @NamedQuery(name="getServersWithNoUsers"
>>> -               , query="SELECT s FROM Server s WHERE s.deleted = false
>>> AND s.id NOT IN (SELECT u.server.id FROM Users u where u.server.id IS
>>> NOT NULL)")
>>> -       , @NamedQuery(name="getServerWithMinimumUsers"
>>> -               , query="SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN
>>> u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt")
>>> -})
>>> +               @NamedQuery(name = "getAllServers", query = "SELECT s
>>> FROM Server s WHERE s.deleted = false"),
>>> +               @NamedQuery(name = "getServerCount", query = "SELECT
>>> COUNT(s) FROM Server s WHERE s.deleted = false"),
>>> +               @NamedQuery(name = "getServerById", query = "SELECT s
>>> FROM Server s WHERE s.deleted = false AND s.id = :id"),
>>> +               @NamedQuery(name = "getServerByAddress", query = "SELECT
>>> s FROM Server s WHERE s.deleted = false AND s.address = :address"),
>>> +               @NamedQuery(name = "getServersWithNoUsers", query =
>>> "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT
>>> u.server.id FROM Users u where u.server.id IS NOT NULL)"),
>>> +               @NamedQuery(name = "getServerWithMinimumUsers", query =
>>> "SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN u.server s WHERE
>>> s.deleted = false GROUP BY s.id ORDER BY cnt") })
>>>  @Table(name = "server")
>>>  @Root
>>>  public class Server implements Serializable, OmEntity {
>>> +
>>>         private static final long serialVersionUID =
>>> -6822732074549167727L;
>>> +
>>>         @Id
>>>         @GeneratedValue(strategy = GenerationType.IDENTITY)
>>> -       @Column(name="id")
>>> -       @Element(data=true)
>>> -       private Long id;
>>> -
>>> -       @Column(name="name")
>>> -       @Element(data=true)
>>> +       @Column(name = "id")
>>> +       @Element(data = true)
>>> +       private long id = 0;
>>> +
>>> +       @Column(name = "name")
>>> +       @Element(data = true)
>>>         private String name;
>>> -
>>> -       @Column(name="address")
>>> -       @Element(data=true)
>>> +
>>> +       @Column(name = "address")
>>> +       @Element(data = true)
>>>         private String address;
>>> -
>>> -       @Column(name="deleted", nullable=false)
>>> -       @Element(data=true)
>>> +
>>> +       @Column(name = "inserted")
>>> +       public Date inserted;
>>> +
>>> +       @Column(name = "updated")
>>> +       public Date updated;
>>> +
>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>> +       @JoinColumn(name = "insertedby_id", updatable = true, insertable
>>> = true)
>>> +       public Users insertedby;
>>> +
>>> +       @ManyToOne(fetch = FetchType.EAGER)
>>> +       @JoinColumn(name = "updatedby_id", updatable = true, insertable
>>> = true)
>>> +       public Users updatedby;
>>> +
>>> +       @Lob
>>> +       @Column(name = "comment_field", length = 2048)
>>> +       @Element(data = true, required = false)
>>> +       private String comment;
>>> +
>>> +       @Column(name = "deleted", nullable = false)
>>> +       @Element(data = true)
>>>         private boolean deleted = false;
>>> -
>>> +
>>>         public Long getId() {
>>>                 return id;
>>>         }
>>> -
>>> +
>>>         public void setId(Long id) {
>>>                 this.id = id;
>>>         }
>>> -
>>> +
>>>         public String getName() {
>>>                 return name;
>>>         }
>>> -
>>> +
>>>         public void setName(String name) {
>>>                 this.name = name;
>>>         }
>>> -
>>> +
>>>         public String getAddress() {
>>>                 return address;
>>>         }
>>> -
>>> +
>>>         public void setAddress(String address) {
>>>                 this.address = address;
>>>         }
>>> @@ -98,6 +122,46 @@ public class Server implements Serializa
>>>                 this.deleted = deleted;
>>>         }
>>>
>>> +       public Date getInserted() {
>>> +               return inserted;
>>> +       }
>>> +
>>> +       public void setInserted(Date inserted) {
>>> +               this.inserted = inserted;
>>> +       }
>>> +
>>> +       public Date getUpdated() {
>>> +               return updated;
>>> +       }
>>> +
>>> +       public void setUpdated(Date updated) {
>>> +               this.updated = updated;
>>> +       }
>>> +
>>> +       public Users getInsertedby() {
>>> +               return insertedby;
>>> +       }
>>> +
>>> +       public void setInsertedby(Users insertedby) {
>>> +               this.insertedby = insertedby;
>>> +       }
>>> +
>>> +       public Users getUpdatedby() {
>>> +               return updatedby;
>>> +       }
>>> +
>>> +       public void setUpdatedby(Users updatedby) {
>>> +               this.updatedby = updatedby;
>>> +       }
>>> +
>>> +       public String getComment() {
>>> +               return comment;
>>> +       }
>>> +
>>> +       public void setComment(String comment) {
>>> +               this.comment = comment;
>>> +       }
>>> +
>>>         @Override
>>>         public String toString() {
>>>                 return "Server [id=" + id + ", name=" + name + ",
>>> address=" + address
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>> Sun Sep 30 07:52:45 2012
>>> @@ -699,7 +699,7 @@ public class ConferenceService {
>>>                         if (roomId > -1 && serverId > -1) {
>>>                                 try {
>>>                                         Rooms room =
>>> roommanagement.getRoomById(roomId);
>>> -
>>> room.setServer(serverDao.getServer(serverId));
>>> +
>>> room.setServer(serverDao.get(serverId));
>>>
>>> roommanagement.updateRoomObject(room);
>>>                                 } catch (Exception e) {
>>>                                         log.error("Error while setting
>>> server.");
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>> Sun Sep 30 07:52:45 2012
>>> @@ -495,7 +495,7 @@ public class UserService {
>>>                         if (userId > -1 && serverId > -1) {
>>>                                 try {
>>>                                         Users user =
>>> userManagement.getUserById(userId);
>>> -
>>> user.setServer(serverDao.getServer(serverId));
>>> +
>>> user.setServer(serverDao.get(serverId));
>>>                                         userManagement.updateUser(user);
>>>                                 } catch (Exception e) {
>>>                                         log.error("Error while setting
>>> server.");
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>> Sun Sep 30 07:52:45 2012
>>> @@ -18,24 +18,90 @@
>>>   */
>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>
>>> +import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>> +import org.apache.openmeetings.web.app.Application;
>>> +import org.apache.openmeetings.web.app.WebSession;
>>>  import org.apache.openmeetings.web.components.admin.AdminBaseForm;
>>> +import org.apache.wicket.ajax.AjaxRequestTarget;
>>>  import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
>>> +import org.apache.wicket.datetime.markup.html.basic.DateLabel;
>>> +import org.apache.wicket.markup.html.WebMarkupContainer;
>>> +import org.apache.wicket.markup.html.basic.Label;
>>> +import org.apache.wicket.markup.html.form.Form;
>>> +import org.apache.wicket.markup.html.form.RequiredTextField;
>>> +import org.apache.wicket.markup.html.form.TextArea;
>>>  import org.apache.wicket.model.CompoundPropertyModel;
>>>  import org.apache.wicket.util.time.Duration;
>>>
>>> +/**
>>> + * Form component to insert/update/delete {@link Server}
>>> + *
>>> + * @author swagner
>>> + *
>>> + */
>>>  public class ServerForm extends AdminBaseForm<Server> {
>>>
>>> +       private final WebMarkupContainer listContainer;
>>>         private static final long serialVersionUID = 1L;
>>>
>>> -       public ServerForm(String id, final Server server) {
>>> +       public ServerForm(String id, WebMarkupContainer listContainer,
>>> +                       final Server server) {
>>>                 super(id, new CompoundPropertyModel<Server>(server));
>>>                 setOutputMarkupId(true);
>>> +               this.listContainer = listContainer;
>>> +
>>> +               add(new RequiredTextField<String>("name"));
>>> +               add(new RequiredTextField<String>("address"));
>>> +               add(DateLabel.forDatePattern("inserted", "dd.MM.yyyy
>>> HH:mm:ss"));
>>> +               add(new Label("insertedby.login"));
>>> +               add(DateLabel.forDatePattern("updated", "dd.MM.yyyy
>>> HH:mm:ss"));
>>> +               add(new Label("updatedby.login"));
>>> +               add(new TextArea<String>("comment"));
>>>
>>> -
>>>                 // attach an ajax validation behavior to all form
>>> component's keydown
>>>                 // event and throttle it down to once per second
>>>                 AjaxFormValidatingBehavior.addToAllFormComponents(this,
>>> "keydown",
>>>                                 Duration.ONE_SECOND);
>>>         }
>>> +
>>> +       @Override
>>> +       protected void onSaveSubmit(AjaxRequestTarget target, Form<?>
>>> form) {
>>> +
>>> Application.getBean(ServerDaoImpl.class).update(getModelObject(),
>>> +                               WebSession.getUserId());
>>> +               Server server =
>>> Application.getBean(ServerDaoImpl.class).get(
>>> +                               getModelObject().getId());
>>> +               this.setModelObject(server);
>>> +               target.add(this);
>>> +               target.add(listContainer);
>>> +       }
>>> +
>>> +       @Override
>>> +       protected void onNewSubmit(AjaxRequestTarget target, Form<?>
>>> form) {
>>> +               this.setModelObject(new Server());
>>> +               target.add(this);
>>> +       }
>>> +
>>> +       @Override
>>> +       protected void onRefreshSubmit(AjaxRequestTarget target, Form<?>
>>> form) {
>>> +               Server server = this.getModelObject();
>>> +               if (server.getId() <= 0) {
>>> +                       server =
>>> Application.getBean(ServerDaoImpl.class).get(
>>> +                                       server.getId());
>>> +               } else {
>>> +                       server = new Server();
>>> +               }
>>> +               this.setModelObject(server);
>>> +               target.add(this);
>>> +       }
>>> +
>>> +       @Override
>>> +       protected void onDeleteSubmit(AjaxRequestTarget target, Form<?>
>>> form) {
>>> +
>>> Application.getBean(ServerDaoImpl.class).delete(this.getModelObject(),
>>> +                               WebSession.getUserId());
>>> +               this.setModelObject(new Server());
>>> +               target.add(listContainer);
>>> +               target.add(this);
>>> +       }
>>> +
>>>  }
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>> Sun Sep 30 07:52:45 2012
>>> @@ -49,6 +49,20 @@
>>>                                 <td class="adminPanelColumnForm">
>>>                                         <form wicket:id="form"
>>> class="adminForm">
>>>                                                 <div
>>> wicket:id="buttons"></div>
>>> +                                               <wicket:ommessage
>>> key="1500" />: <input type="text" wicket:id="name"/>
>>> +                                   <br/>
>>> +                                   <wicket:ommessage key="1501" />:
>>> <input type="text" wicket:id="address"/>
>>> +                                   <br/>
>>> +                                               <wicket:ommessage
>>> key="1110" />: <span wicket:id="inserted"/>
>>> +                                   <br/>
>>> +                                   <wicket:ommessage key="1111" />:
>>> <span wicket:id="insertedby.login"/>
>>> +                                   <br/>
>>> +                                   <wicket:ommessage key="1112" />:
>>> <span wicket:id="updated"/>
>>> +                                   <br/>
>>> +                                   <wicket:ommessage key="1113" />:
>>> <span wicket:id="updatedby.login"/>
>>> +                                   <br/>
>>> +                                   <wicket:ommessage key="270" />:
>>> <textarea wicket:id="comment"/>
>>> +                                   <br/>
>>>                                         </form>
>>>                                 </td>
>>>                         </tr>
>>>
>>> Modified:
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>> (original)
>>> +++
>>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>> Sun Sep 30 07:52:45 2012
>>> @@ -18,13 +18,11 @@
>>>   */
>>>  package org.apache.openmeetings.web.components.admin.servers;
>>>
>>> -import java.util.Iterator;
>>> -
>>>  import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>> -import org.apache.openmeetings.web.app.Application;
>>>  import org.apache.openmeetings.web.components.admin.AdminPanel;
>>>  import
>>> org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
>>> +import org.apache.openmeetings.web.data.OmDataProvider;
>>>  import org.apache.wicket.AttributeModifier;
>>>  import org.apache.wicket.ajax.AjaxEventBehavior;
>>>  import org.apache.wicket.ajax.AjaxRequestTarget;
>>> @@ -32,10 +30,13 @@ import org.apache.wicket.markup.html.Web
>>>  import org.apache.wicket.markup.html.basic.Label;
>>>  import org.apache.wicket.markup.repeater.Item;
>>>  import org.apache.wicket.markup.repeater.data.DataView;
>>> -import org.apache.wicket.markup.repeater.data.IDataProvider;
>>> -import org.apache.wicket.model.CompoundPropertyModel;
>>> -import org.apache.wicket.model.IModel;
>>>
>>> +/**
>>> + * Form component with list and form to manipulate {@link Server}
>>> + *
>>> + * @author swagner
>>> + *
>>> + */
>>>  public class ServersPanel extends AdminPanel {
>>>
>>>         private static final long serialVersionUID = -1L;
>>> @@ -43,26 +44,8 @@ public class ServersPanel extends AdminP
>>>
>>>         public ServersPanel(String id) {
>>>                 super(id);
>>> -               DataView<Server> dataView = new
>>> DataView<Server>("serverList", new IDataProvider<Server>(){
>>> -                       private static final long serialVersionUID = -1L;
>>> -
>>> -                       public void detach() {
>>> -                               //empty
>>> -                       }
>>> -
>>> -                       public Iterator<? extends Server> iterator(long
>>> first, long count) {
>>> -                               return
>>> Application.getBean(ServerDaoImpl.class).getServerList((int)first,
>>> (int)count).iterator();
>>> -                       }
>>> -
>>> -                       public long size() {
>>> -                               return
>>> Application.getBean(ServerDaoImpl.class).getServerCount();
>>> -                       }
>>> -
>>> -                       public IModel<Server> model(Server object) {
>>> -                               return new
>>> CompoundPropertyModel<Server>(object);
>>> -                       }
>>> -
>>> -               }) {
>>> +               DataView<Server> dataView = new
>>> DataView<Server>("serverList",
>>> +                               new
>>> OmDataProvider<Server>(ServerDaoImpl.class)) {
>>>                         private static final long serialVersionUID =
>>> 8715559628755439596L;
>>>
>>>                         @Override
>>> @@ -95,7 +78,7 @@ public class ServersPanel extends AdminP
>>>                 });
>>>
>>>                 Server Server = new Server();
>>> -               form = new ServerForm("form", Server);
>>> +               form = new ServerForm("form", listContainer, Server);
>>>          add(form);
>>>
>>>         }
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Sebastian Wagner
>>> https://twitter.com/#!/dead_lock
>>> http://www.webbase-design.de
>>> http://www.wagner-sebastian.com
>>> seba.wagner@gmail.com
>>>
>>
>>
>>
>> --
>> Sebastian Wagner
>> https://twitter.com/#!/dead_lock
>> http://www.webbase-design.de
>> http://www.wagner-sebastian.com
>> seba.wagner@gmail.com
>>
>
>
>
> --
> WBR
> Maxim aka solomax
>



-- 
Sebastian Wagner
https://twitter.com/#!/dead_lock
http://www.webbase-design.de
http://www.wagner-sebastian.com
seba.wagner@gmail.com

Re: svn commit: r1391961 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: axis/services/ data/basic/dao/ persistence/beans/basic/ remote/ web/components/admin/servers/

Posted by Maxim Solodovnik <so...@gmail.com>.
done.

As you wish :) I'm not adding it myself since I believe it is always
possible to find via SVN history who was the author :)

On Sun, Sep 30, 2012 at 2:59 PM, seba.wagner@gmail.com <
seba.wagner@gmail.com> wrote:

> ++ I hope you don't mind if I complete the header javaDoc of the classes
> with the author information including your name :)
>
> Sebastoan
>
> 2012/9/30 seba.wagner@gmail.com <se...@gmail.com>
>
> Hi Maxim,
>>
>> public Server getServerWithMinimumUsers() in the ServerDaoImpl:
>> I tried to understand it but I did not fully understood the operations
>> involved in that method.
>>
>> Could you please write a short sentence/notice in the javaDoc at this
>> method explaining it?
>>
>> Thanks!
>> Sebastian
>>
>> ---------- Forwarded message ----------
>> From: <se...@apache.org>
>> Date: 2012/9/30
>> Subject: svn commit: r1391961 - in
>> /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
>> axis/services/ data/basic/dao/ persistence/beans/basic/ remote/
>> web/components/admin/servers/
>> To: openmeetings-commits@incubator.apache.org
>>
>>
>> Author: sebawagner
>> Date: Sun Sep 30 07:52:45 2012
>> New Revision: 1391961
>>
>> URL: http://svn.apache.org/viewvc?rev=1391961&view=rev
>> Log:
>> OPENMEETINGS-434 complete Server/serverDaoImpl CRUD via Wicket, add
>> "comments,inserted,insertedby,updated,updatedby" fields in Server entity
>>
>> Modified:
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>>
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/ServerWebService.java
>> Sun Sep 30 07:52:45 2012
>> @@ -62,7 +62,7 @@ public class ServerWebService {
>>                 Long user_level =
>> userManagement.getUserLevelByID(users_id);
>>
>>                 if (authLevelManagement.checkWebServiceLevel(user_level))
>> {
>> -                       return serversDao.getServerList(start,
>> max).toArray(new Server[0]);
>> +                       return serversDao.get(start, max).toArray(new
>> Server[0]);
>>                 } else {
>>                         log.warn("Insuffisient permissions");
>>                         return null;
>> @@ -81,7 +81,7 @@ public class ServerWebService {
>>                 Long user_level =
>> userManagement.getUserLevelByID(users_id);
>>
>>                 if (authLevelManagement.checkWebServiceLevel(user_level))
>> {
>> -                       return (int)serversDao.getServerCount();
>> +                       return (int)serversDao.count();
>>                 } else {
>>                         log.warn("Insuffisient permissions");
>>                         return -1;
>> @@ -123,7 +123,7 @@ public class ServerWebService {
>>                 Long user_level =
>> userManagement.getUserLevelByID(users_id);
>>
>>                 if (authLevelManagement.checkWebServiceLevel(user_level))
>> {
>> -                       return serversDao.deleteServer(id);
>> +                       return serversDao.delete(id);
>>                 } else {
>>                         log.warn("Insuffisient permissions");
>>                         return false;
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/dao/ServerDaoImpl.java
>> Sun Sep 30 07:52:45 2012
>> @@ -18,27 +18,47 @@
>>   */
>>  package org.apache.openmeetings.data.basic.dao;
>>
>> +import java.util.Date;
>>  import java.util.List;
>>
>>  import javax.persistence.EntityManager;
>>  import javax.persistence.NoResultException;
>>  import javax.persistence.PersistenceContext;
>> +import javax.persistence.PersistenceException;
>>  import javax.persistence.TypedQuery;
>>
>>  import org.apache.openmeetings.OpenmeetingsVariables;
>> +import org.apache.openmeetings.data.OmDAO;
>> +import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>>  import org.red5.logging.Red5LoggerFactory;
>>  import org.slf4j.Logger;
>> +import org.springframework.beans.factory.annotation.Autowired;
>>  import org.springframework.transaction.annotation.Transactional;
>>
>> +/**
>> + *
>> + * CRUD for {@link Server}
>> + *
>> + * @author solomax, swagner
>> + *
>> + */
>>  @Transactional
>> -public class ServerDaoImpl {
>> +public class ServerDaoImpl implements OmDAO<Server> {
>>         private static final Logger log = Red5LoggerFactory.getLogger(
>>                         ServerDaoImpl.class,
>> OpenmeetingsVariables.webAppRootKey);
>>
>>         @PersistenceContext
>>         private EntityManager em;
>>
>> +       @Autowired
>> +       private UsersDaoImpl usersDao;
>> +
>> +       /**
>> +        * Get a list of all available servers
>> +        *
>> +        * @return
>> +        */
>>         public List<Server> getServerList() {
>>                 log.debug("getServerList enter");
>>                 TypedQuery<Server> q =
>> em.createNamedQuery("getAllServers",
>> @@ -46,8 +66,12 @@ public class ServerDaoImpl {
>>                 return q.getResultList();
>>         }
>>
>> -
>> -       public List<Server> getServerList(int start, int max) {
>> +       /*
>> +        * (non-Javadoc)
>> +        *
>> +        * @see org.apache.openmeetings.data.OmDAO#get(int, int)
>> +        */
>> +       public List<Server> get(int start, int max) {
>>                 log.debug("getServerList enter");
>>                 TypedQuery<Server> q =
>> em.createNamedQuery("getAllServers",
>>                                 Server.class);
>> @@ -57,14 +81,24 @@ public class ServerDaoImpl {
>>                 return q.getResultList();
>>         }
>>
>> -       public long getServerCount() {
>> +       /*
>> +        * (non-Javadoc)
>> +        *
>> +        * @see org.apache.openmeetings.data.OmDAO#count()
>> +        */
>> +       public long count() {
>>                 log.debug("getServerCount enter");
>>                 TypedQuery<Long> q =
>> em.createNamedQuery("getServerCount", Long.class);
>>
>>                 return q.getSingleResult();
>>         }
>>
>> -       public Server getServer(long id) {
>> +       /*
>> +        * (non-Javadoc)
>> +        *
>> +        * @see org.apache.openmeetings.data.OmDAO#get(long)
>> +        */
>> +       public Server get(long id) {
>>                 Server result = null;
>>                 log.debug("getServer enter, id = " + id);
>>                 TypedQuery<Server> q =
>> em.createNamedQuery("getServerById", Server.class);
>> @@ -77,6 +111,12 @@ public class ServerDaoImpl {
>>                 return result;
>>         }
>>
>> +       /**
>> +        * Get server by its address
>> +        *
>> +        * @param address
>> +        * @return
>> +        */
>>         public Server getServerByAddress(String address) {
>>                 log.debug("getServer enter, address = " + address);
>>                 TypedQuery<Server> q =
>> em.createNamedQuery("getServerByAddress", Server.class);
>> @@ -85,6 +125,11 @@ public class ServerDaoImpl {
>>                 return list.size() > 0 ? list.get(0) : null;
>>         }
>>
>> +       /**
>> +        * Get the number of minimum users for a server(?)
>> +        *
>> +        * @return
>> +        */
>>         public Server getServerWithMinimumUsers() {
>>                 Server result = null;
>>                 log.debug("getServerWithMinimumUsers enter");
>> @@ -95,7 +140,7 @@ public class ServerDaoImpl {
>>                         List<Object> r = q1.getResultList();
>>                         if (!r.isEmpty()) {
>>                                 // get server id from first line
>> -                               result =
>> getServer((Long)((Object[])r.get(0))[0]);
>> +                               result =
>> get((Long)((Object[])r.get(0))[0]);
>>                         }
>>                 } else {
>>                         result = l.get(0);
>> @@ -103,8 +148,17 @@ public class ServerDaoImpl {
>>                 return result;
>>         }
>>
>> +       /**
>> +        * @deprecated user standard mechanism of
>> +        *             {@link
>> OmDAO#update(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>> +        * @param id
>> +        * @param name
>> +        * @param address
>> +        * @return
>> +        */
>> +       @Deprecated
>>         public Server saveServer(long id, String name, String address) {
>> -               Server s = getServer(id);
>> +               Server s = get(id);
>>                 if (s == null) {
>>                         s = new Server();
>>                 }
>> @@ -114,8 +168,15 @@ public class ServerDaoImpl {
>>                 return em.merge(s);
>>         }
>>
>> -       public boolean deleteServer(long id) {
>> -               Server s = getServer(id);
>> +       /**
>> +        * @deprecated use standard mechanism of
>> +        *             {@link
>> OmDAO#delete(org.apache.openmeetings.persistence.beans.OmEntity, long)}
>> +        * @param id
>> +        * @return
>> +        */
>> +       @Deprecated
>> +       public boolean delete(long id) {
>> +               Server s = get(id);
>>                 if (s == null) {
>>                         return false;
>>                 }
>> @@ -124,4 +185,45 @@ public class ServerDaoImpl {
>>
>>                 return true;
>>         }
>> +
>> +       /*
>> +        * (non-Javadoc)
>> +        *
>> +        * @see
>> +        *
>> org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
>> +        * .beans.OmEntity, long)
>> +        */
>> +       public void update(Server entity, long userId) {
>> +               try {
>> +                       if (entity.getId() <= 0) {
>> +                               entity.setInserted(new Date());
>> +
>> entity.setInsertedby(usersDao.get(userId));
>> +                               entity.setDeleted(false);
>> +                               em.persist(entity);
>> +                       } else {
>> +                               entity.setUpdated(new Date());
>> +                               entity.setUpdatedby(usersDao.get(userId));
>> +                               entity.setDeleted(false);
>> +                               em.merge(entity);
>> +                       }
>> +               } catch (PersistenceException ex) {
>> +                       log.error("[update LdapConfig]", ex);
>> +               }
>> +       }
>> +
>> +       /*
>> +        * (non-Javadoc)
>> +        *
>> +        * @see
>> +        *
>> org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
>> +        * .beans.OmEntity, long)
>> +        */
>> +       public void delete(Server entity, long userId) {
>> +               if (entity.getId() >= 0) {
>> +                       entity.setUpdated(new Date());
>> +                       entity.setUpdatedby(usersDao.get(userId));
>> +                       entity.setDeleted(true);
>> +                       em.merge(entity);
>> +               }
>> +       }
>>  }
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Server.java
>> Sun Sep 30 07:52:45 2012
>> @@ -19,73 +19,97 @@
>>  package org.apache.openmeetings.persistence.beans.basic;
>>
>>  import java.io.Serializable;
>> +import java.util.Date;
>>
>>  import javax.persistence.Column;
>>  import javax.persistence.Entity;
>> +import javax.persistence.FetchType;
>>  import javax.persistence.GeneratedValue;
>>  import javax.persistence.GenerationType;
>>  import javax.persistence.Id;
>> +import javax.persistence.JoinColumn;
>> +import javax.persistence.Lob;
>> +import javax.persistence.ManyToOne;
>>  import javax.persistence.NamedQueries;
>>  import javax.persistence.NamedQuery;
>>  import javax.persistence.Table;
>>
>>  import org.apache.openmeetings.persistence.beans.OmEntity;
>> +import org.apache.openmeetings.persistence.beans.user.Users;
>>  import org.simpleframework.xml.Element;
>>  import org.simpleframework.xml.Root;
>>
>>  @Entity
>>  @NamedQueries({
>> -       @NamedQuery(name="getAllServers", query="SELECT s FROM Server s
>> WHERE s.deleted = false")
>> -       , @NamedQuery(name="getServerCount", query="SELECT COUNT(s) FROM
>> Server s WHERE s.deleted = false")
>> -       , @NamedQuery(name="getServerById", query="SELECT s FROM Server s
>> WHERE s.deleted = false AND s.id = :id")
>> -       , @NamedQuery(name="getServerByAddress", query="SELECT s FROM
>> Server s WHERE s.deleted = false AND s.address = :address")
>> -       , @NamedQuery(name="getServersWithNoUsers"
>> -               , query="SELECT s FROM Server s WHERE s.deleted = false
>> AND s.id NOT IN (SELECT u.server.id FROM Users u where u.server.id IS
>> NOT NULL)")
>> -       , @NamedQuery(name="getServerWithMinimumUsers"
>> -               , query="SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN
>> u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt")
>> -})
>> +               @NamedQuery(name = "getAllServers", query = "SELECT s
>> FROM Server s WHERE s.deleted = false"),
>> +               @NamedQuery(name = "getServerCount", query = "SELECT
>> COUNT(s) FROM Server s WHERE s.deleted = false"),
>> +               @NamedQuery(name = "getServerById", query = "SELECT s
>> FROM Server s WHERE s.deleted = false AND s.id = :id"),
>> +               @NamedQuery(name = "getServerByAddress", query = "SELECT
>> s FROM Server s WHERE s.deleted = false AND s.address = :address"),
>> +               @NamedQuery(name = "getServersWithNoUsers", query =
>> "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT
>> u.server.id FROM Users u where u.server.id IS NOT NULL)"),
>> +               @NamedQuery(name = "getServerWithMinimumUsers", query =
>> "SELECT s.id, COUNT(u) AS cnt FROM Users u JOIN u.server s WHERE
>> s.deleted = false GROUP BY s.id ORDER BY cnt") })
>>  @Table(name = "server")
>>  @Root
>>  public class Server implements Serializable, OmEntity {
>> +
>>         private static final long serialVersionUID =
>> -6822732074549167727L;
>> +
>>         @Id
>>         @GeneratedValue(strategy = GenerationType.IDENTITY)
>> -       @Column(name="id")
>> -       @Element(data=true)
>> -       private Long id;
>> -
>> -       @Column(name="name")
>> -       @Element(data=true)
>> +       @Column(name = "id")
>> +       @Element(data = true)
>> +       private long id = 0;
>> +
>> +       @Column(name = "name")
>> +       @Element(data = true)
>>         private String name;
>> -
>> -       @Column(name="address")
>> -       @Element(data=true)
>> +
>> +       @Column(name = "address")
>> +       @Element(data = true)
>>         private String address;
>> -
>> -       @Column(name="deleted", nullable=false)
>> -       @Element(data=true)
>> +
>> +       @Column(name = "inserted")
>> +       public Date inserted;
>> +
>> +       @Column(name = "updated")
>> +       public Date updated;
>> +
>> +       @ManyToOne(fetch = FetchType.EAGER)
>> +       @JoinColumn(name = "insertedby_id", updatable = true, insertable
>> = true)
>> +       public Users insertedby;
>> +
>> +       @ManyToOne(fetch = FetchType.EAGER)
>> +       @JoinColumn(name = "updatedby_id", updatable = true, insertable =
>> true)
>> +       public Users updatedby;
>> +
>> +       @Lob
>> +       @Column(name = "comment_field", length = 2048)
>> +       @Element(data = true, required = false)
>> +       private String comment;
>> +
>> +       @Column(name = "deleted", nullable = false)
>> +       @Element(data = true)
>>         private boolean deleted = false;
>> -
>> +
>>         public Long getId() {
>>                 return id;
>>         }
>> -
>> +
>>         public void setId(Long id) {
>>                 this.id = id;
>>         }
>> -
>> +
>>         public String getName() {
>>                 return name;
>>         }
>> -
>> +
>>         public void setName(String name) {
>>                 this.name = name;
>>         }
>> -
>> +
>>         public String getAddress() {
>>                 return address;
>>         }
>> -
>> +
>>         public void setAddress(String address) {
>>                 this.address = address;
>>         }
>> @@ -98,6 +122,46 @@ public class Server implements Serializa
>>                 this.deleted = deleted;
>>         }
>>
>> +       public Date getInserted() {
>> +               return inserted;
>> +       }
>> +
>> +       public void setInserted(Date inserted) {
>> +               this.inserted = inserted;
>> +       }
>> +
>> +       public Date getUpdated() {
>> +               return updated;
>> +       }
>> +
>> +       public void setUpdated(Date updated) {
>> +               this.updated = updated;
>> +       }
>> +
>> +       public Users getInsertedby() {
>> +               return insertedby;
>> +       }
>> +
>> +       public void setInsertedby(Users insertedby) {
>> +               this.insertedby = insertedby;
>> +       }
>> +
>> +       public Users getUpdatedby() {
>> +               return updatedby;
>> +       }
>> +
>> +       public void setUpdatedby(Users updatedby) {
>> +               this.updatedby = updatedby;
>> +       }
>> +
>> +       public String getComment() {
>> +               return comment;
>> +       }
>> +
>> +       public void setComment(String comment) {
>> +               this.comment = comment;
>> +       }
>> +
>>         @Override
>>         public String toString() {
>>                 return "Server [id=" + id + ", name=" + name + ",
>> address=" + address
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/ConferenceService.java
>> Sun Sep 30 07:52:45 2012
>> @@ -699,7 +699,7 @@ public class ConferenceService {
>>                         if (roomId > -1 && serverId > -1) {
>>                                 try {
>>                                         Rooms room =
>> roommanagement.getRoomById(roomId);
>> -
>> room.setServer(serverDao.getServer(serverId));
>> +
>> room.setServer(serverDao.get(serverId));
>>
>> roommanagement.updateRoomObject(room);
>>                                 } catch (Exception e) {
>>                                         log.error("Error while setting
>> server.");
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/UserService.java
>> Sun Sep 30 07:52:45 2012
>> @@ -495,7 +495,7 @@ public class UserService {
>>                         if (userId > -1 && serverId > -1) {
>>                                 try {
>>                                         Users user =
>> userManagement.getUserById(userId);
>> -
>> user.setServer(serverDao.getServer(serverId));
>> +
>> user.setServer(serverDao.get(serverId));
>>                                         userManagement.updateUser(user);
>>                                 } catch (Exception e) {
>>                                         log.error("Error while setting
>> server.");
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServerForm.java
>> Sun Sep 30 07:52:45 2012
>> @@ -18,24 +18,90 @@
>>   */
>>  package org.apache.openmeetings.web.components.admin.servers;
>>
>> +import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>> +import org.apache.openmeetings.web.app.Application;
>> +import org.apache.openmeetings.web.app.WebSession;
>>  import org.apache.openmeetings.web.components.admin.AdminBaseForm;
>> +import org.apache.wicket.ajax.AjaxRequestTarget;
>>  import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
>> +import org.apache.wicket.datetime.markup.html.basic.DateLabel;
>> +import org.apache.wicket.markup.html.WebMarkupContainer;
>> +import org.apache.wicket.markup.html.basic.Label;
>> +import org.apache.wicket.markup.html.form.Form;
>> +import org.apache.wicket.markup.html.form.RequiredTextField;
>> +import org.apache.wicket.markup.html.form.TextArea;
>>  import org.apache.wicket.model.CompoundPropertyModel;
>>  import org.apache.wicket.util.time.Duration;
>>
>> +/**
>> + * Form component to insert/update/delete {@link Server}
>> + *
>> + * @author swagner
>> + *
>> + */
>>  public class ServerForm extends AdminBaseForm<Server> {
>>
>> +       private final WebMarkupContainer listContainer;
>>         private static final long serialVersionUID = 1L;
>>
>> -       public ServerForm(String id, final Server server) {
>> +       public ServerForm(String id, WebMarkupContainer listContainer,
>> +                       final Server server) {
>>                 super(id, new CompoundPropertyModel<Server>(server));
>>                 setOutputMarkupId(true);
>> +               this.listContainer = listContainer;
>> +
>> +               add(new RequiredTextField<String>("name"));
>> +               add(new RequiredTextField<String>("address"));
>> +               add(DateLabel.forDatePattern("inserted", "dd.MM.yyyy
>> HH:mm:ss"));
>> +               add(new Label("insertedby.login"));
>> +               add(DateLabel.forDatePattern("updated", "dd.MM.yyyy
>> HH:mm:ss"));
>> +               add(new Label("updatedby.login"));
>> +               add(new TextArea<String>("comment"));
>>
>> -
>>                 // attach an ajax validation behavior to all form
>> component's keydown
>>                 // event and throttle it down to once per second
>>                 AjaxFormValidatingBehavior.addToAllFormComponents(this,
>> "keydown",
>>                                 Duration.ONE_SECOND);
>>         }
>> +
>> +       @Override
>> +       protected void onSaveSubmit(AjaxRequestTarget target, Form<?>
>> form) {
>> +
>> Application.getBean(ServerDaoImpl.class).update(getModelObject(),
>> +                               WebSession.getUserId());
>> +               Server server =
>> Application.getBean(ServerDaoImpl.class).get(
>> +                               getModelObject().getId());
>> +               this.setModelObject(server);
>> +               target.add(this);
>> +               target.add(listContainer);
>> +       }
>> +
>> +       @Override
>> +       protected void onNewSubmit(AjaxRequestTarget target, Form<?>
>> form) {
>> +               this.setModelObject(new Server());
>> +               target.add(this);
>> +       }
>> +
>> +       @Override
>> +       protected void onRefreshSubmit(AjaxRequestTarget target, Form<?>
>> form) {
>> +               Server server = this.getModelObject();
>> +               if (server.getId() <= 0) {
>> +                       server =
>> Application.getBean(ServerDaoImpl.class).get(
>> +                                       server.getId());
>> +               } else {
>> +                       server = new Server();
>> +               }
>> +               this.setModelObject(server);
>> +               target.add(this);
>> +       }
>> +
>> +       @Override
>> +       protected void onDeleteSubmit(AjaxRequestTarget target, Form<?>
>> form) {
>> +
>> Application.getBean(ServerDaoImpl.class).delete(this.getModelObject(),
>> +                               WebSession.getUserId());
>> +               this.setModelObject(new Server());
>> +               target.add(listContainer);
>> +               target.add(this);
>> +       }
>> +
>>  }
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.html
>> Sun Sep 30 07:52:45 2012
>> @@ -49,6 +49,20 @@
>>                                 <td class="adminPanelColumnForm">
>>                                         <form wicket:id="form"
>> class="adminForm">
>>                                                 <div
>> wicket:id="buttons"></div>
>> +                                               <wicket:ommessage
>> key="1500" />: <input type="text" wicket:id="name"/>
>> +                                   <br/>
>> +                                   <wicket:ommessage key="1501" />:
>> <input type="text" wicket:id="address"/>
>> +                                   <br/>
>> +                                               <wicket:ommessage
>> key="1110" />: <span wicket:id="inserted"/>
>> +                                   <br/>
>> +                                   <wicket:ommessage key="1111" />:
>> <span wicket:id="insertedby.login"/>
>> +                                   <br/>
>> +                                   <wicket:ommessage key="1112" />:
>> <span wicket:id="updated"/>
>> +                                   <br/>
>> +                                   <wicket:ommessage key="1113" />:
>> <span wicket:id="updatedby.login"/>
>> +                                   <br/>
>> +                                   <wicket:ommessage key="270" />:
>> <textarea wicket:id="comment"/>
>> +                                   <br/>
>>                                         </form>
>>                                 </td>
>>                         </tr>
>>
>> Modified:
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java?rev=1391961&r1=1391960&r2=1391961&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>> (original)
>> +++
>> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/servers/ServersPanel.java
>> Sun Sep 30 07:52:45 2012
>> @@ -18,13 +18,11 @@
>>   */
>>  package org.apache.openmeetings.web.components.admin.servers;
>>
>> -import java.util.Iterator;
>> -
>>  import org.apache.openmeetings.data.basic.dao.ServerDaoImpl;
>>  import org.apache.openmeetings.persistence.beans.basic.Server;
>> -import org.apache.openmeetings.web.app.Application;
>>  import org.apache.openmeetings.web.components.admin.AdminPanel;
>>  import org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
>> +import org.apache.openmeetings.web.data.OmDataProvider;
>>  import org.apache.wicket.AttributeModifier;
>>  import org.apache.wicket.ajax.AjaxEventBehavior;
>>  import org.apache.wicket.ajax.AjaxRequestTarget;
>> @@ -32,10 +30,13 @@ import org.apache.wicket.markup.html.Web
>>  import org.apache.wicket.markup.html.basic.Label;
>>  import org.apache.wicket.markup.repeater.Item;
>>  import org.apache.wicket.markup.repeater.data.DataView;
>> -import org.apache.wicket.markup.repeater.data.IDataProvider;
>> -import org.apache.wicket.model.CompoundPropertyModel;
>> -import org.apache.wicket.model.IModel;
>>
>> +/**
>> + * Form component with list and form to manipulate {@link Server}
>> + *
>> + * @author swagner
>> + *
>> + */
>>  public class ServersPanel extends AdminPanel {
>>
>>         private static final long serialVersionUID = -1L;
>> @@ -43,26 +44,8 @@ public class ServersPanel extends AdminP
>>
>>         public ServersPanel(String id) {
>>                 super(id);
>> -               DataView<Server> dataView = new
>> DataView<Server>("serverList", new IDataProvider<Server>(){
>> -                       private static final long serialVersionUID = -1L;
>> -
>> -                       public void detach() {
>> -                               //empty
>> -                       }
>> -
>> -                       public Iterator<? extends Server> iterator(long
>> first, long count) {
>> -                               return
>> Application.getBean(ServerDaoImpl.class).getServerList((int)first,
>> (int)count).iterator();
>> -                       }
>> -
>> -                       public long size() {
>> -                               return
>> Application.getBean(ServerDaoImpl.class).getServerCount();
>> -                       }
>> -
>> -                       public IModel<Server> model(Server object) {
>> -                               return new
>> CompoundPropertyModel<Server>(object);
>> -                       }
>> -
>> -               }) {
>> +               DataView<Server> dataView = new
>> DataView<Server>("serverList",
>> +                               new
>> OmDataProvider<Server>(ServerDaoImpl.class)) {
>>                         private static final long serialVersionUID =
>> 8715559628755439596L;
>>
>>                         @Override
>> @@ -95,7 +78,7 @@ public class ServersPanel extends AdminP
>>                 });
>>
>>                 Server Server = new Server();
>> -               form = new ServerForm("form", Server);
>> +               form = new ServerForm("form", listContainer, Server);
>>          add(form);
>>
>>         }
>>
>>
>>
>>
>>
>> --
>> Sebastian Wagner
>> https://twitter.com/#!/dead_lock
>> http://www.webbase-design.de
>> http://www.wagner-sebastian.com
>> seba.wagner@gmail.com
>>
>
>
>
> --
> Sebastian Wagner
> https://twitter.com/#!/dead_lock
> http://www.webbase-design.de
> http://www.wagner-sebastian.com
> seba.wagner@gmail.com
>



-- 
WBR
Maxim aka solomax