Keesun 2014-02-20
Added organization
@cc48414f8f0ecce12890538427520f9fa84ee3b6
 
app/models/Organization.java (added)
+++ app/models/Organization.java
@@ -0,0 +1,35 @@
+package models;
+
+import play.data.format.Formats;
+import play.db.ebean.Model;
+
+import javax.persistence.*;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Keeun Baik
+ */
+@Entity
+public class Organization extends Model {
+
+    private static final long serialVersionUID = -1L;
+
+    @Id
+    public Long id;
+
+    public String name;
+
+    @Formats.DateTime(pattern = "yyyy-MM-dd")
+    public Date created;
+
+    @OneToMany(mappedBy = "organization", cascade = CascadeType.ALL)
+    public List<Project> projects;
+
+    @OneToMany(mappedBy = "organization", cascade = CascadeType.ALL)
+    public List<OrganizationUser> users;
+
+    public String descr;
+
+
+}
 
app/models/OrganizationUser.java (added)
+++ app/models/OrganizationUser.java
@@ -0,0 +1,29 @@
+package models;
+
+import play.db.ebean.Model;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+/**
+ * @author Keeun Baik
+ */
+@Entity
+public class OrganizationUser extends Model {
+
+    private static final long serialVersionUID = -1L;
+
+    @Id
+    public Long id;
+
+    @ManyToOne
+    public User user;
+
+    @ManyToOne
+    public Organization organization;
+
+    @ManyToOne
+    public Role role;
+
+}
app/models/Project.java
--- app/models/Project.java
+++ app/models/Project.java
@@ -4,6 +4,7 @@
 import com.avaje.ebean.ExpressionList;
 import com.avaje.ebean.Page;
 import controllers.routes;
+import models.enumeration.ProjectScope;
 import models.enumeration.RequestState;
 import models.enumeration.ResourceType;
 import models.enumeration.RoleType;
@@ -117,6 +118,12 @@
 
     public boolean isUsingReviewerCount;
 
+    @ManyToOne
+    public Organization organization;
+
+    @Enumerated(EnumType.STRING)
+    public ProjectScope projectScope;
+
     /**
      * 신규 프로젝트를 생성한다.
      *
app/models/User.java
--- app/models/User.java
+++ app/models/User.java
@@ -146,6 +146,9 @@
     @OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
     public RecentlyVisitedProjects recentlyVisitedProjects;
 
+    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
+    public List<OrganizationUser> organizationUsers;
+
     public User() {
     }
 
 
app/models/enumeration/ProjectScope.java (added)
+++ app/models/enumeration/ProjectScope.java
@@ -0,0 +1,9 @@
+package models.enumeration;
+
+/**
+ * @author Keeun Baik
+ */
+public enum ProjectScope {
+
+    PRIVATE, PROTECTED, PUBLIC;
+}
 
conf/evolutions/default/63.sql (added)
+++ conf/evolutions/default/63.sql
@@ -0,0 +1,49 @@
+# --- !Ups
+create table organization (
+  id                        bigint not null,
+  name                      varchar(255),
+  descr                     varchar(255),
+  created                   timestamp,
+  constraint pk_organization primary key (id)
+);
+create sequence organization_seq;
+
+create table organization_user (
+  id                        bigint not null,
+  user_id                   bigint,
+  organization_id           bigint,
+  role_id                   bigint,
+  constraint pk_organization_user primary key (id))
+;
+create sequence organization_user_seq;
+alter table organization_user add constraint fk_organization_user_user foreign key (user_id) references n4user (id) on delete restrict on update restrict;
+create index ix_organization_user_user on organization_user (user_id);
+alter table organization_user add constraint fk_organization_user_organization foreign key (organization_id) references organization (id) on delete restrict on update restrict;
+create index ix_organization_user_organization on organization_user (organization_id);
+alter table organization_user add constraint fk_organization_user_role foreign key (role_id) references role (id) on delete restrict on update restrict;
+create index ix_organization_user_role on organization_user (role_id);
+
+alter table project add column organization_id bigint;
+alter table project add constraint fk_project_organization foreign key (organization_id) references organization (id) on delete restrict on update restrict;
+
+alter table project add column project_scope varchar(255);
+alter table project add constraint ck_project_project_scope check (project_scope in ('PRIVATE','PROTECTED','PUBLIC'));
+
+update project set project_scope = 'PUBLIC' where is_public = true;
+update project set project_scope = 'PRIVATE' where is_public = false;
+# --- !Downs
+alter table project drop constraint if exists ck_project_project_scope;
+alter table project drop column project_scope;
+
+alter table project drop constraint if exists fk_project_organization;
+alter table project drop column organization_id;
+
+alter table organization_user drop constraint if exists fk_organization_user_role;
+alter table organization_user drop constraint if exists fk_organization_user_organization;
+alter table organization_user drop constraint if exists fk_organization_user_user;
+
+drop sequence if exists organization_user_seq;
+drop table if exists organization_user;
+
+drop sequence if exists organization_seq;
+drop table if exists organization;
conf/initial-data.yml
--- conf/initial-data.yml
+++ conf/initial-data.yml
@@ -21,6 +21,13 @@
     - !!models.Role
         name:           member
         active:         true
+    - !!models.Role
+        name:           org_admin
+        active:         true
+    - !!models.Role
+        name:           org_participant
+        active:         true
+
 
 # Labels
 labels:
Add a comment
List