View Javadoc

1   package rydeen.utils;
2   
3   import java.io.Serializable;
4   
5   /**
6    * プロバイダの情報を表すクラス.
7    *
8    * @author Haruaki Tamada
9    * @see Author
10   * @see Organization
11   */
12  public class Provider implements Serializable{
13      private static final long serialVersionUID = 8577013159346892136L;
14  
15      /**
16       * Rydeenプロバイダためのオブジェクト.
17       */
18      public static final Provider RYDEEN_PROVIDER = new Provider(
19          "Rydeen Provider",
20          new Author[] { new Author("Haruaki Tamada", "tama3@users.sourceforge.jp"), }
21      );
22      /**
23       * 不明のプロバイダのためのオブジェクト.
24       */
25      public static final Provider UNKNOWN = new Provider("unknown");
26  
27      private String name;
28      private Author[] authors;
29      private Organization org;
30      
31      /**
32       * このプロバイダの名前を指定してオブジェクトを作成します.
33       * もしプロバイダの名前がnullの場合はNullPointerExceptionが投げられます.
34       * このコンストラクタを使った場合,著者と所属団体は設定されません.
35       */
36      public Provider(String name){
37          this(name, null, null);
38      }
39  
40      /**
41       * このプロバイダの名前と著者情報を指定してオブジェクトを作成します.
42       * もしプロバイダの名前がnullの場合はNullPointerExceptionが投げられます.
43       * このコンストラクタを使った場合,所属団体は設定されません.
44       */
45      public Provider(String name, Author[] authors){
46          this(name, authors, null);
47      }
48  
49      /**
50       * このプロバイダの名前と所属団体を指定してオブジェクトを作成します.
51       * もしプロバイダの名前がnullの場合はNullPointerExceptionが投げられます.
52       * このコンストラクタを使った場合,著者情報は設定されません.
53       */
54      public Provider(String name, Organization org){
55          this(name, null, org);
56      }
57  
58      /**
59       * このプロバイダの名前,著者,団体を指定してオブジェクトを作成します.
60       * もしプロバイダの名前がnullの場合はNullPointerExceptionが投げられます.
61       * 著者や所属団体がnullの場合は,それらが設定されないオブジェクトが作成されます.
62       */
63      public Provider(String name, Author[] initAuthors, Organization org){
64          if(name == null){
65              throw new NullPointerException();
66          }
67          this.name = name;
68          this.org = org;
69          if(initAuthors != null && initAuthors.length != 0){
70              authors = new Author[initAuthors.length];
71              System.arraycopy(initAuthors, 0, authors, 0, authors.length);
72          }
73          else{
74              authors = new Author[0];
75          }
76      }
77  
78      /**
79       * このプロバイダに所属する著者一覧を返します.
80       * 著者情報が設定されていない場合は長さ0の配列が返されます.
81       */
82      public Author[] getAuthors(){
83          Author[] newAuthors = new Author[authors.length];
84          System.arraycopy(authors, 0, newAuthors, 0, authors.length);
85          return newAuthors;
86      }
87  
88      /**
89       * このプロバイダの団体情報を返します.
90       * 団体情報が設定されていない場合はnullが返されます.
91       */
92      public Organization getOrganization(){
93          return org;
94      }
95  
96      /**
97       * このプロバイダの名前を返します.
98       */
99      public String getName(){
100         return name;
101     }
102 }