adds component entity

Thu, 15 Oct 2020 12:27:05 +0200

author
Mike Becker <universe@uap-core.de>
date
Thu, 15 Oct 2020 12:27:05 +0200
changeset 127
6105ee2cceaf
parent 126
4148e6de0f21
child 128
947d0f6a6a83

adds component entity

setup/postgres/psql_create_tables.sql file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/entities/Component.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/types/WebColor.java file | annotate | diff | comparison | revisions
--- a/setup/postgres/psql_create_tables.sql	Thu Oct 15 11:42:43 2020 +0200
+++ b/setup/postgres/psql_create_tables.sql	Thu Oct 15 12:27:05 2020 +0200
@@ -33,6 +33,16 @@
     status          version_status  not null default 'Future'
 );
 
+
+create table lpit_component (
+    id              serial          primary key,
+    project         integer         not null references lpit_project(projectid),
+    name            varchar(20)     not null,
+    color           char(6)         not null default '000000',
+    ordinal         integer         not null default 0,
+    description     text
+);
+
 create type issue_status as enum (
     'InSpecification',
     'ToDo',
@@ -61,6 +71,7 @@
 create table lpit_issue (
     issueid         serial          primary key,
     project         integer         not null references lpit_project(projectid),
+    component       integer         references lpit_component(id),
     status          issue_status    not null default 'InSpecification',
     category        issue_category  not null default 'Feature',
     subject         varchar(200)    not null,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/uapcore/lightpit/entities/Component.java	Thu Oct 15 12:27:05 2020 +0200
@@ -0,0 +1,113 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2020 Mike Becker. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *
+ *   2. Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+package de.uapcore.lightpit.entities;
+
+import de.uapcore.lightpit.types.WebColor;
+
+import java.util.Objects;
+
+public final class Component {
+
+    private final int id;
+
+    private String name;
+
+    private WebColor color;
+
+    private int ordinal = 0;
+
+    private String description = null;
+
+    private User lead = null;
+
+    /**
+     * Sole constructor.
+     * @param id the ID of the component
+     */
+    public Component(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public WebColor getColor() {
+        return color;
+    }
+
+    public void setColor(WebColor color) {
+        this.color = color;
+    }
+
+    public int getOrdinal() {
+        return ordinal;
+    }
+
+    public void setOrdinal(int ordinal) {
+        this.ordinal = ordinal;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public User getLead() {
+        return lead;
+    }
+
+    public void setLead(User lead) {
+        this.lead = lead;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Component component = (Component) o;
+        return id == component.id;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(id);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/uapcore/lightpit/types/WebColor.java	Thu Oct 15 12:27:05 2020 +0200
@@ -0,0 +1,30 @@
+package de.uapcore.lightpit.types;
+
+public final class WebColor {
+
+    private final String hex;
+
+    /**
+     * Constructs a color object from a hex string.
+     * @param hex the 6 digits hex string optionally preceded by a hash symbol
+     * @throws IllegalArgumentException if the given string does not specify a color
+     */
+    public WebColor(String hex) throws IllegalArgumentException {
+        this.hex = (hex.startsWith("#") ? hex : ("#"+hex)).toUpperCase();
+        if (!this.hex.matches("#[0-9A-F]{6}"))
+            throw new IllegalArgumentException(hex+" is not a color");
+    }
+
+    /**
+     * Returns the hex representation without th leading hash symbol.
+     * @return the hex representation of this color (e.g. FF0000 for red)
+     */
+    public String getHex() {
+        return hex.substring(1);
+    }
+
+    @Override
+    public String toString() {
+        return hex;
+    }
+}

mercurial