Bibliobrol : le modèle

Dans notre analyse sommaire de l'application, différentes notions nous sont apparues indispensables, et nous avons pu dégager les différents intervenants.

Ces différentes notions constituent le modèle, ou le cœur de notre application. Nous nous pencherons par la suite sur la manière d'interagir avec l'utilisateur (la vue) ou sur le moyen de stocker les données que nous manipulons (la persistance).

Nous allons à présent revoir les objets qui constitueront notre modèle. Dans les exemples qui suivent, le code utilisé est C#, mais les principes sont identiques dans bien des langages.

Brol

L'objet Brol définit un ouvrage.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. /// <summary>
  8. /// General item. It contains only informations about a general item,
  9. /// but not about a specific occurence item.
  10. /// I.E. we may have informations about a film, but not about the occurence
  11. /// of that film stored into the biblio.
  12. /// </summary>
  13. [Serializable]
  14. public class Brol : IBrol
  15. {
  16. #region constructors and declarations
  17. private int id, cotation;
  18. private String title, synopsis, comment;
  19. private List<BrolCategory> categories;
  20. private List<Actor> actors;
  21. private List<SerieItem> serieItems;
  22. private BrolType brolType;
  23. private DateTime date;
  24. private bool brolLocked;
  25. public Brol()
  26. : this(-1)
  27. {
  28. }
  29. public Brol(int id)
  30. : this(id, "", "")
  31. {
  32. }
  33. public Brol(int id, String title, String synopsis)
  34. : this(id, title, new List<BrolCategory>(), synopsis, 0, "")
  35. {
  36. }
  37. public Brol(int id, String title, List<BrolCategory> categories, String synopsis, int cotation)
  38. : this(id, title, categories, synopsis, cotation, "")
  39. {
  40. }
  41. public Brol(int id, String title, List<BrolCategory> categories, String synopsis,
  42. int cotation, String comment)
  43. : this(id, title, categories, synopsis, cotation, comment, new DateTime(0L))
  44. {
  45. }
  46. public Brol(int id, String title, List<BrolCategory> categories, String synopsis,
  47. int cotation, String comment, DateTime date)
  48. {
  49. this.id = id;
  50. this.cotation = cotation;
  51. this.title = title;
  52. this.synopsis = synopsis;
  53. this.comment = comment;
  54. this.categories = categories;
  55. this.date = date;
  56. this.actors = new List<Actor>();
  57. this.serieItems = new List<SerieItem>();
  58. this.brolType = new BrolType();
  59. this.date = new DateTime(0L);
  60. }
  61.  
  62. public Brol(Brol brol)
  63. {
  64. this.id = brol.id;
  65. this.title = brol.title;
  66. this.synopsis = brol.synopsis;
  67. this.comment = brol.comment;
  68. categories = new List<BrolCategory>();
  69. addCategories(brol.Categories);
  70. actors = new List<Actor>();
  71. addActors(brol.Actors);
  72. this.brolType = brol.brolType;
  73. this.date = brol.date;
  74. this.brolLocked = brol.brolLocked;
  75. this.cotation = brol.cotation;
  76. }
  77. #endregion
  78.  
  79. #region overrided methods
  80. public override String ToString()
  81. {
  82. return title;
  83. }
  84. public override int GetHashCode()
  85. {
  86. int PRIME = 31;
  87. int result = 1;
  88. result = PRIME * result + ((actors == null) ? 0 : actors.GetHashCode());
  89. result = PRIME * result + (brolLocked ? 1231 : 1237);
  90. result = PRIME * result + ((brolType == null) ? 0 : brolType.GetHashCode());
  91. result = PRIME * result + ((categories == null) ? 0 : categories.GetHashCode());
  92. result = PRIME * result + ((comment == null) ? 0 : comment.GetHashCode());
  93. result = PRIME * result + cotation;
  94. result = PRIME * result + ((date == null) ? 0 : date.GetHashCode());
  95. result = PRIME * result + id;
  96. result = PRIME * result + ((serieItems == null) ? 0 : serieItems.GetHashCode());
  97. result = PRIME * result + ((synopsis == null) ? 0 : synopsis.GetHashCode());
  98. result = PRIME * result + ((title == null) ? 0 : title.GetHashCode());
  99. return result;
  100. }
  101. public override bool Equals(Object obj)
  102. {
  103. /*if (this == o) return true;
  104.   if (!(o is Brol)) return false;
  105.   Brol b = (Brol)o;
  106.   if (this.Id != b.Id) return false;
  107.   if (!this.title.Equals(b.title)) return false;
  108.   if (this.synopsis != null)
  109.   {
  110.   if (!this.synopsis.Equals(b.synopsis)) return false;
  111.   }
  112.   else
  113.   if (b.synopsis!=null) return false;
  114.   if (this.comment != null)
  115.   {
  116.   if (!this.comment.Equals(b.comment)) return false;
  117.   }
  118.   else
  119.   if (b.comment != null) return false;
  120.   if (!this.categories.Equals(b.categories)) return false;
  121.   //if (!testCatEquals(this.categories, b.categories)) return false;
  122.  
  123.   if (!this.actors.Equals(b.actors)) return false;
  124.   if (!this.brolType.Equals(b.brolType)) return false;
  125.   if (!this.date.Equals(b.date)) return false;
  126.   if (this.cotation != b.cotation) return false;
  127.   return true;*/
  128.  
  129. if (this == obj)
  130. return true;
  131. if (obj == null)
  132. return false;
  133. if (!(obj is Brol))
  134. return false;
  135. Brol other = (Brol) obj;
  136. if (id != other.id)
  137. return false;
  138. if (title == null) {
  139. if (other.title != null)
  140. return false;
  141. } else if (!title.Equals(other.title))
  142. return false;
  143. if (synopsis == null) {
  144. if (other.synopsis != null)
  145. return false;
  146. } else if (!synopsis.Equals(other.synopsis))
  147. return false;
  148. if (actors == null) {
  149. if (other.actors != null)
  150. return false;
  151. } else if (!actors.Equals(other.actors))
  152. return false;
  153. if (brolType == null) {
  154. if (other.brolType != null)
  155. return false;
  156. } else if (!brolType.Equals(other.brolType))
  157. return false;
  158. if (categories == null) {
  159. if (other.categories != null)
  160. return false;
  161. } else if (!categories.Equals(other.categories))
  162. return false;
  163. if (comment == null) {
  164. if (other.comment != null)
  165. return false;
  166. } else if (!comment.Equals(other.comment))
  167. return false;
  168. if (cotation != other.cotation)
  169. return false;
  170. if (date == null) {
  171. if (other.date != null)
  172. return false;
  173. } else if (!date.Equals(other.date))
  174. return false;
  175. if (serieItems == null) {
  176. if (other.serieItems != null)
  177. return false;
  178. } else if (!serieItems.Equals(other.serieItems))
  179. return false;
  180. return true;
  181.  
  182. }
  183. /*
  184.   private bool testCatEquals(List<BrolCategory> list1, List<BrolCategory> list2)
  185.   {
  186.   if (list1 == null || list1.Count == 0)
  187.   {
  188.   if (list2 == null || list2.Count == 0)
  189.   return true;
  190.   }
  191.   if (list2 == null) return false;
  192.   if (list1.Count != list2.Count)
  193.   return false;
  194.   bool catExist;
  195.   for (int i = 0; i < (list1.Count - 1); i++)
  196.   {
  197.   catExist = false;
  198.   for (int j = 0; j < (list2.Count - 1); j++)
  199.   {
  200.   if (list1[i].Equals(list2[j]))
  201.   {
  202.   catExist = true;
  203.   break;
  204.   }
  205.   if (catExist == false) return false;
  206.   }
  207.   }
  208.   return true;
  209.   }
  210.   */
  211. #endregion
  212.  
  213. #region getters and setters
  214. public int Id
  215. {
  216. get { return this.id; }
  217. set { this.id = value; }
  218. }
  219. public BrolType BrolType
  220. {
  221. get { return this.brolType; }
  222. set { this.brolType = value; }
  223. }
  224. public String Title
  225. {
  226. get { return this.title; }
  227. set { this.title = value; }
  228. }
  229. public String Synopsis
  230. {
  231. get { return this.synopsis; }
  232. set { this.synopsis = value; }
  233. }
  234. public String Comment
  235. {
  236. get { return this.comment; }
  237. set { this.comment = value; }
  238. }
  239. public List<BrolCategory> Categories
  240. {
  241. get { return this.categories; }
  242. set { this.categories = value; }
  243. }
  244. public int Cotation
  245. {
  246. get { return this.cotation; }
  247. set { this.cotation = value; }
  248. }
  249. public List<Actor> Actors
  250. {
  251. get { return this.actors; }
  252. set { this.actors = value; }
  253. }
  254. public List<SerieItem> SerieItems
  255. {
  256. get { return this.serieItems; }
  257. set { this.serieItems = value; }
  258. }
  259. public DateTime Date
  260. {
  261. get { return this.date; }
  262. set { this.date = value; }
  263. }
  264. /// <summary>
  265. /// Set to true when use in editing mode to avoid concurent modifications.
  266. /// If brolLocked, saving it is not allowed
  267. /// </summary>
  268. public bool BrolLocked
  269. {
  270. get { return this.brolLocked; }
  271. set { this.brolLocked = value; }
  272. }
  273. #endregion
  274.  
  275. #region public methods
  276. public void addCategory(BrolCategory category)
  277. {
  278. categories.Add(category);
  279. }
  280. public void addCategories(List<BrolCategory> categories)
  281. {
  282. categories.AddRange(categories);
  283. }
  284. public void addActor(Actor actor)
  285. {
  286. actors.Add(actor);
  287. }
  288. public void addActors(List<Actor> actors)
  289. {
  290. actors.AddRange(actors);
  291. }
  292. public void addSerieItem(SerieItem serieItem)
  293. {
  294. serieItems.Add(serieItem);
  295. }
  296. public void addSerieItems(List<SerieItem> serieItems)
  297. {
  298. serieItems.AddRange(serieItems);
  299. }
  300. public BrolCategory getCategoryById(int id)
  301. {
  302. foreach (BrolCategory category in categories)
  303. {
  304. if (category.Id == id)
  305. {
  306. return category;
  307. }
  308. }
  309. return null;
  310. }
  311. public Actor getActorById(int id)
  312. {
  313. foreach (Actor actor in actors)
  314. {
  315. if (actor.Id == id)
  316. {
  317. return actor;
  318. }
  319. }
  320. return null;
  321. }
  322. #endregion
  323. }
  324. }

Table des matières Haut

BrolCategory

L'objet BrolCategory définit une catégorie pour un ouvrage.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. /// <summary>
  8. /// Category for a brol object.
  9. /// i.e. may be "Horror", "Science-Fiction" for a film
  10. /// </summary>
  11. [Serializable]
  12. public class BrolCategory : GenericStateContainer
  13. {
  14. #region constructor and declarations
  15. public BrolCategory() : base() { }
  16. public BrolCategory(int id, String name) : base(id, name) { }
  17. #endregion
  18.  
  19. #region overrided methods
  20. public override bool Equals(Object o)
  21. {
  22. //if (this == o) return true;
  23. if (!(o is BrolCategory)) return false;
  24. BrolCategory c = (BrolCategory)o;
  25. return this.Id == c.Id && this.Name.Equals(c.Name);
  26. }
  27. #endregion
  28. }
  29. }

Table des matières Haut

BrolType

L'objet BrolType définit un type d'ouvrage (ex : film, bande dessinée, livre, etc.).

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. /// <summary>
  8. /// Type for a brol object.
  9. /// i.e. may be "film", "bd", "book"
  10. /// </summary>
  11. [Serializable]
  12. public class BrolType : GenericStateContainer
  13. {
  14. #region constructor and declarations
  15.  
  16. public BrolType():base(){}
  17. public BrolType(int id, String name):base(id,name){}
  18. /// <summary>
  19. /// Copy constructor
  20. /// </summary>
  21. /// <param name="type">(BrolType) broltype to copy</param>
  22. public BrolType(BrolType type)
  23. :this(type.Id, type.Name)
  24. {
  25. this.Status = type.Status;
  26. }
  27. #endregion
  28.  
  29. #region overrided methods
  30. public override bool Equals(object obj)
  31. {
  32. BrolType brolType = obj as BrolType;
  33. if (brolType == null) return false;
  34. return this.Id == brolType.Id && this.Name.Equals(brolType.Name);
  35. }
  36. #endregion
  37. }
  38. }

Table des matières Haut

MediaBrol

L'objet MediaBrol définit un exemplaire.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. /// <summary>
  8. /// Physical occurence of a Brol.
  9. /// I.E. For a film (Brol object), we may have some physical occurences (MediaBrol object)
  10. /// like a DVD, two different encoding DivX versions on CD, etc.
  11. /// </summary>
  12. [Serializable]
  13. public class MediaBrol : IBrol
  14. {
  15. #region constructors and declarations
  16. private int id;
  17. private Brol brol;
  18. private Media media;
  19. /// <summary>
  20. /// I.E. Sound(DTS), Codec(VOB), etc.
  21. /// </summary>
  22. private List<Quality> qualities;
  23. private Person owner;
  24. private String name, comment, localisation;
  25. private DateTime insertionDate;
  26. [NonSerialized]
  27. private bool borrowed;//used to get quick info with lazy fetching
  28. [NonSerialized]
  29. private List<Borrow> borrows;
  30.  
  31. public MediaBrol()
  32. {
  33. this.reset();
  34. }
  35.  
  36. public MediaBrol(int id, Brol brol):this()
  37. {
  38. this.id = id;
  39. this.brol = brol;
  40. }
  41.  
  42. public MediaBrol(int id, Brol brol, String name)
  43. : this(id, brol)
  44. {
  45. this.name = name;
  46. }
  47.  
  48. public MediaBrol(int id, Brol brol, String name, String comment, String localisation)
  49. : this(id, brol, name)
  50. {
  51. this.comment = comment;
  52. this.localisation = localisation;
  53. }
  54.  
  55. public MediaBrol(
  56. int id, Brol brol, String name, String comment, String localisation,
  57. Media media, List<Quality> qualities,
  58. Person owner, DateTime insertionDate)
  59. : this(id, brol, name, comment, localisation)
  60. {
  61. this.media = media;
  62. this.qualities = qualities;
  63. this.owner = owner;
  64. this.insertionDate = insertionDate;
  65. }
  66.  
  67. public MediaBrol(
  68. int id, Brol brol, String name, String comment, String localisation,
  69. Media media, List<Quality> qualities,
  70. Person owner, DateTime insertionDate, List<Borrow> borrows)
  71. : this(id, brol, name, comment, localisation, media, qualities, owner, insertionDate)
  72. {
  73. this.borrows = borrows;
  74. }
  75. #endregion
  76.  
  77. #region private methods
  78. private void reset()
  79. {
  80. id = -1;
  81. brol = new Brol();
  82. media = new Media(1,"Non défini");
  83. qualities = new List<Quality>();
  84. owner= new Person();
  85. name = "";
  86. comment = "";
  87. localisation = "";
  88. insertionDate = new DateTime(0L);
  89. borrows = new List<Borrow>();
  90. borrowed = false;
  91. }
  92. #endregion
  93.  
  94. #region getters and setters
  95. public int Id
  96. {
  97. get { return this.id; }
  98. set { this.id = value; }
  99. }
  100. public Brol Brol
  101. {
  102. get { return this.brol; }
  103. set { this.brol = value; }
  104. }
  105. public String Name
  106. {
  107. get { return this.name; }
  108. set { this.name = value; }
  109. }
  110. public String Comment
  111. {
  112. get { return this.comment; }
  113. set { this.comment = value; }
  114. }
  115. public String Localisation
  116. {
  117. get { return this.localisation; }
  118. set { this.localisation = value; }
  119. }
  120. public Person Owner
  121. {
  122. get { return this.owner; }
  123. set { this.owner = value; }
  124. }
  125. public List<Quality> Qualities
  126. {
  127. get { return this.qualities; }
  128. set { this.qualities = value; }
  129. }
  130. public Media MediaType
  131. {
  132. get { return this.media; }
  133. set { this.media = value; }
  134. }
  135.  
  136. public DateTime InsertionDate
  137. {
  138. get { return this.insertionDate; }
  139. set { this.insertionDate = value; }
  140. }
  141. /// <summary>
  142. /// Get or set the history of borrows for this item
  143. /// Be carefull : This info is NOT available in lazy fetching (empty list)
  144. /// </summary>
  145. public List<Borrow> Borrows
  146. {
  147. get { return this.borrows; }
  148. set { this.borrows = value; }
  149. }
  150.  
  151. /// <summary>
  152. /// Get true if this mediabrol is currently borrowed
  153. /// This info is also available in lazy fetching
  154. /// </summary>
  155. public bool Borrowed
  156. {
  157. get
  158. {
  159. /*if (Borrows.Count < 1)
  160.   return false;
  161.   return Borrows[Borrows.Count - 1].EndDate != new DateTime(0L);
  162.   */
  163. return borrowed;
  164. }
  165. set { borrowed = value; }
  166. }
  167. #endregion
  168. }
  169. }

Table des matières Haut

Media

L'objet Media définit le support utilisé pour un exemplaire (ex : DVD-R, DVD+R, VHS, CD, etc. pour un exemplaire d'un film).

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. /// <summary>
  8. /// Storage support.
  9. /// I.E. CD, DVD, Book, etc.
  10. /// </summary>
  11. [Serializable]
  12. public class Media
  13. {
  14. #region constructors and declarations
  15. private int id;
  16. private String name;
  17. private BrolType brolType;
  18. public Media(String name)
  19. {
  20. this.id = -1;
  21. this.name = name;
  22. this.brolType = new BrolType();
  23. }
  24. public Media(int id, String name)
  25. {
  26. this.id = id;
  27. this.name = name;
  28. this.brolType = new BrolType();
  29. }
  30. public Media(int id, String name, BrolType brolType)
  31. {
  32. this.id = id;
  33. this.name = name;
  34. this.brolType = brolType;
  35. }
  36. #endregion
  37.  
  38. #region overrided methods
  39. public override String ToString()
  40. {
  41. return name;
  42. }
  43. public override int GetHashCode()
  44. {
  45. //todo : reimplement GetHashCode
  46. return this.ToString().GetHashCode();
  47. }
  48. public override bool Equals(Object o)
  49. {
  50. if (this == o) return true;
  51. if (!(o is Media)) return false;
  52. Media m = (Media)o;
  53. if (this.Id != m.Id) return false;
  54. if (!this.name.Equals(m.name)) return false;
  55. if (this.brolType.Id!=m.brolType.Id) return false;
  56. return true;
  57. }
  58. #endregion
  59.  
  60. #region getters an setters
  61. public int Id
  62. {
  63. get { return this.id; }
  64. set { this.id = value; }
  65. }
  66. public BrolType BrolType
  67. {
  68. get { return this.brolType; }
  69. set { this.brolType = value; }
  70. }
  71. public String Name
  72. {
  73. get { return this.name; }
  74. set { this.name = value; }
  75. }
  76. #endregion
  77. }
  78. }

Table des matières Haut

Person

L'objet Person définit une personne.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using be.gaudry.observer;
  6. using be.gaudry.bibliobrol.model.identity;
  7.  
  8. namespace be.gaudry.bibliobrol.model
  9. {
  10. [Serializable]
  11. public class Person : Observable
  12. {
  13. #region constructor and declarations
  14. private int id;
  15. private Identity identity;
  16.  
  17. /// <summary>
  18. /// Set to true when use in editing mode to avoid concurent modifications.
  19. /// If brolLocked, saving it is not allowed
  20. /// </summary>
  21. private bool edited;
  22.  
  23. public Person()
  24. {
  25. reinit(true);
  26. }
  27. public Person(int id, String lastName):this()
  28. {
  29. this.id = id;
  30. identity.LastName = lastName;
  31. }
  32. /// <summary>
  33. /// Create a person with only a lastName and a firstName.
  34. /// Person id has -1 value
  35. /// </summary>
  36. /// <param name="lastName">(String) lastName</param>
  37. /// <param name="firstName">(String) firstName</param>
  38. public Person(String lastName, String firstName)
  39. {
  40. reinit(true);
  41. identity.LastName = lastName;
  42. identity.FirstName = firstName;
  43. }
  44. #endregion
  45.  
  46. #region overrided methods
  47. public override String ToString()
  48. {
  49. if(identity!=null)
  50. return identity.ToString();
  51. return id.ToString();
  52. }
  53. public override int GetHashCode()
  54. {
  55. if (identity != null)
  56. return identity.GetHashCode();
  57. return id.GetHashCode();
  58. }
  59. public override bool Equals(Object o)
  60. {
  61. if (!(o is Person)) return false;
  62. Person p = (Person)o;
  63.  
  64. if (identity == null && p.identity == null)
  65. return id == p.id;
  66. return id == p.id && identity.Equals(p.identity);
  67. }
  68. #endregion
  69.  
  70. #region properties
  71. public int Id
  72. {
  73. get { return this.id; }
  74. set { this.id = value; }
  75. }
  76. /// <summary>
  77. /// Set to true when use in editing mode to avoid concurent modifications.
  78. /// If brolLocked, saving it is not allowed
  79. /// </summary>
  80. public bool Edited
  81. {
  82. get { return this.edited; }
  83. set { this.edited = value; }
  84. }
  85. #endregion
  86.  
  87. #region identity properties
  88. public String LastName
  89. {
  90. get { return identity.LastName; }
  91. set { identity.LastName = value; }
  92. }
  93. public String FirstName
  94. {
  95. get { return identity.FirstName; }
  96. set { identity.FirstName = value; }
  97. }
  98. public String Pseudo
  99. {
  100. get { return identity.Pseudo; }
  101. set { identity.Pseudo = value; }
  102. }
  103. public SEX Sex
  104. {
  105. // if not set, return first enum value
  106. // be sure than the first value is "_"
  107. get { return identity.Sex; }
  108. set { identity.Sex = value; }
  109. }
  110. public DateTime Birthdate
  111. {
  112. get { return identity.Birthdate; }
  113. set { identity.Birthdate = value; }
  114. }
  115. #endregion
  116.  
  117. #region public methods
  118. public void setIdentity(Identity identity)
  119. {
  120. this.identity = identity;
  121. }
  122. public Identity getIdentity()
  123. {
  124. return this.identity;
  125. }
  126. /// <summary>
  127. /// Create a person with all values from an other person
  128. /// </summary>
  129. /// <param name="person">(Person) person to copy</param>
  130. public void copy(Person person)
  131. {
  132. if (person != null)
  133. {
  134. try
  135. {
  136. id = person.id;
  137. edited = person.edited;
  138. //identity = person.identity is not allowed : copy references and not values
  139. LastName = person.LastName;
  140. FirstName = person.FirstName;
  141. Pseudo = person.Pseudo;
  142. Birthdate = person.Birthdate;
  143. Sex = person.Sex;
  144. }
  145. catch (Exception e)
  146. {
  147. notify(new Notification(Notification.VERBOSE.error, "Copie de personne", e, this));
  148. }
  149. }
  150. else
  151. {
  152. notify(new Notification(Notification.VERBOSE.error,"Copie de personne : impossible de copier une valeur nulle", this));
  153. }
  154. }
  155. /// <summary>
  156. /// Used to fill all field with default values
  157. /// </summary>
  158. /// <param name="total">(bool) Reset also person Id if true</param>
  159. public void reinit(bool total)
  160. {
  161. if(total)id = -1;
  162. edited = false;
  163. identity = new Identity();
  164. }
  165.  
  166. /// <summary>
  167. /// Used to get local sex name
  168. /// </summary>
  169. /// <param name="s">(SEX) sex</param>
  170. /// <returns>(String) local sex name</returns>
  171. public String getSexName(SEX s)
  172. {
  173. switch (s)
  174. {
  175. case SEX.F: return "Femme";
  176. case SEX.M: return "Homme";
  177. default: return "?";
  178. }
  179. }
  180. #endregion
  181. }
  182. }

Table des matières Haut

Phone

L'objet Phone définit un numéro de téléphone pour une personne et ses caractéristiques.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. [Serializable]
  8. public class Phone : ICloneable
  9. {
  10. #region constructor and declarations
  11. public enum TYPE { _, bureau, domicile, gsm }
  12. private int id;
  13. private String number;
  14. private TYPE type;
  15.  
  16. public Phone()
  17. {
  18. reset();
  19. }
  20. public Phone(String number)
  21. : this()
  22. {
  23. this.number = number;
  24. }
  25. public Phone(int id, String number)
  26. : this(number)
  27. {
  28. this.id = id;
  29. }
  30. public Phone(int id, String number, TYPE type)
  31. : this(id, number)
  32. {
  33. this.type = type;
  34. }
  35. #endregion
  36.  
  37. #region overrided methods
  38. public override String ToString()
  39. {
  40. /*if(id==-1)
  41.   return "Nouveau numéro";*/
  42. return number + " (" + getTypeLocalName(type) + ")";
  43. }
  44. public override bool Equals(object obj)
  45. {
  46. Phone phone = obj as Phone;
  47. if (phone == null) return false;
  48. if (phone.Id != id) return false;
  49. return phone.Number.Equals(number) && phone.Type.Equals(type);
  50. }
  51. public override int GetHashCode()
  52. {
  53. return (ToString()+id).GetHashCode();
  54. }
  55. #endregion
  56.  
  57. #region public methods
  58. /// <summary>
  59. /// Used to set default values for all fields
  60. /// </summary>
  61. public void reset()
  62. {
  63. id = -1;
  64. number = "";
  65. type = TYPE._;
  66. }
  67. /// <summary>
  68. /// Get the local name of a phone type enum item
  69. /// </summary>
  70. /// <param name="t">Phone type enum item</param>
  71. /// <returns>Local name of param</returns>
  72. public static String getTypeLocalName(TYPE t)
  73. {
  74. switch (t)
  75. {
  76. case TYPE.gsm: return "GSM";//break;
  77. case TYPE.domicile: return "Maison";//break;
  78. case TYPE.bureau: return "Bureau";//break;
  79. default: return "Sans type";
  80. }
  81. }
  82. /// <summary>
  83. /// Get the phone type enum item from a local name
  84. /// </summary>
  85. /// <param name="t">Local name of type</param>
  86. /// <returns>Phone type enum item</returns>
  87. public static TYPE getTypeFromLocalName(String t)
  88. {
  89. switch (t)
  90. {
  91. case "GSM": return TYPE.gsm;//break;
  92. case "Maison": return TYPE.domicile;//break;
  93. case "Bureau": return TYPE.bureau;//break;
  94. default: return TYPE._;
  95. }
  96. }
  97. /// <summary>
  98. /// Get the local name of a phone type enum item name
  99. /// </summary>
  100. /// <param name="typeName">(String) Phone type enum item name</param>
  101. /// <returns>Local name of param</returns>
  102. public static String getTypeLocalName(String typeName)
  103. {
  104. TYPE t;
  105. try
  106. {
  107. t = (TYPE)Enum.Parse(typeof(TYPE), typeName);
  108. }
  109. catch(Exception)
  110. {
  111. t = TYPE._;
  112. }
  113. return getTypeLocalName(t);
  114. }
  115. #endregion
  116.  
  117. #region properties
  118. public int Id
  119. {
  120. get { return this.id; }
  121. set { this.id = value; }
  122. }
  123. public String Number
  124. {
  125. get { return this.number; }
  126. set
  127. {
  128. //todo : implement validation rules
  129. this.number = value;
  130. }
  131. }
  132. /// <summary>
  133. /// Just use to display
  134. /// </summary>
  135. public String NumberAndType
  136. {
  137. //no setter!!!
  138. get { return ToString(); }
  139. }
  140. public TYPE Type
  141. {
  142. get { return this.type; }
  143. set { this.type = value; }
  144. }
  145. #endregion
  146.  
  147. #region ICloneable Members
  148. public object Clone()
  149. {
  150. Phone p = (Phone)MemberwiseClone();
  151. return p;
  152. }
  153. #endregion
  154. }
  155. }

Table des matières Haut

Actor

L'objet Actor définit une personne qui joue un rôle dans l'application. L'objet Actor hérite de Person.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. [Serializable]
  8. public class Actor : Person
  9. {
  10. #region constructor and declarations
  11.  
  12. private STATUS status;
  13. private ActorRole role;
  14. public Actor():base()
  15. {
  16. this.Status = STATUS.none;
  17. }
  18. public Actor(int id, String lastName)
  19. : this()
  20. {
  21. this.Id = id;
  22. this.LastName = lastName;
  23. }
  24. #endregion
  25.  
  26. #region overrided methods
  27. public override String ToString()
  28. {
  29. StringBuilder s = new StringBuilder(FirstName);
  30. s.Append(" ");
  31. s.Append(LastName);
  32. s.Append(" (");
  33. if(role!=null && role.Name!=null)
  34. s.Append(role.Name);
  35. else
  36. s.Append("Rôle indéterminé");
  37. s.Append(")");
  38. return s.ToString();
  39. }
  40. public override int GetHashCode()
  41. {
  42. //todo : reimplement GetHashCode
  43. return this.ToString().GetHashCode();
  44. }
  45. public override bool Equals(Object o)
  46. {
  47. //if (this == o) return true;
  48. Actor p = o as Actor;
  49. if (p == null) return false;
  50. if (this.Id != p.Id) return false;
  51. if (this.role != null)
  52. {
  53. if (!this.role.Equals(p.role)) return false;
  54. }
  55. else if (p.role!=null) return false;
  56. //if (!this.LastName.Equals(p.LastName)) return false;
  57. //if (!this.FirstName.Equals(p.FirstName)) return false;
  58. //if (!this.getBirthdate().Equals(p.getBirthdate())) return false;
  59. return true;
  60. }
  61. #endregion
  62.  
  63. #region properties
  64. public ActorRole Role
  65. {
  66. get { return this.role; }
  67. set { this.role = value; }
  68. }
  69. public STATUS Status
  70. {
  71. get { return this.status; }
  72. set { this.status = value; }
  73. }
  74. /// <summary>
  75. /// Get string with lastname, firstname, and role
  76. /// </summary>
  77. public String Display
  78. {
  79. get
  80. {
  81. /*StringBuilder display = new StringBuilder(this.ToString());
  82.   if (role!=null && role.Name != null && !role.Name.Equals(""))
  83.   {
  84.   display.Append(" (");
  85.   display.Append(role.Name);
  86.   display.Append(")");
  87.   }
  88.   return display.ToString(); */
  89. return this.ToString();
  90. }
  91. }
  92. /// <summary>
  93. /// Get string with firstname and lastname
  94. /// </summary>
  95. public String DisplayPerson
  96. {
  97. get
  98. {
  99.  
  100. return String.Format("{0} {1}", FirstName, LastName);
  101. }
  102. }
  103. #endregion
  104.  
  105. #region public methods
  106. public void setFromPerson(Person person)
  107. {
  108. this.Id = person.Id;
  109. this.LastName = person.LastName;
  110. this.FirstName = person.FirstName;
  111. this.Sex = person.Sex;
  112. }
  113. #endregion
  114.  
  115. /*
  116.   /// <summary>
  117.   /// Get person without phones or mail addresses
  118.   /// </summary>
  119.   /// <param name="reset">true if we want insert this person as a new person</param>
  120.   /// <returns></returns>
  121.   internal Person getPerson(bool reset)
  122.   {
  123.   int id = (reset)?-1:Id;
  124.   Person p = new Person(id,LastName);
  125.   p.FirstName = FirstName;
  126.   p.Pseudo = Pseudo;
  127.   p.Birthdate = Birthdate;
  128.   p.Sex = Sex;
  129.   return p;
  130.   }*/
  131. }
  132. }

Table des matières Haut

ActorRole

L'objet ActorRole définit un rôle joué par un acteur dans l'application. Par exemple : dessinateur de bande dessinée.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. [Serializable]
  8. public class ActorRole
  9. {
  10. #region constructor and declarations
  11. private int id;
  12. private String name, value, info;
  13.  
  14. public ActorRole()
  15. : this(-1, "")
  16. {
  17. }
  18. public ActorRole(int id, String name)
  19. : this(id, name, "")
  20. {
  21. }
  22. public ActorRole(int id, String name, String value)
  23. : this(id,name,value,"")
  24. {
  25. }
  26. public ActorRole(int id, String name, String value, String info)
  27. {
  28. this.id = id;
  29. this.name = name;
  30. this.value = value;
  31. this.info = info;
  32. }
  33. /// <summary>
  34. /// Copy constructor
  35. /// </summary>
  36. /// <param name="role"></param>
  37. public ActorRole(ActorRole role)
  38. {
  39. this.id = role.id;
  40. this.name = role.name;
  41. this.value = role.value;
  42. this.info = role.info;
  43. }
  44. #endregion
  45.  
  46. #region overrided methods
  47. public override String ToString()
  48. {
  49. return name + " " + value;
  50. }
  51. public override int GetHashCode()
  52. {
  53. //todo : reimplement GetHashCode
  54. return this.ToString().GetHashCode();
  55. }
  56. public override bool Equals(Object o)
  57. {
  58. //if (this == o) return true;
  59. if (!(o is ActorRole)) return false;
  60. ActorRole p = (ActorRole)o;
  61. if (!this.name.Equals(p.name)) return false;
  62. if (!this.value.Equals(p.value)) return false;
  63. return true;
  64. }
  65. #endregion
  66.  
  67. #region getters and setters
  68. /// <summary>
  69. /// Role identifier
  70. /// </summary>
  71. public int RoleId
  72. {
  73. get { return this.id; }
  74. set { this.id = value; }
  75. }
  76. /// <summary>
  77. /// Role name (i.e. Acteur)
  78. /// </summary>
  79. public String Name
  80. {
  81. get { return this.name; }
  82. set { this.name = value; }
  83. }
  84. /// <summary>
  85. /// Role value (i.e. person name played by an actor)
  86. /// </summary>
  87. public String Value
  88. {
  89. get { return this.value; }
  90. set { this.value = value; }
  91. }
  92. /// <summary>
  93. /// Role info (i.e. film title where this actor plays)
  94. /// </summary>
  95. public String Info
  96. {
  97. get { return this.info; }
  98. set { this.info = value; }
  99. }
  100. #endregion
  101. }
  102. }

Table des matières Haut

Borrow

L'objet Borrow définit l'emprunt d'un exemplaire par une personne.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. public class Borrow
  8. {
  9. #region Constructors and declarations
  10. private int id;
  11. private Person borrower;
  12. private String comment;
  13. private int mediabrolId;
  14. private DateTime startDate, endDate, planDate;
  15.  
  16. public Borrow(int mediabrolId, DateTime startDate)
  17. {
  18. this.id = -1;
  19. this.mediabrolId = mediabrolId;
  20. this.startDate = startDate;
  21. this.endDate = new DateTime(0L);
  22. this.planDate = new DateTime(0L);
  23. }
  24. public Borrow(int id, int mediabrolId, DateTime startDate, Person borrower)
  25. {
  26. this.id = id;
  27. this.mediabrolId = mediabrolId;
  28. this.borrower = borrower;
  29. this.startDate = startDate;
  30. this.endDate = new DateTime(0L);
  31. this.planDate = new DateTime(0L);
  32.  
  33. }
  34. public Borrow(int id, int mediabrolId, DateTime startDate, DateTime endDate, DateTime planDate, Person borrower, String comment)
  35. {
  36. this.id = id;
  37. this.mediabrolId = mediabrolId;
  38. this.borrower = borrower;
  39. this.startDate = startDate;
  40. this.endDate = endDate;
  41. this.planDate = planDate;
  42. this.comment = comment;
  43.  
  44. }
  45. #endregion
  46.  
  47. #region getters and setters
  48. public int Id
  49. {
  50. get { return this.id; }
  51. set { this.id = value; }
  52. }
  53. public int MediabrolId
  54. {
  55. get { return this.mediabrolId; }
  56. set { this.mediabrolId = value; }
  57. }
  58. public String Comment
  59. {
  60. get { return this.comment; }
  61. set { this.comment = value; }
  62. }
  63. public Person Borrower
  64. {
  65. get { return this.borrower; }
  66. set { this.borrower = value; }
  67. }
  68. public DateTime StartDate
  69. {
  70. get { return this.startDate; }
  71. set { this.startDate = value; }
  72. }
  73. public DateTime EndDate
  74. {
  75. get { return this.endDate; }
  76. set { this.endDate = value; }
  77. }
  78. public DateTime PlanDate
  79. {
  80. get { return this.planDate; }
  81. set { this.planDate = value; }
  82. }
  83. #endregion
  84. }
  85. }

Table des matières Haut

Task

L'objet Task définit une tâche.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace be.gaudry.bibliobrol.model
  6. {
  7. public class Task
  8. {
  9. #region constructor and declarations
  10. private int id;
  11. private String taskName, taskInfo;
  12. private DateTime startDate, endDate, planDate;
  13.  
  14. public Task()
  15. {
  16. this.id = -1;
  17. startDate = new DateTime(0L);
  18. endDate = new DateTime(0L);
  19. planDate = new DateTime(0L);
  20. taskName = "";
  21. taskInfo = "";
  22. }
  23. public Task(int id, String taskName)
  24. : this()
  25. {
  26. this.id = id;
  27. this.taskName = taskName;
  28. }
  29. public Task(int id, String taskName, DateTime startDate)
  30. : this(id, taskName)
  31. {
  32. this.startDate = startDate;
  33. }
  34. public Task(int id, String taskName, String taskInfo)
  35. : this(id, taskName)
  36. {
  37. this.taskInfo = taskInfo;
  38. }
  39. public Task(int id, DateTime startDate, String taskName, DateTime planDate, DateTime endDate, String taskInfo)
  40. : this(id, taskName, taskInfo)
  41. {
  42. this.startDate = startDate;
  43. this.planDate = planDate;
  44. this.endDate = endDate;
  45. }
  46. #endregion
  47.  
  48. #region overrided methods
  49. public override String ToString()
  50. {
  51. return startDate + " : " + taskName;
  52. }
  53. public override int GetHashCode()
  54. {
  55. return this.ToString().GetHashCode();
  56. }
  57. public override bool Equals(Object o)
  58. {
  59. //if (this == o) return true;
  60. if (!(o is Task)) return false;
  61. Task t = (Task)o;
  62. if (this.Id != t.Id) return false;
  63. if (!this.taskName.Equals(t.taskName)) return false;
  64. if (!this.taskInfo.Equals(t.taskInfo)) return false;
  65. if (!this.startDate.Equals(t.startDate)) return false;
  66. if (!this.endDate.Equals(t.endDate)) return false;
  67. return true;
  68. }
  69. #endregion
  70.  
  71. #region getters and setters
  72. public int Id
  73. {
  74. get { return this.id; }
  75. set { this.id = value; }
  76. }
  77. public String TaskName
  78. {
  79. get { return this.taskName; }
  80. set { this.taskName = value; }
  81. }
  82. public String TaskInfo
  83. {
  84. get { return this.taskInfo; }
  85. set { this.taskInfo = value; }
  86. }
  87. public DateTime StartDate
  88. {
  89. get { return this.startDate; }
  90. set { this.startDate = value; }
  91. }
  92. public DateTime EndDate
  93. {
  94. get { return this.endDate; }
  95. set { this.endDate = value; }
  96. }
  97. public DateTime PlanDate
  98. {
  99. get { return this.planDate; }
  100. set { this.planDate = value; }
  101. }
  102. #endregion
  103. }
  104. }

Table des matières Haut

Version en cache

21/11/2024 09:52:30 Cette version de la page est en cache (à la date du 21/11/2024 09:52:30) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 06/12/2006, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/bibliobrol-objets.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.