Move CMS-related entities into a “cms” package.

Change-Id: Ie350230552fa6f970f26412b40974ca4af7a9260
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/LoginCertificate.java b/src/main/java/eu/mulk/mulkcms2/cms/users/LoginCertificate.java
new file mode 100644
index 0000000..4e6f047
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/LoginCertificate.java
@@ -0,0 +1,34 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "login_certificates", schema = "public", catalog = "mulkcms")
+@IdClass(LoginCertificatePK.class)
+public class LoginCertificate extends PanacheEntityBase {
+
+  @Id
+  @Column(name = "user", nullable = false)
+  public int userId;
+
+  @Id
+  @Column(name = "certificate", nullable = false)
+  public byte[] certificate;
+
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(
+      name = "user",
+      referencedColumnName = "id",
+      nullable = false,
+      insertable = false,
+      updatable = false)
+  public User user;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/LoginCertificatePK.java b/src/main/java/eu/mulk/mulkcms2/cms/users/LoginCertificatePK.java
new file mode 100644
index 0000000..8bb5f44
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/LoginCertificatePK.java
@@ -0,0 +1,52 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+public class LoginCertificatePK implements Serializable {
+
+  private int userId;
+  private byte[] certificate;
+
+  @Column(name = "user", nullable = false)
+  @Id
+  public int getUserId() {
+    return userId;
+  }
+
+  public void setUserId(int userId) {
+    this.userId = userId;
+  }
+
+  @Column(name = "certificate", nullable = false)
+  @Id
+  public byte[] getCertificate() {
+    return certificate;
+  }
+
+  public void setCertificate(byte[] certificate) {
+    this.certificate = certificate;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    LoginCertificatePK that = (LoginCertificatePK) o;
+    return userId == that.userId && Arrays.equals(certificate, that.certificate);
+  }
+
+  @Override
+  public int hashCode() {
+    int result = Objects.hash(userId);
+    result = 31 * result + Arrays.hashCode(certificate);
+    return result;
+  }
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/OpenId.java b/src/main/java/eu/mulk/mulkcms2/cms/users/OpenId.java
new file mode 100644
index 0000000..0cc7407
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/OpenId.java
@@ -0,0 +1,34 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "openids", schema = "public", catalog = "mulkcms")
+@IdClass(OpenIdPK.class)
+public class OpenId extends PanacheEntityBase {
+
+  @Id
+  @Column(name = "user", nullable = false)
+  public int userId;
+
+  @Id
+  @Column(name = "openid", nullable = false, length = -1)
+  public String openid;
+
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(
+      name = "user",
+      referencedColumnName = "id",
+      nullable = false,
+      insertable = false,
+      updatable = false)
+  public User user;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/OpenIdPK.java b/src/main/java/eu/mulk/mulkcms2/cms/users/OpenIdPK.java
new file mode 100644
index 0000000..e80fb25
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/OpenIdPK.java
@@ -0,0 +1,49 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import java.io.Serializable;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+public class OpenIdPK implements Serializable {
+
+  private int userId;
+  private String openid;
+
+  @Column(name = "user", nullable = false)
+  @Id
+  public int getUserId() {
+    return userId;
+  }
+
+  public void setUserId(int userId) {
+    this.userId = userId;
+  }
+
+  @Column(name = "openid", nullable = false, length = -1)
+  @Id
+  public String getOpenid() {
+    return openid;
+  }
+
+  public void setOpenid(String openid) {
+    this.openid = openid;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    OpenIdPK openIdPK = (OpenIdPK) o;
+    return userId == openIdPK.userId && Objects.equals(openid, openIdPK.openid);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(userId, openid);
+  }
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/Password.java b/src/main/java/eu/mulk/mulkcms2/cms/users/Password.java
new file mode 100644
index 0000000..632284e
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/Password.java
@@ -0,0 +1,34 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "passwords", schema = "public", catalog = "mulkcms")
+@IdClass(PasswordPK.class)
+public class Password extends PanacheEntityBase {
+
+  @Id
+  @Column(name = "user", nullable = false)
+  public int userId;
+
+  @Id
+  @Column(name = "password", nullable = false, length = -1)
+  public String password;
+
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(
+      name = "user",
+      referencedColumnName = "id",
+      nullable = false,
+      insertable = false,
+      updatable = false)
+  public User user;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/PasswordPK.java b/src/main/java/eu/mulk/mulkcms2/cms/users/PasswordPK.java
new file mode 100644
index 0000000..c43cd5e
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/PasswordPK.java
@@ -0,0 +1,49 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import java.io.Serializable;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+public class PasswordPK implements Serializable {
+
+  private int userId;
+  private String password;
+
+  @Column(name = "user", nullable = false)
+  @Id
+  public int getUserId() {
+    return userId;
+  }
+
+  public void setUserId(int userId) {
+    this.userId = userId;
+  }
+
+  @Column(name = "password", nullable = false, length = -1)
+  @Id
+  public String getPassword() {
+    return password;
+  }
+
+  public void setPassword(String password) {
+    this.password = password;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    PasswordPK that = (PasswordPK) o;
+    return userId == that.userId && Objects.equals(password, that.password);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(userId, password);
+  }
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/User.java b/src/main/java/eu/mulk/mulkcms2/cms/users/User.java
new file mode 100644
index 0000000..a84462f
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/User.java
@@ -0,0 +1,54 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import eu.mulk.mulkcms2.cms.comments.CommentRevision;
+import eu.mulk.mulkcms2.cms.pages.ArticleRevision;
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import java.util.Collection;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "users", schema = "public", catalog = "mulkcms")
+public class User extends PanacheEntityBase {
+
+  @Id
+  @Column(name = "id", nullable = false)
+  public int id;
+
+  @Column(name = "name", nullable = true, length = -1)
+  public String name;
+
+  @Column(name = "status", nullable = false, length = -1)
+  public String status;
+
+  @Column(name = "email", nullable = true, length = -1)
+  public String email;
+
+  @Column(name = "website", nullable = true, length = -1)
+  public String website;
+
+  @OneToMany(mappedBy = "authors", fetch = FetchType.LAZY)
+  public Collection<ArticleRevision> articleRevisions;
+
+  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
+  public Collection<CommentRevision> commentRevisions;
+
+  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
+  public Collection<LoginCertificate> loginCertificates;
+
+  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
+  public Collection<OpenId> openids;
+
+  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
+  public Collection<Password> passwords;
+
+  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
+  public Collection<UserPermission> userPermissions;
+
+  @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
+  public Collection<UserSetting> userSettings;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermission.java b/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermission.java
new file mode 100644
index 0000000..a580813
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermission.java
@@ -0,0 +1,37 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "user_permissions", schema = "public", catalog = "mulkcms")
+@IdClass(UserPermissionPK.class)
+public class UserPermission extends PanacheEntityBase {
+
+  @Id
+  @Column(name = "user", nullable = false)
+  public int userId;
+
+  @Id
+  @Column(name = "permission", nullable = false, length = -1)
+  public String permission;
+
+  @Column(name = "status", nullable = true)
+  public Boolean status;
+
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(
+      name = "user",
+      referencedColumnName = "id",
+      nullable = false,
+      insertable = false,
+      updatable = false)
+  public User user;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermissionPK.java b/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermissionPK.java
new file mode 100644
index 0000000..406178e
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermissionPK.java
@@ -0,0 +1,49 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import java.io.Serializable;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+public class UserPermissionPK implements Serializable {
+
+  private int userId;
+  private String permission;
+
+  @Column(name = "user", nullable = false)
+  @Id
+  public int getUserId() {
+    return userId;
+  }
+
+  public void setUserId(int userId) {
+    this.userId = userId;
+  }
+
+  @Column(name = "permission", nullable = false, length = -1)
+  @Id
+  public String getPermission() {
+    return permission;
+  }
+
+  public void setPermission(String permission) {
+    this.permission = permission;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    UserPermissionPK that = (UserPermissionPK) o;
+    return userId == that.userId && Objects.equals(permission, that.permission);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(userId, permission);
+  }
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/UserSetting.java b/src/main/java/eu/mulk/mulkcms2/cms/users/UserSetting.java
new file mode 100644
index 0000000..f4ec234
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/UserSetting.java
@@ -0,0 +1,37 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "user_settings", schema = "public", catalog = "mulkcms")
+@IdClass(UserSettingPK.class)
+public class UserSetting extends PanacheEntityBase {
+
+  @Id
+  @Column(name = "user", nullable = false)
+  public int userId;
+
+  @Id
+  @Column(name = "setting", nullable = false, length = -1)
+  public String setting;
+
+  @Column(name = "value", nullable = true, length = -1)
+  public String value;
+
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(
+      name = "user",
+      referencedColumnName = "id",
+      nullable = false,
+      insertable = false,
+      updatable = false)
+  public User user;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/UserSettingPK.java b/src/main/java/eu/mulk/mulkcms2/cms/users/UserSettingPK.java
new file mode 100644
index 0000000..b7c28ea
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/UserSettingPK.java
@@ -0,0 +1,49 @@
+package eu.mulk.mulkcms2.cms.users;
+
+import java.io.Serializable;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+public class UserSettingPK implements Serializable {
+
+  private int userId;
+  private String setting;
+
+  @Column(name = "user", nullable = false)
+  @Id
+  public int getUserId() {
+    return userId;
+  }
+
+  public void setUserId(int userId) {
+    this.userId = userId;
+  }
+
+  @Column(name = "setting", nullable = false, length = -1)
+  @Id
+  public String getSetting() {
+    return setting;
+  }
+
+  public void setSetting(String setting) {
+    this.setting = setting;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    UserSettingPK that = (UserSettingPK) o;
+    return userId == that.userId && Objects.equals(setting, that.setting);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(userId, setting);
+  }
+}