good questions :) Backup should be handled somehow ... (As intermediate solutions we can do the following: leave old fields+getters/setters for 1-2 next versions and handle *contacts* creation while import, then remove it completely with declaring minimum import version like 3.0.0) According to the invitations: I was thinking of the following process: 1) user sending invitation (in 3.1.0 most probably) to the email first time 2) this email is searched in *users* db and not found, new user of type "contact" is created 3) user sending invitation to the same email 4) this email is searched in *users* db and found, user get autocomplete option, no new "contact" is created, user gets the ability to add first/lastname etc. to the contact
On Wed, May 29, 2013 at 3:24 PM, [email protected] < [email protected]> wrote: > Hm, > > yes I think it makes sense, the user contacts could be really a user record > instead of a record in the user_contacts table. > > *Currently it is impossible, from my point of view, to create address > book.* > Well you can simply write a native SQL query that maps those tables and > read the results into a generic SearchResult object. > However, you are right, if you say that there is no way you could do that > with JPQL. > > What exactly is affected by the change of the user_contacts to user > records? > Calendar and private messages? Is that all? > Have you thought about how old backups will convert to this new design > their data (I think there will be multiple ways to do this, but it might be > easier to design the solution if we discuss it upfront)? > > What other changes, apart from the user_contacts to user record are planned > as part of this change? > Will a new invitation also create a new user for every invitation? Is that > user created when the invitation hash is created on when the user enters > the room? What happens if you send multiple invitations to the same email, > will there be a new user for every of those invitations or will they be > mapped to the same? > > Sebastian > > > 2013/5/29 Maxim Solodovnik <[email protected]> > > > >> external invitee to a meeting that he creates through the calendar, > you > > >> would add a new entry to the table *users* ? > > >> Is that right ? > > Yes this was my idea :) > > > > I believe user_contacts might be necessary if we would like to have > > "request contact" feature (might be useful to see contact details hidden > by > > default) > > > > >> How do you make sure that the same user is really the linked > everywhere. > > What I actually want is to have user_id in _ALL_ places where I need user > > (for ex. Invitations, MeetingMember, ChatMessage etc.) > > > > >> what happens if two users add the same contact, but one user decides > > that > > this contact now has another firstname > > In case "contact" added is internal user editing of first/lastnam will > not > > be available > > In case "contact" added is external email address Every user will > actually > > create its own record in *users* table. They will differs by pair (email, > > creator_id) > > > > >> Which user related object currently don't rely on the user_id ? > > at least Invitations, MeetingMember, ChatMessage. > > > > Additionally: > > While creating Appointment in calendar we should choose from 2 different > > lists. > > Currently it is impossible, from my point of view, to create address > book. > > > > > > On Wed, May 29, 2013 at 1:41 PM, [email protected] < > > [email protected]> wrote: > > > > > I see, I think I have bit of an idea of what you try to do. > > > > > > So actually when a user adds a new *contact* by adding for example an > > > external invitee to a meeting that he creates through the calendar, you > > > would add a new entry to the table *users* ? > > > Is that right ? > > > So there would be no more table *user_contacts* as every contact is > > > internal / a record in the user table in the future ? > > > > > > I think in theory the idea is right. Practically I have done something > > like > > > that in other projects, the basic complexity here is around duplicates. > > How > > > do you make sure that the same user is really the linked everywhere. > > > Or what happens if two users add the same contact, but one user decides > > > that this contact now has another firstname. If they all reference the > > same > > > user-record the other users that have this contact might not like that > > > change. > > > > > > But I am still not really sure what your changes will really mean > > > practically. > > > > > > For example what do you mean by: > > > *"user related" objects to rely on user_id only* > > > => Which user related object currently don't rely on the user_id ? > > > > > > Seb > > > > > > > > > 2013/5/29 Maxim Solodovnik <[email protected]> > > > > > > > Hello Sebastian, > > > > > > > > Actually adding this one field and make all "user related" objects to > > > rely > > > > on user_id only will do a lot. > > > > > > > > copy: > > > > 1) Invitations: invitedname, invitedEMail, omTimeZone > > > > 2) MeetingMember: firstname, lastname, email, phone, omTimeZone > > > > 3) ChatMessage: fromEmail, fromName, toEmail, toName > > > > 4) RemoteSessionObject: all fields //most probably should not be > > changed > > > > .... maybe more > > > > > > > > 2) Currently there is no place to store "contacts". Only OM users are > > > > searchable. Users would like to have sort of Address Book with both > OM > > > > users and "externals" > > > > > > > > 3) I mean something like following: (currently implemented in Gmail) > > > > user starts typing name/email -> system proposes autocompletion > > > > user selects from the list -> system draws "dragable address" > > > > user double-click "dragable address" -> system allows user to modify > > > > fields: first/last/display name/email > > > > > > > > so it is not necessary to "Create contact" for the user, it is > created > > as > > > > soon as email address is entered and it is editable inline (quick and > > > > easy). > > > > > > > > I believe all this dialogs and multistep wizards should be used only > if > > > > there is no way to avoid it .... > > > > > > > > > > > > > > > > On Wed, May 29, 2013 at 11:19 AM, [email protected] < > > > > [email protected]> wrote: > > > > > > > > > Hi Maxim, > > > > > > > > > > I am not sure if I do understand that proposal. > > > > > In what sense does this affect what we currently have? From what I > > > > > understood this is only one more additional column in the user > table > > > that > > > > > does indicate how this user was created. > > > > > > > > > > But for instance users that enter a conference room via a > invitations > > > > link > > > > > (hash method) still don't get an entry in the users table, right? > > > > > > > > > > So in what sense does this affect anything that exists so far? > > > > > > > > > > *pros: > > > > > 1) everything working with "user" can rely on user_id only, no need > > to > > > > copy > > > > > any data fields * > > > > > => Where do we currently copy any fields ? > > > > > > > > > > *2) all fields requires entering of user can be enhanced with > > > > autocomplete > > > > > and inline edit (so user can enter as much info as he/she is ready > at > > > the > > > > > moment)* > > > > > => What prevents you from doing this currently ? > > > > > > > > > > *3) add/edit user of type contact anytime user enters email > > > > not-registered > > > > > in the system* > > > > > => Sorry I don't understand this at all. A user of type contact ... > > how > > > > is > > > > > that user to be logged in in at all? In your description you write > > that > > > > > only users of type "user" can login. > > > > > > > > > > Thanks, > > > > > Sebastian > > > > > > > > > > > > > > > > > > > > 2013/5/29 Maxim Solodovnik <[email protected]> > > > > > > > > > > > Hello All, > > > > > > > > > > > > I would like to propose to change the way OM works with users. > > > > > > Currently we have 3 entities acts like "User": > > > > > > 1) OM user (the entity created using OM Admin) > > > > > > 2) External user (the entity created via SOAP/REST call, actually > > it > > > is > > > > > > normal user with externalType/externalId set) > > > > > > 3) "hash" user ("something" created while sending invitation hash > > or > > > > > > inviting external user via calendar) > > > > > > > > > > > > What I would like to propose: > > > > > > 1) add `type` column to the User table (see [1]) > > > > > > 2) allow front-end login for *type == user* only (ldap users will > > be > > > > > > allowed to login only id LDAP is selected) > > > > > > 3) add/edit user of type contact anytime user enters email > > > > not-registered > > > > > > in the system > > > > > > 4) add user created to one of the groups of the user created this > > > > contact > > > > > > > > > > > > pros: > > > > > > 1) everything working with "user" can rely on user_id only, no > need > > > to > > > > > copy > > > > > > any data fields > > > > > > 2) all fields requires entering of user can be enhanced with > > > > autocomplete > > > > > > and inline edit (so user can enter as much info as he/she is > ready > > at > > > > the > > > > > > moment) > > > > > > 3) drag-n-drop should be added to various OM components to be > able > > to > > > > > > implement address book > > > > > > 4) Single component acting as address book can easily be added > > > > > > > > > > > > > > > > > > cons: > > > > > > 1) to avoid naming conflicts and personal contact lists sharing > > > > > > searching/autocompleting of the contacts should be done with > strict > > > > > > filtering by creator/owner id > > > > > > > > > > > > [1] enum Type { > > > > > > user > > > > > > , ldap //should we add it??? > > > > > > , external > > > > > > , contact > > > > > > } > > > > > > > > > > > > Please let me know if you have any concerns regarding this > > > > > > > > > > > > -- > > > > > > WBR > > > > > > Maxim aka solomax > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Sebastian Wagner > > > > > https://twitter.com/#!/dead_lock > > > > > http://www.webbase-design.de > > > > > http://www.wagner-sebastian.com > > > > > [email protected] > > > > > > > > > > > > > > > > > > > > > -- > > > > WBR > > > > Maxim aka solomax > > > > > > > > > > > > > > > > -- > > > Sebastian Wagner > > > https://twitter.com/#!/dead_lock > > > http://www.webbase-design.de > > > http://www.wagner-sebastian.com > > > [email protected] > > > > > > > > > > > -- > > WBR > > Maxim aka solomax > > > > > > -- > Sebastian Wagner > https://twitter.com/#!/dead_lock > http://www.webbase-design.de > http://www.wagner-sebastian.com > [email protected] > -- WBR Maxim aka solomax
