preparing for tag colors
This commit is contained in:
@@ -158,6 +158,7 @@ public class Constants {
|
|||||||
|
|
||||||
public static final String TABLE_SETTINGS = "settings";
|
public static final String TABLE_SETTINGS = "settings";
|
||||||
public static final String TAGS = "tags";
|
public static final String TAGS = "tags";
|
||||||
|
public static final String TAG_COLORS = "tag_colors";
|
||||||
public static final String TASK_IDS = "task_ids";
|
public static final String TASK_IDS = "task_ids";
|
||||||
public static final String TAX = "tax";
|
public static final String TAX = "tax";
|
||||||
public static final String TEMPLATE = "template";
|
public static final String TEMPLATE = "template";
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ public class Project implements Mappable {
|
|||||||
private final long id;
|
private final long id;
|
||||||
private String description;
|
private String description;
|
||||||
private final Set<String> dirtyFields = new HashSet<>();
|
private final Set<String> dirtyFields = new HashSet<>();
|
||||||
|
private final Map<String,String> tagColors = new HashMap<>();
|
||||||
|
|
||||||
public Project(long id, String name, String description, int status, Long companyId, boolean showClosed, Map<Long,Member> members, Collection<Status> allowedStates) {
|
public Project(long id, String name, String description, int status, Long companyId, boolean showClosed, Map<Long,Member> members, Collection<Status> allowedStates) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@@ -113,6 +114,10 @@ public class Project implements Mappable {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> tagColors() {
|
||||||
|
return tagColors;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> toMap() {
|
public Map<String, Object> toMap() {
|
||||||
var map = new HashMap<String, Object>();
|
var map = new HashMap<String, Object>();
|
||||||
@@ -130,6 +135,7 @@ public class Project implements Mappable {
|
|||||||
var stateMap = new HashMap<Integer,String>();
|
var stateMap = new HashMap<Integer,String>();
|
||||||
for (var state : allowedStates) stateMap.put(state.code(),state.name());
|
for (var state : allowedStates) stateMap.put(state.code(),state.name());
|
||||||
map.put(ALLOWED_STATES,stateMap);
|
map.put(ALLOWED_STATES,stateMap);
|
||||||
|
map.put(TAG_COLORS,tagColors);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
|||||||
import de.srsoftware.umbrella.core.model.Permission;
|
import de.srsoftware.umbrella.core.model.Permission;
|
||||||
import de.srsoftware.umbrella.core.model.Project;
|
import de.srsoftware.umbrella.core.model.Project;
|
||||||
import de.srsoftware.umbrella.core.model.Status;
|
import de.srsoftware.umbrella.core.model.Status;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -132,20 +134,33 @@ CREATE TABLE IF NOT EXISTS {0} (
|
|||||||
public Project load(long projectId) throws UmbrellaException {
|
public Project load(long projectId) throws UmbrellaException {
|
||||||
try {
|
try {
|
||||||
var rs = select(ALL).from(TABLE_PROJECTS).where(ID, equal(projectId)).exec(db);
|
var rs = select(ALL).from(TABLE_PROJECTS).where(ID, equal(projectId)).exec(db);
|
||||||
Project result = null;
|
Project project = null;
|
||||||
if (rs.next()) result = Project.of(rs);
|
if (rs.next()) project = Project.of(rs);
|
||||||
rs.close();
|
rs.close();
|
||||||
if (result == null) throw UmbrellaException.notFound("No project found for id {0}",projectId);
|
|
||||||
|
if (project == null) throw UmbrellaException.notFound("No project found for id {0}",projectId);
|
||||||
|
|
||||||
rs = select(ALL).from(TABLE_CUSTOM_STATES).where(PROJECT_ID,equal(projectId)).exec(db);
|
rs = select(ALL).from(TABLE_CUSTOM_STATES).where(PROJECT_ID,equal(projectId)).exec(db);
|
||||||
var states = result.allowedStates();
|
var states = project.allowedStates();
|
||||||
while (rs.next()) states.add(Status.of(rs));
|
while (rs.next()) states.add(Status.of(rs));
|
||||||
rs.close();
|
rs.close();
|
||||||
return result;
|
|
||||||
|
rs = select(VALUE).from(TABLE_SETTINGS).where(KEY,equal(colorKey(projectId))).exec(db);
|
||||||
|
if (rs.next()) {
|
||||||
|
var map = project.tagColors();
|
||||||
|
new JSONObject(rs.getString(VALUE)).toMap().forEach((k, v) -> map.put(k, v.toString()));
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
return project;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new UmbrellaException("Failed to load project from database");
|
throw new UmbrellaException("Failed to load project from database");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String colorKey(long projectId) {
|
||||||
|
return "tag_colors:"+projectId;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<Long, Project> ofCompany(long companyId, boolean includeClosed) throws UmbrellaException {
|
public Map<Long, Project> ofCompany(long companyId, boolean includeClosed) throws UmbrellaException {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user