RMIAccessHandler.cs

00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004 using Shared;
00005 
00009 namespace Server.Net
00010 {
00017     public class RMIAccessHandler : MarshalByRefObject, IAccessHandler
00018     {
00019         #region Constructor, properties and private variables
00020         
00021         private Person user = null;
00022         private Catalogue catalogue;
00023         
00028         public RMIAccessHandler(Catalogue catalogue)
00029         {
00030             this.catalogue = catalogue;
00031         }
00035         public string WhoAmI
00036         {
00037             get
00038             {
00039                 if (user == null)
00040                     return null;
00041                 return user.UserName;
00042             }
00043         }
00044 
00045         #endregion
00046         
00047         #region Projects
00053         public ProjectInfo GetProjectInfo(int id)
00054         {
00055             if (user == null)
00056                 return new ProjectInfo();
00057 
00058             return catalogue.GetProjectInfo(id);
00059         }
00064         public ProjectInfo[] ListProjects()
00065         {
00066             if (user == null)
00067                 return null;
00068 
00069             return catalogue.ListProjects();
00070         }
00077         public Messages CreateProject(ProjectInfo pi, out int id)
00078         {
00079             id = -1;
00080             if (user == null)
00081                 return Messages.OperationNotAllowed;
00082 
00083             return catalogue.CreateProject(pi, user.UserName, out id);
00084         }
00090         public Messages UpdateProject(ProjectInfo info)
00091         {
00092             if (user == null)
00093                 return Messages.OperationNotAllowed;
00094 
00095             Project p = catalogue.GetProject(info.id);
00096             if (p == null)
00097                 return Messages.Fail;
00098 
00099             Role person = p.GetPerson(user.UserName);
00100             if (person == null)
00101                 return Messages.OperationNotAllowed;
00102 
00103             return catalogue.UpdateProject(info);
00104         }
00110         public Messages DeleteProject(int id)
00111         {
00112             if (user == null)
00113                 return Messages.OperationNotAllowed;
00114 
00115             if (user.Moderator == true) return catalogue.DeleteProject(id);
00116 
00117             Project p = catalogue.GetProject(id);
00118             Role r = p.GetPerson(user.UserName);
00119 
00120             if (r != null && r.Person == user && r.Type == RoleType.Creator)
00121             {
00122                 return catalogue.DeleteProject(id);
00123             }
00124             else
00125             {
00126                 return Messages.OperationNotAllowed;
00127             }
00128         }
00134         public ProjectInfo[] GetUsersProjects(string username)
00135         {
00136             return catalogue.GetUsersProjects(username);
00137         }
00138         #endregion
00139 
00140         #region Literature
00141 
00146         public LiteratureInfo[] ListLiterature()
00147         {
00148             if (user == null)
00149                 return new LiteratureInfo[0];
00150 
00151             return catalogue.ListLiterature();
00152         }
00158         public LiteratureInfo GetLiteratureInfo(int id)
00159         {
00160             if (user == null)
00161                 return new LiteratureInfo();
00162 
00163             return catalogue.GetLiteratureInfo(id);
00164 
00165         }
00173         public Messages CreateLiterature(out int id, LiteratureInfo info)
00174         {
00175             id = -1;
00176             if (user == null)
00177                 return Messages.OperationNotAllowed;
00178 
00179             info.creator = user.UserName;
00180 
00181             return catalogue.CreateLiterature(info, out id);
00182         }
00188         public Messages UpdateLiterature(LiteratureInfo info)
00189         {
00190             if (user == null)
00191                 return Messages.OperationNotAllowed;
00192 
00193             LiteratureInfo l = GetLiteratureInfo(info.id);
00194             if (l.creator == user.UserName)
00195                 return catalogue.UpdateLiterature(info);
00196 
00197             return Messages.OperationNotAllowed;
00198         }
00205         public Messages DeleteLiterature(int id)
00206         {
00207             if (user == null)
00208                 return Messages.OperationNotAllowed;
00209 
00210             if (user.Moderator == true) return catalogue.DeleteLiterature(id);
00211 
00212             LiteratureInfo li = catalogue.GetLiteratureInfo(id);
00213             if (li.creator == user.UserName)
00214                 return catalogue.DeleteLiterature(id);
00215             else
00216                 return Messages.OperationNotAllowed;
00217         }
00218 
00219         #endregion
00220 
00221         #region References
00222 
00228         public ReferenceInfo[] ListReferences(int project)
00229         {
00230             if (user == null)
00231                 return null;
00232 
00233             return catalogue.ListReferences(project);
00234         }
00241         public ReferenceInfo GetReferenceInfo(int project, int literature)
00242         {
00243             if (user == null)
00244                 return new ReferenceInfo();
00245 
00246             return catalogue.GetReferenceInfo(project, literature);
00247         }
00253         public Messages CreateReference(ReferenceInfo ri)
00254         {
00255             if (user == null)
00256                 return Messages.OperationNotAllowed;
00257 
00258             Role m = catalogue.GetRole(ri.project, user.UserName);
00259             if (m == null || m.Type == RoleType.Supervisor)
00260                 return Messages.OperationNotAllowed;
00261 
00262             return catalogue.CreateReference(ri);
00263         }
00269         public Messages UpdateReference(ReferenceInfo ri)
00270         {
00271             if (user == null)
00272                 return Messages.OperationNotAllowed;
00273 
00274             Role m = catalogue.GetRole(ri.project, user.UserName);
00275             if (m == null || m.Type == RoleType.Supervisor)
00276                 return Messages.OperationNotAllowed;
00277 
00278             return catalogue.UpdateReference(ri);
00279         }
00287         public Messages DeleteReference(int project, int literature)
00288         {
00289             if (user == null)
00290                 return Messages.OperationNotAllowed;
00291 
00292             Role m = catalogue.GetRole(project, user.UserName);
00293             if (m == null || m.Type == RoleType.Supervisor)
00294                 return Messages.OperationNotAllowed;
00295 
00296             return catalogue.DeleteReference(project, literature);
00297         }
00298 
00299         #endregion
00300 
00301         #region Search
00302 
00308         public List<SearchResult> Search(string query)
00309         {
00310             if (user == null)
00311                 return null;
00312 
00313             return catalogue.Search(query, ResultType.All);
00314         }
00321         public List<SearchResult> Search(string query, ResultType searchTypes)
00322         {
00323             if (user == null)
00324                 return null;
00325 
00326             return catalogue.Search(query, searchTypes);
00327         }
00333         public List<SearchResult> SearchByTag(string tag)
00334         {
00335             if (user == null)
00336                 return null;
00337 
00338             return catalogue.SearchByTag(tag);
00339         }
00345         public ISearchable[] ListItems(ResultType type)
00346         {
00347             if (user == null)
00348                 return new ISearchable[0];
00349 
00350             return catalogue.ListItems(type);
00351         }
00357         public ISearchable[] ListItems(ResultType type, string creator)
00358         {
00359             if (user == null)
00360                 return new ISearchable[0];
00361 
00362             return catalogue.ListItems(type,creator);
00363         }
00364 
00365 
00366 
00367         #endregion
00368 
00369         #region Suggestions
00370 
00376         public SuggestionInfo[] ListSuggestions(int project)
00377         {
00378             if (user == null)
00379                 return null;
00380 
00381             return catalogue.ListSuggestions(project);
00382         }
00389         public SuggestionInfo GetSuggestionInfo(int project, int literature)
00390         {
00391             if (user == null)
00392                 return new SuggestionInfo();
00393 
00394             return catalogue.GetSuggestionInfo(project, literature);
00395         }
00401         public Messages CreateSuggestion(SuggestionInfo si)
00402         {
00403             if (user == null)
00404                 return Messages.OperationNotAllowed;
00405 
00406             Role m = catalogue.GetRole(si.project, user.UserName);
00407             if (m == null || m.Type != RoleType.Supervisor)
00408                 return Messages.OperationNotAllowed;
00409 
00410             return catalogue.CreateSuggestion(si);
00411         }
00417         public Messages UpdateSuggestion(SuggestionInfo si)
00418         {
00419             if (user == null)
00420                 return Messages.OperationNotAllowed;
00421 
00422             Role m = catalogue.GetRole(si.project, user.UserName);
00423             if (m == null)
00424                 return Messages.OperationNotAllowed;
00425 
00426             return catalogue.UpdateSuggestion(si);
00427         }
00428         
00429 
00430         #endregion
00431 
00432         #region Reviews
00433 
00440         public ReviewInfo GetReviewInfo(int project, int literature)
00441         {
00442             if (user == null)
00443                 return new ReviewInfo();
00444 
00445             return catalogue.GetReviewInfo(project, literature);
00446         }
00452         public ReviewInfo[] ListReviews(int project)
00453         {
00454             if (user == null)
00455                 return null;
00456 
00457             return catalogue.ListReviews(project);
00458         }
00464         public Messages CreateReview(ReviewInfo ri)
00465         {
00466             ri.person = this.user.UserName;
00467             if (user == null)
00468                 return Messages.OperationNotAllowed;
00469 
00470             Role m = catalogue.GetRole(ri.project, user.UserName);
00471             if (m == null || m.Type == RoleType.Supervisor)
00472                 return Messages.OperationNotAllowed;
00473 
00474             return catalogue.CreateReview(ri);
00475         }
00481         public Messages UpdateReview(ReviewInfo ri)
00482         {
00483             if (user == null)
00484                 return Messages.OperationNotAllowed;
00485 
00486             Role m = catalogue.GetRole(ri.project, user.UserName);
00487             if (m == null || m.Type == RoleType.Supervisor)
00488                 return Messages.OperationNotAllowed;
00489 
00490             return catalogue.UpdateReview(ri);
00491         }
00492         
00493 
00494         #endregion
00495 
00496         #region Tags
00497 
00503         public TagInfo[] GetAllTags()
00504         {
00505             return GetTags(null, -1, null);
00506         }
00514         public TagInfo[] GetTags(string tag, int id, string username)
00515         {
00516             if (user == null)
00517                 return new TagInfo[0];
00518 
00519             return catalogue.GetTags(tag, id, username);
00520         }
00527         public Messages AddTag(string tag, int id)
00528         {
00529             if (user != null)
00530             {
00531                 catalogue.AddTag(tag, id, user.UserName);
00532                 return Messages.OK;
00533             }
00534             else return Messages.OperationNotAllowed;
00535         }
00542         public Messages RemoveTag(string tag, int id)
00543         {
00544             if (user != null)
00545             {
00546                 catalogue.RemoveTag(tag, id, user.UserName);
00547                 return Messages.OK;
00548             }
00549             else return Messages.OperationNotAllowed;
00550         }
00551         
00552 
00553         #endregion
00554 
00555         #region Persons & Roles  
00556 
00562         public PersonInfo GetPersonInfo(string username)
00563         {
00564             if (user == null)
00565                 return new PersonInfo();
00566             return catalogue.GetPersonInfo(username);
00567         }
00577         public Messages Register(string user, string password, string name, string department, string email)
00578         {
00579             return catalogue.RegisterUser(user, password, name, department, email);
00580         }
00587         public Messages Login(string user, string password)
00588         {
00589             Person p = catalogue.GetUser(user);
00590             if (p == null)
00591                 return Messages.LoginFailed;
00592 
00593             if (p.Password == password)
00594             {
00595                 this.user = p;
00596                 return Messages.OK;
00597             }
00598 
00599             return Messages.LoginFailed;
00600         }
00607         public Messages UpdatePerson(PersonInfo pi)
00608         {
00609             if (user == null)
00610                 return Messages.OperationNotAllowed;
00611 
00612             if (pi.username != user.UserName)
00613                 return Messages.OperationNotAllowed;
00614 
00615             return catalogue.UpdatePerson(pi);
00616 
00617 
00618         }
00624         public RoleInfo[] GetRoles(int id)
00625         {
00626             if (user == null)
00627                 return null;
00628 
00629             return catalogue.GetRoles(id);
00630         }
00639         public Messages AssignUser(string username, int project, RoleType role)
00640         {
00641             if (username == null)
00642                 return Messages.Fail;
00643             if (role == RoleType.Creator)
00644                 return Messages.OperationNotAllowed;
00645 
00646             Project p = catalogue.GetProject(project);
00647             if (p == null)
00648                 return Messages.Fail;
00649 
00650             Role r = p.GetPerson(user.UserName);
00651             if (r == null || r.Type != RoleType.Creator)
00652                 return Messages.OperationNotAllowed;
00653 
00654             return catalogue.AssignUser(username, project, role);
00655         }
00663         public Messages UnassignUser(string username, int project)
00664         {
00665             if (username == null)
00666                 return Messages.Fail;
00667 
00668             Project p = catalogue.GetProject(project);
00669             if (p == null)
00670                 return Messages.Fail;
00671 
00672             Role r = p.GetPerson(user.UserName);
00673             if (r == null || r.Type != RoleType.Creator)
00674                 return Messages.OperationNotAllowed;
00675 
00676             Role role = p.GetPerson(username);
00677             if (role == null)
00678                 return Messages.Fail;
00679 
00680             p.Roles.Remove(role);
00681 
00682             return Messages.OK;
00683         }
00684 
00685         #endregion
00686 
00687         #region Comments
00688 
00695         public CommentInfo[] GetComments(int literatureID, int projectID)
00696         {
00697             return catalogue.GetComments(literatureID, projectID);
00698         }
00704         public CommentInfo[] GetComments(int literatureID)
00705         {
00706             return catalogue.GetComments(literatureID);
00707         }
00714         public Messages CreateComment(CommentInfo ci, out int id)
00715         {
00716             return catalogue.CreateComment(ci, out id);
00717         }
00718 
00719         #endregion 
00720     
00725         public StatisticsInfo GetStatistics()
00726         {
00727             if (user == null)
00728                 return new StatisticsInfo();
00729             return catalogue.GetStatistics();
00730         }
00731 
00736         public List<SearchResult> ShowRelated(int id)
00737         {
00738             if (user == null)
00739                 return null;
00740 
00741             return catalogue.ShowRelated(id);
00742         }
00743     }
00744 }

Generated on Thu Dec 21 06:21:56 2006 for SCRAML by  doxygen 1.5.1-p1