Changeset 1041

Show
Ignore:
Timestamp:
06/24/09 02:05:21 (4 years ago)
Author:
glickn
Message:

Users can now send project invites.

When a user receives an invite they are alerted on their My Projects page. A link will only display if the user has an invite and if they have an invite it says how many invites they have.

i.e. "You have 1 project invite!" / "You have 2 project invites!"

The page to accept invites is not yet implemented.

Added a "Make Subsamples public" link in the sample details page (also not yet implemented. The subsamples list needs to be converted to the DataList? class first.)

Location:
trunk
Files:
15 modified

Legend:

Unmodified
Added
Removed
  • trunk/mpdb-client/src/edu/rpi/metpetdb/client/ui/objects/details/SampleDetails.java

    r1011 r1041  
    198198                }); 
    199199                addSubsample.addStyleName(CSS.ADDLINK); 
    200                 subsamples_ft.setWidget(0, 1, addSubsample); 
     200                subsamples_ft.setWidget(0, 2, addSubsample); 
     201                 
     202                final MLink makeSubsamplesPublic = new MLink(LocaleHandler.lc_text 
     203                                .makeSubsamplePublic(), new ClickListener() { 
     204                        public void onClick(final Widget sender) { 
     205                                 
     206                        } 
     207                }); 
     208                makeSubsamplesPublic.addStyleName(CSS.BETA); 
     209                subsamples_ft.setWidget(0, 1, makeSubsamplesPublic); 
    201210 
    202211                Label Subsamples_label = new Label(LocaleHandler.lc_text.subsamples());; 
  • trunk/mpdb-client/src/edu/rpi/metpetdb/client/ui/project/ProjectInvite.java

    r1015 r1041  
    11package edu.rpi.metpetdb.client.ui.project; 
    22 
     3import com.google.gwt.user.client.History; 
    34import com.google.gwt.user.client.rpc.AsyncCallback; 
    45import com.google.gwt.user.client.ui.Button; 
     
    1112import edu.rpi.metpetdb.client.model.User; 
    1213import edu.rpi.metpetdb.client.ui.MpDb; 
     14import edu.rpi.metpetdb.client.ui.TokenSpace; 
    1315import edu.rpi.metpetdb.client.ui.commands.ServerOp; 
    1416import edu.rpi.metpetdb.client.ui.input.ObjectEditorPanel; 
     
    4648                                                if(result != null){ 
    4749                                                        i.setMember_id(result.getId()); 
    48                                                         MpDb.project_svc.saveInvite(i, ac); 
    49                                                 } 
    50                                                 else{ 
    51                                                         //TODO throw an error about the user not existing 
     50                                                        new ServerOp<Invite>() { 
     51                                                                public void begin() {    
     52                                                                        MpDb.project_svc.saveInvite(i, this); 
     53                                                                } 
     54                                                                public void onSuccess(final Invite result){ 
     55                                                                        new ServerOp<Project> () { 
     56                                                                                public void begin() { 
     57                                                                                        AsyncCallback<Project> ac; 
     58                                                                                        MpDb.project_svc.details(result.getProject_id(), this); 
     59                                                                                } 
     60                                                                                public void onSuccess(final Project result){ 
     61                                                                                        History.newItem(TokenSpace.descriptionOf((Project) result)); 
     62                                                                                } 
     63                                                                        }.begin(); 
     64                                                                } 
     65                                                        }.begin(); 
     66                                                         
    5267                                                } 
    5368                                        } 
     
    5671                         
    5772                        protected void deleteBean(final AsyncCallback<Object> ac) {} 
    58                          
    59                         protected void onSaveCompletion(final Project result) { 
    60                                 /*if (savedNew) 
    61                                         MpDb.currentUser().getProjects().add((Project) result); 
    62                                 this.show(result);*/ 
    63                         } 
    6473                }; 
    6574                Button save = p_user.getSaveButton(); 
  • trunk/mpdb-client/src/edu/rpi/metpetdb/client/ui/user/UserProjectsListEx.java

    r947 r1041  
    5353                                        } 
    5454                                }); 
     55                 
     56                //Look for invites and display a link only if invites exist 
     57                new ServerOp() { 
     58                        public void begin(){ 
     59                                MpDb.project_svc.getInvitesForUser(MpDb.currentUser().getId(), this); 
     60                        } 
     61                        public void onSuccess(final Object result){ 
     62                                List<Project> invites = (List<Project>) result; 
     63                                if(invites != null && invites.size() > 0){ 
     64                                        final MLink newInvites = new MLink("You have " + invites.size() + " project invite" + 
     65                                                        (invites.size() > 1 ? "s!" : "!"),  
     66                                                        new ClickListener(){ 
     67                                                                public void onClick(Widget sender) { 
     68                                                                        //TODO: go to my invites page 
     69                                                                }        
     70                                        }); 
     71                                        newInvites.addStyleName("beta"); 
     72                                        header1.setWidget(0, 1, newInvites); 
     73                                } 
     74                        } 
     75                }.begin(); 
    5576 
    5677                final MLink simple = new MLink("Simple", new ClickListener() { 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/locale/LocaleText.java

    r1015 r1041  
    4040        String addSubsampleDescription(String sampleNumber); 
    4141        String noSubsamplesFound(); 
     42        String makeSubsamplePublic(); 
    4243 
    4344        /* Mineral Analyses */ 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/locale/LocaleText.properties

    r1015 r1041  
    4343addSubsampleDescription = Use the form below to add a subsample to {0} 
    4444noSubsamplesFound = No subsamples associated with this sample were found. 
     45makeSubsamplePublic = Make Subsamples Public 
    4546 
    4647# Chemical Analyses 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/model/Invite.java

    r1015 r1041  
    1111 
    1212        public boolean mIsNew() { 
    13                 return project_id == 0; 
     13                return true; 
    1414        } 
    1515 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/model/Project.java

    r1015 r1041  
    2020        private Set<Sample> samples; 
    2121         
    22         private Set<Invite> invites; 
     22        private Set<User> invites; 
    2323 
    2424        public int getId() { 
     
    8282        } 
    8383         
    84         public Set<Invite> getInvites() { 
     84        public Set<User> getInvites() { 
    8585                if(invites == null) 
    86                         invites = new HashSet<Invite>(); 
     86                        invites = new HashSet<User>(); 
    8787                return invites; 
    8888        } 
    8989         
    90         public void setInvites(final Set<Invite> i) { 
     90        public void setInvites(final Set<User> i) { 
    9191                invites = i; 
    9292        } 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/model/User.java

    r1015 r1041  
    3636        @ContainedIn 
    3737        private Set<Sample> samples; 
    38         private Set<Invite> invites; 
     38        private Set<Project> invites; 
    3939        private Role role; 
    4040        private Integer rank; 
     
    158158        } 
    159159         
    160                 public Set<Invite> getInvites() { 
     160                public Set<Project> getInvites() { 
    161161                if(invites == null) 
    162                         invites = new HashSet<Invite>(); 
     162                        invites = new HashSet<Project>(); 
    163163                return invites; 
    164164        } 
    165165         
    166         public void setInvites(final Set<Invite> i) { 
     166        public void setInvites(final Set<Project> i) { 
    167167                invites = i; 
    168168        } 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/service/ProjectService.java

    r1015 r1041  
    5656         
    5757        Invite saveInvite(Invite i) throws MpDbException; 
     58         
     59        List<Project> getInvitesForUser(int id) throws MpDbException; 
    5860} 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/service/ProjectServiceAsync.java

    r1015 r1041  
    3030                        AsyncCallback<Results<User>> ac); 
    3131 
    32         void saveInvite(Invite i, AsyncCallback<User> ac); 
     32        void saveInvite(Invite i, AsyncCallback<Invite> ac); 
     33         
     34        void getInvitesForUser(int id, AsyncCallback<List<Project>> ac); 
    3335} 
  • trunk/mpdb-server/schema/metpetdb-perms.sql

    r963 r1041  
    11GRANT select,insert       ,delete ON minerals        TO @APPUSER@; 
    22GRANT select,insert       ,delete ON mineral_relationships        TO @APPUSER@; 
     3GRANT select,insert,update,delete ON project_invites TO @APPUSER@; 
    34GRANT select,insert,update,delete        ON projects        TO @APPUSER@; 
    45GRANT select,insert       ,delete ON project_members TO @APPUSER@; 
  • trunk/mpdb-server/src/edu/rpi/metpetdb/server/dao/Project.hbm.xml

    r1015 r1041  
    6363    order by p.owner.emailAddress 
    6464  </query> 
    65    
    6665   
    6766  <query name="Project.samples,size"> 
  • trunk/mpdb-server/src/edu/rpi/metpetdb/server/dao/User.hbm.xml

    r1019 r1041  
    6262    where u.id = :id 
    6363  </query> 
     64   
     65  <query name="User.invites"> 
     66    select invite 
     67    from User u 
     68    inner join u.invites as invite 
     69    where u.id = :id 
     70  </query> 
    6471 
    6572  <query name="User.byEmailAddress"> 
  • trunk/mpdb-server/src/edu/rpi/metpetdb/server/dao/impl/ProjectDAO.java

    r1015 r1041  
    22 
    33import java.util.List; 
     4import java.util.Set; 
    45 
    56import org.hibernate.Query; 
     
    3536                        final Query q = namedQuery("Project.byId"); 
    3637                        q.setLong("id", inst.getId()); 
    37                         if (getResult(q) != null) 
    38                                 return (Project) getResult(q); 
     38                        Project p = (Project) getResult(q); 
     39                        if (p != null) 
     40                                return p; 
    3941                } 
    4042 
     
    8587                return new Results<User>(size, l); 
    8688        } 
     89 
     90        public Invite saveInvite(Invite i, User u) throws MpDbException { 
     91                Project p = new Project(); 
     92                p.setId(i.getProject_id()); 
     93                p = fill(p); 
     94                p.getInvites().add(u); 
     95                save(p); 
     96                return i; 
     97        } 
     98         
     99        public List<Project> getInvitesForUser(int id) throws MpDbException { 
     100                final Query q = namedQuery("User.invites"); 
     101                q.setInteger("id", id); 
     102                final List<Project> l = (List<Project>) getResults(q); 
     103                return l; 
     104        } 
    87105} 
  • trunk/mpdb-server/src/edu/rpi/metpetdb/server/impl/ProjectServiceImpl.java

    r1015 r1041  
    1717import edu.rpi.metpetdb.server.dao.impl.SampleDAO; 
    1818import edu.rpi.metpetdb.server.dao.impl.UserDAO; 
    19 import edu.rpi.metpetdb.server.dao.impl.InviteDAO; 
    2019 
    2120public class ProjectServiceImpl extends MpDbServlet implements ProjectService { 
     
    6261         
    6362        public Invite saveInvite(Invite i) throws MpDbException { 
    64                 return (new InviteDAO(this.currentSession()).save(i)); 
     63                User u = new User(); 
     64                u.setId(i.getMember_id()); 
     65                u = (new UserDAO(this.currentSession())).fill(u); 
     66                new ProjectDAO(this.currentSession()).saveInvite(i, u); 
     67                commit(); 
     68                return i; 
     69        } 
     70         
     71        public List<Project> getInvitesForUser(int id) throws MpDbException { 
     72                return new ProjectDAO(currentSession()).getInvitesForUser(id); 
    6573        } 
    6674}